1,66 → 1,44 |
;------------------------------------------------------------------------------ |
align 4 |
context_menu_start: |
|
mov eax, 40 |
mov ebx, 00100111b |
int 0x40 |
|
;call draw_ctx_menu |
|
mov ebp, 2 ; 2 ç áâ® ¨á¯®«ì§ã¥âáï. |
; // Alver 26.08.2007 // { |
; xor ecx, ecx |
; mov edx, [ctx_menu_PID] |
; find_slot: |
; inc ecx |
; mov eax, 9 |
; mov ebx, process_info_buffer |
; int 0x40 |
; cmp dword [process_info_buffer + 30], edx |
; jne find_slot |
mcall 40,00100111b |
mov ecx, [ctx_menu_PID] |
mcall 18,21 |
mov ecx, eax |
; } \\ Alver \\ |
mov eax, 18 |
mov ebx, 3 |
;mov ecx, ecx ; :) |
int 0x40 |
|
mcall 18,3 |
call draw_ctx_menu |
|
;------------------------------------------------------------------------------ |
align 4 |
ctx_menu_still: |
mov eax, 10 |
int 0x40 |
mcall 10 |
cmp eax, 2 |
jz ctx_menu_key |
|
cmp eax, ebp ; cmp eax, 2 |
jz ctx_menu_key |
cmp eax, 3 |
jz ctx_menu_button |
|
cmp eax, 6 |
jz ctx_menu_mouse |
|
call draw_ctx_menu |
|
jmp ctx_menu_still |
|
;------------------------------------------------------------------------------ |
align 4 |
ctx_menu_key: |
mov eax, ebp ; mov eax, 2 |
int 0x40 |
|
mcall 2 |
;-------------------------------------- |
align 4 |
ctx_menu_button: |
mov eax, 17 |
int 0x40 |
|
mcall 17 |
cmp ah, 1 |
; // Alver 26.08.2007 // { |
; jne ctx_menu_still |
jne @f |
; } \\ Alver \\ |
|
mov eax, 18 |
mov ebx, ebp ; mov eax, 2 |
mov ebx, 2 |
mov ecx, [n_slot] |
; // Alver 26.08.2007 // { |
jmp .lllxxx |
;-------------------------------------- |
align 4 |
@@: |
cmp ah, 2 |
jne ctx_menu_still |
68,53 → 46,51 |
mov ebx, 22 |
mov edx, [n_slot] |
xor ecx, ecx |
; \begin{diamond}[20.09.2007] |
test byte [procinfo_for_detect+70], 2 |
|
test [procinfo_for_detect+70],byte 2 |
setnz cl |
add cl, cl |
; \end{diamond}[20.09.2007] |
;-------------------------------------- |
align 4 |
.lllxxx: |
; } \\ Alver \\ |
int 0x40 |
mcall |
jmp ctx_menu_exit |
|
;-------------------------------------- |
align 4 |
ctx_menu_mouse: |
mov eax, 37 |
mov ebx, ebp ; mov ebx, 2 |
int 0x40 |
|
xchg eax, ecx ; cmp eax, 0
᫨ ¥ ®¤ ¨§ ª®¯®ª ¥ ¦ â ¢®§¢à é ¥¬áï |
mcall 37,2 |
xchg eax,ecx ;
᫨ ¥ ®¤ ¨§ ª®¯®ª ¥ ¦ â ¢®§¢à é ¥¬áï |
; ¢ £« ¢ë© 横« ¯®â®ª |
jecxz ctx_menu_still |
|
mov eax, 37 |
xor ebx, ebx ; mov ebx, 1 |
inc ebx |
int 0x40 |
mcall 37,1 |
|
cmp ax, 0 ; ã⠯஢¥à塞 ¯à®¨§®èñ«-«¨ ª«¨ª § ¯à¥¤¥« ¬¨ ®ª ª®â¥ªá⮣® |
jb ctx_menu_exit ; ¬¥î, ¥á«¨ § ¯à¥¤¥« ¬¨ â® § ªàë¢ ¥¬ ª®â¥ªá⮥ ¬¥î |
|
cmp ax, 60 ; 41 |
ja ctx_menu_exit |
|
shr eax, 16 |
cmp ax, 0 |
jb ctx_menu_exit |
|
cmp ax, 133 |
ja ctx_menu_exit |
|
jmp ctx_menu_still |
|
;-------------------------------------- |
align 4 |
ctx_menu_exit: |
or eax,-1 |
mcall |
;------------------------------------------------------------------------------ |
align 4 |
;func draw_ctx_menu |
draw_ctx_menu: |
mcall 12, 1 |
|
xor eax, eax |
dec eax ; mov eax, -1 |
int 0x40 |
|
func draw_ctx_menu |
|
mcall 12, 1 |
|
xor eax, eax ; mov eax, 0 |
movzx ebx, [x_coord] |
shl ebx, 16 |
add ebx, 133 |
122,78 → 98,58 |
sub ecx, 60 ; 41 |
shl ecx, 16 |
add ecx, 60 ; 41 |
mov edx, [system_colours + 20] ; sc.work |
mov esi, [system_colours + 4] ; sc.grab |
or esi, 0x81000000 |
mov edi, [system_colours] ; sc.frame |
int 0x40 |
mcall ,,,[system_colours + 20],[system_colours] |
|
mov eax, 8 |
mov ebx, 0 * 65536 + 133 |
mov ecx, 22 * 65536 + 17 |
mov edx, 0x40000001 |
int 0x40 |
mcall 8,<0,133>,<22,17>,0x40000001 |
|
;mov eax, 8 |
;mov ebx, 0 * 65536 + 133 |
;mov ecx, 40 * 65536 + 17 |
;mov edx, 0x40000002 |
;int 0x40 |
mov ecx, 40 * 65536 + 17 |
inc edx |
int 0x40 |
mcall ,,<40,17> |
|
shr eax, 1 ; mov eax, 4 |
mov ebx, 36 * 65536 + 7 |
mov ecx, [system_colours + 16] ; sc.grab_text |
or ecx, 0x10000000 |
mcall 4,<36,7>,,ctx_menu_title,ctx_menu_title_end - ctx_menu_title |
|
mov edx, ctx_menu_title |
|
mov esi, ctx_menu_title_end - ctx_menu_title |
int 0x40 |
|
add ebx, 1 * 65536 |
int 0x40 |
mcall |
|
mov ebx, 4 * 65536 + 28 |
mov ecx, 0x80000000 |
mov edx, ctx_menu_text |
mcall ,<4,28>,0x80000000,ctx_menu_text |
|
int 0x40 |
add bx, 18 |
mov edx, ctx_menu_text2 |
|
test byte [procinfo_for_detect+70], 2 |
jz @f |
mov edx, ctx_menu_text3 |
;-------------------------------------- |
align 4 |
@@: |
add bx, 18 |
mcall |
|
int 0x40 |
|
mcall 12, 2 |
|
ret |
|
endf |
|
;endf |
;------------------------------------------------------------------------------ |
align 4 |
x_coord rw 1 |
y_coord rw 1 |
n_slot rd 1 |
ctx_menu_PID rd 1 |
;------------------------------------------------------------------------------ |
lsz ctx_menu_text,\ |
ru, <"X ªàëâì Alt + F4",0>,\ |
en, <"X Close Alt + F4",0>,\ |
|
;------------------------------------------------------------------------------ |
lsz ctx_menu_text2,\ |
ru, <25," ¢¥àãâì ",0>,\ |
en, <25," Minimize ",0>,\ |
|
;------------------------------------------------------------------------------ |
lsz ctx_menu_text3,\ |
ru, <24," ®ááâ ®¢¨âì ",0>,\ |
en, <24," Restore ",0> |
|
ctx_menu_PID rd 1 |
|
;------------------------------------------------------------------------------ |
ctx_menu_title: |
db 'KolibriOS' |
ctx_menu_title_end: |
;------------------------------------------------------------------------------ |