Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 5904 → Rev 5905

/programs/system/open/open.asm
365,45 → 365,86
mcall 2
cmpe ah, 27, exit
 
; cmpe ah, 179, .go_right
; cmpe ah, 176, .go_left
; cmpe ah, 178, .go_up
; cmpe ah, 177, .go_down
; jmp update
;
; .go_right:
; jmp update
;
; .go_left:
; jmp update
;
; .go_up:
; jmp update
;
; .go_down:
; stdcall draw_item, [last_x], [last_y], 0
;
; cmpne [last_x], -1, @f
; mov [last_x], 0
; @@:
;
; cmpne [last_y], LIST_SIZE / 2 - 1, @f
; mov eax, [sb_apps.position]
; add eax, LIST_SIZE / 2
; shl eax, 1
; cmpge eax, [list.size], .pre
; inc [sb_apps.position]
; stdcall draw_list
; invoke scrollbar.draw, sb_apps
; jmp update
; .pre:
; dec [last_y]
; @@:
;
; inc [last_y]
; stdcall draw_item, [last_x], [last_y], 1
cmpe ah, 13, list_item_activate
cmpe ah, 179, .go_right
cmpe ah, 176, .go_left
cmpe ah, 178, .go_up
cmpe ah, 177, .go_down
jmp update
 
.go_right:
mov esi, 1
jmp .go_anyway
 
.go_left:
mov esi, -1
jmp .go_anyway
 
.go_up:
mov esi, -2
jmp .go_anyway
 
.go_down:
mov esi, 2
 
.go_anyway:
;; HIDE OLD SELECTION
stdcall draw_item, [last_x], [last_y], 0
 
;; [X, Y] -> INDEX
mov eax, [last_y]
shl eax, 1
add eax, [last_x]
mov ebx, [sb_apps.position]
shl ebx, 1
add eax, ebx
 
;; CHANGE INDEX
add eax, esi
 
cmpl eax, [list.size], @f
mov eax, [list.size]
dec eax
@@:
 
cmpge eax, 0, @f
mov eax, 0
@@:
 
;; INDEX -> [X, Y]
sub eax, ebx
mov ebx, eax
and ebx, 1b
mov [last_x], ebx
shr eax, 1
mov [last_y], eax
 
cmpl [last_y], 0xFFFF, @f
mov [last_y], 0
dec [sb_apps.position]
jmp .full_redraw
@@:
 
cmpl [last_y], LIST_SIZE / 2, @f
mov [last_y], LIST_SIZE / 2 - 1
inc [sb_apps.position]
jmp .full_redraw
@@:
 
;; DRAW NEW SELECTION
.partly_redraw:
stdcall draw_item, [last_x], [last_y], 1
jmp update
 
.full_redraw:
cmpge [sb_apps.position], 0, @f
mov [sb_apps.position], 0
@@:
 
stdcall draw_list
invoke scrollbar.draw, sb_apps
jmp update
 
;----------------------
 
event_button:
410,23 → 451,39
mcall 17
cmpe ah, 1, exit
cmpe ah, 2, .opendialog
jmp list_item_activate
 
.fromlist:
movzx ebx, ah
sub ebx, 10
mov ecx, [sb_apps.position]
shl ecx, 1
add ebx, ecx
shl ebx, 5
add ebx, list
cmpe [ebx], byte 0, update
mov [param_a], ebx
invoke libini.get_str, assoc_ini, ebx, assoc_ini.exec, buffer, 256, undefined
cmpe [buffer], byte 0, ini_error
.opendialog:
invoke opendialog.start, opendialog
cmpne [opendialog.status], 1, update
mcall 70, is_openas
 
mov edi, 0
jmp save_assoc
 
;----------------------
 
list_item_activate:
mov eax, [last_y]
shl eax, 1
add eax, [last_x]
mov ebx, [sb_apps.position]
shl ebx, 1
add eax, ebx
shl eax, 5
add eax, list
cmpe byte [eax], 0, update
mov [param_a], eax
invoke libini.get_str, assoc_ini, eax, assoc_ini.exec, buffer, 256, undefined
cmpe byte [buffer], 0, ini_error
mcall 70, is_openas
 
mov edi, 1
jmp save_assoc
 
.save_assoc:
;----------------------
 
save_assoc:
mov eax, [cb_always.flags]
and eax, ch_flag_en
cmpe eax, 0, exit
439,13 → 496,6
invoke libini.set_str, assoc_ini, assoc_ini.sec, [param_e], buffer, 33
jmp exit
 
.opendialog:
invoke opendialog.start, opendialog
cmpne [opendialog.status], 1, update
mcall 70, is_openas
mov edi, 0
jmp .save_assoc
 
;----------------------
 
event_mouse: