diff --git a/kernel/trunk/docs/sysfuncr.txt b/kernel/trunk/docs/sysfuncr.txt index f5b20dae7a..89f32591fa 100644 --- a/kernel/trunk/docs/sysfuncr.txt +++ b/kernel/trunk/docs/sysfuncr.txt @@ -621,10 +621,11 @@ * eax = 17 - номер функции Возвращаемое значение: * если буфер пуст, возвращается eax=1 - * если буфер непуст, то возвращается al=0, старшие 24 бита eax + * если буфер не пуст, тогда возвращается: старшие 24 бита eax содержат идентификатор кнопки (в частности, в ah оказывается младший байт идентификатора; если все кнопки имеют идентификатор, - меньший 256, то для различения достаточно ah) + меньший 256, то для различения достаточно ah), + а в al возвращается 0 - если использовалась левая кнопка мыши, или бит той кнопки мыши, которая использовалась. Замечания: * "Буфер" хранит только одну кнопку, при нажатии новой кнопки информация о старой теряется. diff --git a/kernel/trunk/docs/sysfuncs.txt b/kernel/trunk/docs/sysfuncs.txt index e1fa906dde..92a1ac9d62 100644 --- a/kernel/trunk/docs/sysfuncs.txt +++ b/kernel/trunk/docs/sysfuncs.txt @@ -613,10 +613,11 @@ Parameters: * eax = 17 - function number Returned value: * if the buffer is empty, function returns eax=1 - * if the buffer is not empty, function returns al=0, + * if the buffer is not empty, function returns: high 24 bits of eax contain button identifier (in particular, ah contains low byte of the identifier; if all buttons have - the identifier less than 256, ah is enough to distinguish). + the identifier less than 256, ah is enough to distinguish), + and al contain 0 - if used left mouse button or bit of the used another mouse button Remarks: * "Buffer" keeps only one button, at pressing the new button the information about old is lost. diff --git a/kernel/trunk/gui/button.inc b/kernel/trunk/gui/button.inc index 0d7e5ff661..d63774bbf3 100644 --- a/kernel/trunk/gui/button.inc +++ b/kernel/trunk/gui/button.inc @@ -563,6 +563,13 @@ checkbuttons: call negativebutton pushad +; // Alver 22.06.2008 // { + push eax + mov al, byte [BTN_DOWN] + mov byte [btn_down_determ], al + pop eax +; } \\ Alver \\ + cbwaitmouseup: call checkidle @@ -586,6 +593,7 @@ iglobal mx dw 0x0 ; keeps the x mouse's position when it was clicked my dw 0x0 ; keeps the y mouse's position when it was clicked bPressedMouseXY_B db 0x0 + btn_down_determ db 0x0 ; << // Alver 22.06.2008// << endg pusha diff --git a/kernel/trunk/gui/font.inc b/kernel/trunk/gui/font.inc index b3495f14dd..80a650691e 100644 --- a/kernel/trunk/gui/font.inc +++ b/kernel/trunk/gui/font.inc @@ -7,6 +7,14 @@ $Revision$ +; // Alver 22.06.2008 // { +align 4 +dtext_asciiz_esi: ; for skins title out + push eax + xor eax, eax + inc eax + jmp dtext.1 +; } \\ Alver \\ align 4 dtext: ; Text String Output (rw by Johnny_B[john@kolibrios.org]) @@ -19,6 +27,11 @@ dtext: ; Text String Output (rw by Johnny_B[john@kolibrios.org]) ; edx start of text ; edi 1 force +; // Alver 22.06.2008 // { + push eax + xor eax, eax +.1: +; } \\ Alver \\ pushad call [disable_mouse] @@ -37,6 +50,12 @@ dtext: ; Text String Output (rw by Johnny_B[john@kolibrios.org]) .test_asciiz: cmp byte [edx], 0 jz .end +; // Alver 22.06.2008 // { + cmp byte [esp+28], 1 + jne @f + dec esi + js .end +; } \\ Alver \\ @@: inc edx pushad @@ -109,4 +128,5 @@ dtext: ; Text String Output (rw by Johnny_B[john@kolibrios.org]) jmp .loop .end: popad + pop eax ; << // Alver 22.06.2008 // << ret diff --git a/kernel/trunk/kernel.asm b/kernel/trunk/kernel.asm index 0743410cdc..71ab8331b7 100644 --- a/kernel/trunk/kernel.asm +++ b/kernel/trunk/kernel.asm @@ -2515,6 +2515,10 @@ sys_getbutton: jz .exit mov eax, [BTN_BUFF] shl eax, 8 +; // Alver 22.06.2008 // { + mov al, byte [btn_down_determ] + and al,0xFE ; delete left button bit +; } \\ Alver \\ mov [BTN_COUNT], byte 0 mov [esp + 32], eax .exit: @@ -2925,7 +2929,10 @@ draw_window_caption: mov ecx,[common_colours+16];0x00FFFFFF or ecx, 0x80000000 xor edi,edi - call dtext +; // Alver 22.06.2008 // { +; call dtext + call dtext_asciiz_esi +; } \\ Alver \\ @@: ;--------------------------------------------------------------