forked from KolibriOS/kolibrios
197 lines
3.6 KiB
PHP
197 lines
3.6 KiB
PHP
|
;------------------------------------------------------------------------------
|
||
|
align 4
|
||
|
draw_running_applications:
|
||
|
pusha
|
||
|
|
||
|
cmp [run_appl],dword 0
|
||
|
je .exit
|
||
|
|
||
|
call calculate_applications
|
||
|
|
||
|
cmp edi,[running_applications]
|
||
|
jne .noret
|
||
|
popa
|
||
|
ret
|
||
|
;--------------------------------------
|
||
|
align 4
|
||
|
.noret:
|
||
|
call draw_window
|
||
|
mov [running_applications],edi
|
||
|
call redraw_window_tabs
|
||
|
;--------------------------------------
|
||
|
align 4
|
||
|
.exit:
|
||
|
popa
|
||
|
ret
|
||
|
;------------------------------------------------------------------------------
|
||
|
align 4
|
||
|
need_window_tab:
|
||
|
; in: ebx->process info
|
||
|
; out: ZF set <=> do not draw
|
||
|
cmp byte [ebx+10], '@'
|
||
|
jz .nodraw
|
||
|
; do not draw undefined (zero-sized) windows
|
||
|
cmp dword [ebx+42], 0
|
||
|
jnz @f
|
||
|
cmp dword [ebx+46], 0
|
||
|
jz .nodraw
|
||
|
;--------------------------------------
|
||
|
align 4
|
||
|
@@:
|
||
|
; do not draw OpenDialog windows
|
||
|
push edi
|
||
|
mov edi, dword [ebx+10]
|
||
|
or edi, 0x20202020
|
||
|
cmp edi, 'open'
|
||
|
jne @f
|
||
|
|
||
|
mov edi, dword [ebx+14]
|
||
|
or edi, 0x20202020
|
||
|
cmp dword [ebx+14], 'dial'
|
||
|
jne @f
|
||
|
|
||
|
pop edi
|
||
|
jmp .nodraw
|
||
|
;--------------------------------------
|
||
|
align 4
|
||
|
@@:
|
||
|
pop edi
|
||
|
cmp dword [ebx+10], 'ICON'
|
||
|
jnz @f
|
||
|
|
||
|
cmp [ebx+42], dword 51
|
||
|
jnz @f
|
||
|
|
||
|
cmp [ebx+46], dword 51
|
||
|
jz .nodraw
|
||
|
;--------------------------------------
|
||
|
align 4
|
||
|
@@:
|
||
|
cmp [ebx+10], dword ' '
|
||
|
;--------------------------------------
|
||
|
align 4
|
||
|
.nodraw:
|
||
|
ret
|
||
|
;------------------------------------------------------------------------------
|
||
|
align 4
|
||
|
calculate_applications:
|
||
|
mov eax,[max_applications]
|
||
|
mul [page_list]
|
||
|
test eax,eax
|
||
|
je @f
|
||
|
|
||
|
inc eax
|
||
|
;--------------------------------------
|
||
|
align 4
|
||
|
@@:
|
||
|
mov [draw_start_position],eax
|
||
|
|
||
|
mov edi,app_list
|
||
|
mov ecx,20 ; show max 20 application ???!!!
|
||
|
mov eax,-1
|
||
|
cld
|
||
|
rep stosd
|
||
|
|
||
|
mov edi,0
|
||
|
mov ecx,2
|
||
|
;--------------------------------------
|
||
|
align 4
|
||
|
cnewpr:
|
||
|
mcall 9,procinfo_window_tabs
|
||
|
|
||
|
call need_window_tab
|
||
|
jz cnorpl
|
||
|
|
||
|
sub [draw_start_position], 1
|
||
|
jg cnorpl
|
||
|
|
||
|
mov [app_list+edi*4],ecx
|
||
|
inc edi
|
||
|
;--------------------------------------
|
||
|
align 4
|
||
|
cnorpl:
|
||
|
inc ecx
|
||
|
cmp eax,ecx
|
||
|
jge cnewpr
|
||
|
|
||
|
mov [app_tab_count], edi
|
||
|
ret
|
||
|
;------------------------------------------------------------------------------
|
||
|
align 4
|
||
|
redraw_window_tabs:
|
||
|
xor edi, edi
|
||
|
mov [contrast], 0
|
||
|
|
||
|
push ebp
|
||
|
mcall 18,7
|
||
|
mov ebp,eax
|
||
|
|
||
|
call calculate_offset_X
|
||
|
;--------------------------------------
|
||
|
align 4
|
||
|
.loop:
|
||
|
mov ecx,[app_list+edi*4]
|
||
|
cmp ecx,-1
|
||
|
jz .done
|
||
|
|
||
|
mov [active_slot_number],ecx
|
||
|
mcall 9,procinfo_window_tabs
|
||
|
|
||
|
|
||
|
imul ebx, edi, TAB_SIZE
|
||
|
add ebx,[offset_X]
|
||
|
add ebx,2
|
||
|
shl ebx,16
|
||
|
add ebx,TAB_SIZE-2 ;54
|
||
|
|
||
|
call calculate_button_y_coordinate_and_size
|
||
|
|
||
|
push edi
|
||
|
mov edx,[system_colours.work_button]
|
||
|
xor edi,edi
|
||
|
|
||
|
cmp ebp,[active_slot_number] ;ecx ; ecx=active slot number
|
||
|
jnz @f
|
||
|
|
||
|
mov edx,[wcolor]
|
||
|
inc edi
|
||
|
;--------------------------------------
|
||
|
align 4
|
||
|
@@:
|
||
|
mov esi,[current_alt_tab_app]
|
||
|
cmp esi,-1
|
||
|
jz @f
|
||
|
|
||
|
cmp ecx,[alt_tab_list+esi*8]
|
||
|
jnz @f
|
||
|
|
||
|
mov edx,0xFF8000 ; current select for ALT+Tab
|
||
|
;--------------------------------------
|
||
|
align 4
|
||
|
@@:
|
||
|
mov esi,[wcolor]
|
||
|
call draw_appl_button
|
||
|
pop edi
|
||
|
;------------------------------------------------------------------------------
|
||
|
add ebx,5 shl 16
|
||
|
mov bx,cx ;[height]
|
||
|
shr bx,1
|
||
|
sub bx,4
|
||
|
shr ecx,16
|
||
|
add bx,cx
|
||
|
|
||
|
mov edx, procinfo_window_tabs+10
|
||
|
mcall 4,,[system_colours.work_button_text],,11
|
||
|
;--------------------------------------
|
||
|
align 4
|
||
|
.nodraw:
|
||
|
inc edi
|
||
|
cmp edi, [max_applications]
|
||
|
jb .loop
|
||
|
;--------------------------------------
|
||
|
align 4
|
||
|
.done:
|
||
|
pop ebp
|
||
|
ret
|
||
|
;------------------------------------------------------------------------------
|