diff --git a/programs/develop/libraries/box_lib/trunk/box_lib.mac b/programs/develop/libraries/box_lib/trunk/box_lib.mac index 1268768be1..5e15cb243c 100644 --- a/programs/develop/libraries/box_lib/trunk/box_lib.mac +++ b/programs/develop/libraries/box_lib/trunk/box_lib.mac @@ -220,8 +220,6 @@ macro check_boxes_set_sys_color2 start,end,color_table - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Basic macros for use OptionBox ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -272,6 +270,7 @@ macro option_boxes_set_sys_color color_table,group cmp edi,0 jne @b } + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Basic macros for use TreeList ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -336,6 +335,7 @@ tl_on_press equ dword[edi+84] ;ука tl_key_no_edit equ 1b ;элемент нельзя редактировать на клавиатуре (изменять уровни, удалять) tl_draw_par_line equ 10b ;рисовать линии к родительскому узлу tl_list_box_mode equ 100b ;стиль не отображает уровни (как в ListBox все одного уровня) +tl_cursor_pos_limited equ 8 ;перемещение курсора ограничено существующими узлами ;константы для функций tl_err_save_memory_size equ 10b ;не хватает памяти для сохранения элемента diff --git a/programs/develop/libraries/box_lib/trunk/tree_list.asm b/programs/develop/libraries/box_lib/trunk/tree_list.asm index 85f1fbe5ec..bace53bdfa 100644 --- a/programs/develop/libraries/box_lib/trunk/tree_list.asm +++ b/programs/develop/libraries/box_lib/trunk/tree_list.asm @@ -266,6 +266,12 @@ pop ebx eax mov ecx,eax call tl_get_node_count ;eax = node count + bt tl_style,3 ;tl_cursor_pos_limited + jnc @f + or eax,eax + jz @f + dec eax ;если курсор стает на существующие узлы + @@: cmp eax,ecx jl @f mov eax,ecx ;если курсор не вышел за пределы узлов, восстанавливаем старое значение eax @@ -1549,6 +1555,12 @@ align 4 proc tl_cur_next uses eax ebx edi esi, tlist:dword mov edi,[tlist] call tl_get_node_count ;eax = node count + bt tl_style,3 ;tl_cursor_pos_limited + jnc @f + or eax,eax + jz @f + dec eax ;если курсор стает на существующие узлы + @@: cmp tl_cur_pos,eax jge .no_redraw mov esi,tl_box_top @@ -1700,6 +1712,12 @@ proc tl_cur_page_down uses eax ebx ecx edi esi, tlist:dword je .no_redraw mov esi,tl_p_scroll call tl_get_node_count ;eax = node count + bt tl_style,3 ;tl_cursor_pos_limited + jnc @f + or eax,eax + jz @f + dec eax ;если курсор стает на существующие узлы + @@: mov ebx,eax call tl_get_rows_count ;eax = rows count diff --git a/programs/other/cnc_editor/cnc_editor.asm b/programs/other/cnc_editor/cnc_editor.asm index f9ad59671c..ae1dd1b140 100644 --- a/programs/other/cnc_editor/cnc_editor.asm +++ b/programs/other/cnc_editor/cnc_editor.asm @@ -14,7 +14,7 @@ include 'cnc_editor.inc' include '../../develop/info3ds/info_fun_float.inc' @use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load -caption db 'CNC editor 08.10.18',0 ;подпись окна +caption db 'CNC editor 30.10.18',0 ;подпись окна run_file_70 FileInfoBlock @@ -711,7 +711,9 @@ but_open_file: mcall SF_SET_CAPTION,1,openfile_path ;--- + and dword[tree1.style],not tl_cursor_pos_limited stdcall FileInit,[open_file_data],[open_file_size] + or dword[tree1.style], tl_cursor_pos_limited stdcall [buf2d_clear], buf_0, [buf_0.color] ;чистим буфер stdcall [buf2d_draw], buf_0 ;обновляем буфер на экране .end_open_file: diff --git a/programs/other/t_edit/t_edit.asm b/programs/other/t_edit/t_edit.asm index c0ed8f1e73..d1170ec3e7 100644 --- a/programs/other/t_edit/t_edit.asm +++ b/programs/other/t_edit/t_edit.asm @@ -177,6 +177,7 @@ mov ebp,lib0 add eax,304 loop @b stdcall [tl_cur_beg],tree1 ;ставим курсор на начало списка + or dword[tree1.style], tl_cursor_pos_limited ;ограничиваем движение курсора в пределах списка .end_dir_init: ;--- load ini file ---