forked from KolibriOS/kolibrios
changes in 'TreeList':
- fix 'tl_node_lev_inc' - fix 'tl_node_lev_dec' git-svn-id: svn://kolibrios.org@1402 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
e1a0b0c660
commit
505644f066
@ -1,6 +1,6 @@
|
|||||||
; ìàêðîñ äëÿ ñèñòåìíîé áèáëèîòåêè box_lib.obj
|
; ìàêðîñ äëÿ ñèñòåìíîé áèáëèîòåêè box_lib.obj
|
||||||
; ýëåìåíò TreeList äëÿ Kolibri OS
|
; ýëåìåíò TreeList äëÿ Kolibri OS
|
||||||
; ôàéë ïîñëåäíèé ðàç èçìåíÿëñÿ 09.02.2010 IgorA
|
; файл последний раз изменялся 10.02.2010 IgorA
|
||||||
; íà êîä ïðèìåíåíà GPL2 ëèöåíçèÿ
|
; íà êîä ïðèìåíåíà GPL2 ëèöåíçèÿ
|
||||||
|
|
||||||
|
|
||||||
@ -681,7 +681,7 @@ tl_draw: ;
|
|||||||
;output:
|
;output:
|
||||||
; edx = pointer to next node struct
|
; edx = pointer to next node struct
|
||||||
align 4
|
align 4
|
||||||
tl_iterat_next:
|
tl_iterat_next: ;переход на следущий видимый узел (пропуская закрытые)
|
||||||
push bx
|
push bx
|
||||||
mov bl,0x7f
|
mov bl,0x7f
|
||||||
cmp byte[edx+3],1
|
cmp byte[edx+3],1
|
||||||
@ -724,7 +724,7 @@ tl_iterat_next:
|
|||||||
; edx = pointer to some node struct
|
; edx = pointer to some node struct
|
||||||
; edi = pointer to 'TreeList' struct
|
; edi = pointer to 'TreeList' struct
|
||||||
align 4
|
align 4
|
||||||
tl_iterat_next_all:
|
tl_iterat_next_all: ;переход на следущий видимый узел (и на закрытые тоже)
|
||||||
cmp tl_tim_undo,0
|
cmp tl_tim_undo,0
|
||||||
je .else
|
je .else
|
||||||
|
|
||||||
@ -753,7 +753,7 @@ tl_iterat_next_all:
|
|||||||
; edx = pointer to some node struct
|
; edx = pointer to some node struct
|
||||||
; edi = pointer to 'TreeList' struct
|
; edi = pointer to 'TreeList' struct
|
||||||
align 4
|
align 4
|
||||||
tl_iterat_perv:
|
tl_iterat_perv: ;переход на предыдущий видимый узел (пропуская закрытые)
|
||||||
push eax
|
push eax
|
||||||
cmp tl_tim_undo,0
|
cmp tl_tim_undo,0
|
||||||
je .beg1
|
je .beg1
|
||||||
@ -865,7 +865,7 @@ tl_move_par: ;
|
|||||||
; al = 1 if sumbol not visible
|
; al = 1 if sumbol not visible
|
||||||
; (node[i].td+tim_Undo<=ch_tim && node[i].td) || (node[i].tc>ch_tim-tim_Undo)
|
; (node[i].td+tim_Undo<=ch_tim && node[i].td) || (node[i].tc>ch_tim-tim_Undo)
|
||||||
align 4
|
align 4
|
||||||
tl_node_not_vis:
|
tl_node_not_vis: ;проверяет видимый ли указанный узел с учетом: добавлений, удалений, отмен действий
|
||||||
cmp dword[edx+16],0
|
cmp dword[edx+16],0
|
||||||
je @f
|
je @f
|
||||||
mov eax,dword[edx+16] ;eax=node[i].td
|
mov eax,dword[edx+16] ;eax=node[i].td
|
||||||
@ -1027,7 +1027,7 @@ tl_get_display_cur_pos: ;
|
|||||||
; edi = pointer to 'TreeList' struct
|
; edi = pointer to 'TreeList' struct
|
||||||
; esi = coord of bottom border
|
; esi = coord of bottom border
|
||||||
align 4
|
align 4
|
||||||
tl_draw_node:
|
tl_draw_node: ;рисует узел с: картинкой, подписью, иконкой открытия/закрытия и линиями к родит. узлу
|
||||||
push eax ebx ecx edx esi
|
push eax ebx ecx edx esi
|
||||||
|
|
||||||
mov ebx,1 ;1 - ìåñòî ïîä êóðñîð è ïîä çíàê +,-
|
mov ebx,1 ;1 - ìåñòî ïîä êóðñîð è ïîä çíàê +,-
|
||||||
@ -1101,11 +1101,11 @@ tl_draw_node:
|
|||||||
dec ah
|
dec ah
|
||||||
.close:
|
.close:
|
||||||
|
|
||||||
call tl_draw_node_icon_opn_clo
|
call tl_draw_node_icon_opn_clo ;рисование иконки открытого или закрытого узла
|
||||||
bt tl_style,1
|
bt tl_style,1
|
||||||
jae .end_draw
|
jae .end_draw
|
||||||
call tl_draw_node_icon_par_lin
|
call tl_draw_node_icon_par_lin ;рисование линии к родительскому элементу
|
||||||
call tl_draw_node_icon_par_lin_up
|
call tl_draw_node_icon_par_lin_up ;рисование вертикальной линии к родительскому элементу
|
||||||
.end_draw:
|
.end_draw:
|
||||||
pop esi edx ecx ebx eax
|
pop esi edx ecx ebx eax
|
||||||
ret
|
ret
|
||||||
@ -1159,7 +1159,7 @@ tl_draw_node_icon_opn_clo: ;
|
|||||||
; edx = pointer to some node struct
|
; edx = pointer to some node struct
|
||||||
;...
|
;...
|
||||||
align 4
|
align 4
|
||||||
tl_draw_node_icon_par_lin:
|
tl_draw_node_icon_par_lin: ;рисование линии к родительскому элементу
|
||||||
cmp byte[edx+3],1
|
cmp byte[edx+3],1
|
||||||
je .close
|
je .close
|
||||||
push eax ebx ecx edx esi
|
push eax ebx ecx edx esi
|
||||||
@ -2023,9 +2023,12 @@ tl_node_lev_inc: ;
|
|||||||
mov edx,eax
|
mov edx,eax
|
||||||
call tl_iterat_perv ;ïðîâåðÿåì åñòü ëè âåðõíèé óçåë
|
call tl_iterat_perv ;ïðîâåðÿåì åñòü ëè âåðõíèé óçåë
|
||||||
cmp edx,ecx
|
cmp edx,ecx
|
||||||
jle @f ;åñëè âåðõíåãî óçëà íå òî òåêóùèé óçåë íå äâèãàåì
|
jle @f ;если верхнего узла нет то текущий узел не двигаем
|
||||||
|
mov cl,byte[edx+2] ;берем уровень родительского узла
|
||||||
inc word[eax+2]
|
inc cl ;добавляем 1 и получаем максимальное значение
|
||||||
|
cmp byte[eax+2],cl
|
||||||
|
jge @f
|
||||||
|
inc byte[eax+2] ;увеличиваем значение узла
|
||||||
@@:
|
@@:
|
||||||
pop edi edx ecx eax
|
pop edi edx ecx eax
|
||||||
pop ebp
|
pop ebp
|
||||||
@ -2042,9 +2045,9 @@ tl_node_lev_dec: ;
|
|||||||
jl @f
|
jl @f
|
||||||
imul eax,sizeof.TreeList
|
imul eax,sizeof.TreeList
|
||||||
add eax,tl_data_nodes
|
add eax,tl_data_nodes
|
||||||
cmp word[eax+2],0
|
cmp byte[eax+2],0
|
||||||
je @f
|
je @f
|
||||||
dec word[eax+2]
|
dec byte[eax+2]
|
||||||
@@:
|
@@:
|
||||||
pop edi eax
|
pop edi eax
|
||||||
pop ebp
|
pop ebp
|
||||||
@ -2258,7 +2261,7 @@ tl_save_mem:
|
|||||||
jg .err_mem_size
|
jg .err_mem_size
|
||||||
|
|
||||||
;save tree params (in header)
|
;save tree params (in header)
|
||||||
mov dword[esi],0x65657274 ;0x65657274 = 'tree'
|
mov dword[esi],'tree'
|
||||||
mov word[esi+4],bx
|
mov word[esi+4],bx
|
||||||
mov dword[esi+6],eax ;element count
|
mov dword[esi+6],eax ;element count
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user