forked from KolibriOS/kolibrios
8bc17ae113
1) Added color selection for the text. 2) Show "change page list" only if the applications does not fit in the panel. 3) Display file names up to 11 char previously displ. only 8 char. git-svn-id: svn://kolibrios.org@2626 a494cfbc-eb01-0410-851d-a64ba20cac60
230 lines
4.1 KiB
PHP
230 lines
4.1 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,4 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
|
|
|
|
mov ecx,[app_list+edi*4]
|
|
cmp ecx,-1
|
|
jz .done
|
|
|
|
xor eax,eax
|
|
cmp [page_list],eax
|
|
jne @f
|
|
|
|
inc eax
|
|
cmp [page_list_enable],eax
|
|
je @f
|
|
|
|
mov [page_list_enable],eax
|
|
mov [redraw_window_flag],eax
|
|
;--------------------------------------
|
|
align 4
|
|
@@:
|
|
pop ebp
|
|
ret
|
|
;--------------------------------------
|
|
align 4
|
|
.done:
|
|
xor eax,eax
|
|
cmp [page_list],eax
|
|
jne @f
|
|
|
|
cmp [page_list_enable],eax
|
|
je @f
|
|
|
|
mov [page_list_enable],eax
|
|
inc eax
|
|
mov [redraw_window_flag],eax
|
|
;--------------------------------------
|
|
align 4
|
|
@@:
|
|
pop ebp
|
|
ret
|
|
;------------------------------------------------------------------------------
|