box_lib: ability to disable editbox. (Fixed color because of fixed editbox struct!)

git-svn-id: svn://kolibrios.org@5679 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
hidnplayr
2015-08-05 09:34:02 +00:00
parent b004b5af85
commit b022e7e98b
2 changed files with 167 additions and 160 deletions

View File

@@ -33,26 +33,27 @@ ed_always_focus= 100000000000000b
ed_focus= 10b ;䮪<><E4AEAA> <20><EFBFBD><E0A8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ed_focus= 10b ;䮪<><E4AEAA> <20><EFBFBD><E0A8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ed_pass= 1b ;<3B><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><E0AEAB> ed_pass= 1b ;<3B><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><E0AEAB>
ed_shift_on= 1000b ;<3B><20><> <20><><EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD> -<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> shift,<2C><20><><EFBFBD> <20><><EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><20><><EFBFBD> - <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 㤥ন<E3A4A5><E0A6A8><EFBFBD> shift ed_shift_on= 1000b ;<3B><20><> <20><><EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD> -<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> shift,<2C><20><><EFBFBD> <20><><EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><20><><EFBFBD> - <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 㤥ন<E3A4A5><E0A6A8><EFBFBD> shift
ed_shift_on_off=1111111111110111b ed_shift_on_off= not (ed_shift_on)
ed_shift= 100b ;<3B><><EFBFBD><EFBFBD><EFBFBD><E7A0A5><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><20><> shift <20>.<2E>. <20><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ed_shift= 100b ;<3B><><EFBFBD><EFBFBD><EFBFBD><E7A0A5><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><20><> shift <20>.<2E>. <20><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ed_shift_off= 1111111111111011b ed_shift_off= not (ed_shift)
ed_shift_bac= 10000b ;<3B><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><20><EFBFBD><EBA4A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> shift <20>.<2E>. <20><><EFBFBD> <20><><EFBFBD><E2A0AD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD><EBA4A5><EFBFBD><EFBFBD><EFBFBD> ed_shift_bac= 10000b ;<3B><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><20><EFBFBD><EBA4A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> shift <20>.<2E>. <20><><EFBFBD> <20><><EFBFBD><E2A0AD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD><EBA4A5><EFBFBD><EFBFBD><EFBFBD>
ed_shift_bac_cl=1111111111101111b ;<3B><><EFBFBD><EFBFBD><20><><EFBFBD><><E3A4A0><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><EBA4A5><EFBFBD><EFBFBD><EFBFBD> ed_shift_bac_cl= not (ed_shift_bac)
ed_shift_cl= 1111111111100011b ed_shift_cl= not (ed_shift or ed_shift_bac or ed_shift_on)
ed_shift_mcl= 1111111111111011b ed_shift_mcl= not (ed_shift)
ed_left_fl= 100000b ed_left_fl= 100000b
ed_right_fl= 1111111111011111b ed_right_fl= not (ed_left_fl)
ed_offset_fl= 1000000b ed_offset_fl= 1000000b
ed_offset_cl= 1111111110111111b ed_offset_cl= not (ed_offset_fl)
ed_insert= 10000000b ed_insert= 10000000b
ed_insert_cl= 1111111101111111b ed_insert_cl= not (ed_insert)
ed_mouse_on = 100000000b ed_mouse_on = 100000000b
ed_mous_adn_b= 100011000b ed_mous_adn_b= 100011000b
ed_mouse_on_off=1111111011111111b ed_mouse_on_off= not (ed_mouse_on)
ed_ctrl_on = 1000000000b ed_ctrl_on = 1000000000b
ed_ctrl_off = 1111110111111111b ed_ctrl_off = not (ed_ctrl_on)
ed_alt_on = 10000000000b ed_alt_on = 10000000000b
ed_alt_off = 1111101111111111b ed_alt_off = not (ed_alt_on)
ed_disabled= 100000000000b
ed_height=14 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ed_height=14 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
struc edit_box width,left,top,color,shift_color,focus_border_color,\ struc edit_box width,left,top,color,shift_color,focus_border_color,\

View File

@@ -8,7 +8,7 @@ macro use_editbox_draw
edit_box: edit_box:
.draw: .draw:
pushad pushad
.draw_1: .draw_1:
;--- <20><><EFBFBD>㥬 ࠬ<><E0A0AC> --- ;--- <20><><EFBFBD>㥬 ࠬ<><E0A0AC> ---
mov edi,dword [esp+36] mov edi,dword [esp+36]
call .draw_border ; <20><EFBFBD><E3ADAA><EFBFBD> <20><EFBFBD><E2A0A1> call .draw_border ; <20><EFBFBD><E3ADAA><EFBFBD> <20><EFBFBD><E2A0A1>
@@ -23,7 +23,7 @@ edit_box:
;--- <20><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> --- ;--- <20><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ---
;--- <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><E1AEA2><EFBFBD> ---- ;--- <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><E1AEA2><EFBFBD> ----
test word ed_flags,ed_focus test word ed_flags,ed_focus
jz @f jz @f
call .draw_cursor call .draw_cursor
@@: @@:
call .draw_text call .draw_text
@@ -46,27 +46,27 @@ edit_box_key:
pushad pushad
mov edi,dword [esp+36] mov edi,dword [esp+36]
test word ed_flags,ed_focus ; <20><20><> <20><><E4AEAA><EFBFBD>, <20><><EFBFBD><E5AEA4> test word ed_flags,ed_focus ; <20><20><> <20><><E4AEAA><EFBFBD>, <20><><EFBFBD><E5AEA4>
je edit_box.editbox_exit jz edit_box.editbox_exit
test word ed_flags,ed_mouse_on test word ed_flags,ed_mouse_on or ed_disabled
jne edit_box.editbox_exit jnz edit_box.editbox_exit
;-------------------------------------- ;--------------------------------------
; this code for Win-keys, works with ; this code for Win-keys, works with
; kernel SVN r.3356 or later ; kernel SVN r.3356 or later
push eax push eax
push ebx push ebx
mcall 66,3 mcall 66,3
test ax,0x200 ; LWin test ax,0x200 ; LWin
jnz .win_key_pressed jnz .win_key_pressed
test ax,0x400 ; RWin test ax,0x400 ; RWin
jz @f jz @f
.win_key_pressed: .win_key_pressed:
pop ebx pop ebx
pop eax pop eax
jmp edit_box.editbox_exit jmp edit_box.editbox_exit
@@: @@:
pop ebx pop ebx
pop eax pop eax
;-------------------------------------- ;--------------------------------------
;<3B><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD> shift ? ;<3B><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD> shift ?
call edit_box_key.check_shift_ctrl_alt call edit_box_key.check_shift_ctrl_alt
@@ -89,14 +89,14 @@ pushad
jz edit_box_key.insert jz edit_box_key.insert
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>樨 Ctrl + <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>樨 Ctrl + <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
test word ed_flags,ed_ctrl_on test word ed_flags,ed_ctrl_on
jz @f jz @f
; <20><EFBFBD>ઠ ᪠<><E1AAA0><EFBFBD><EFBFBD><EFBFBD> ; <20><EFBFBD>ઠ ᪠<><E1AAA0><EFBFBD><EFBFBD><EFBFBD>
ror eax,8 ror eax,8
cmp ah,46 ; Ctrl + C cmp ah,46 ; Ctrl + C
je edit_box_key.ctrl_c je edit_box_key.ctrl_c
cmp ah,47 ; Ctrl + V cmp ah,47 ; Ctrl + V
je edit_box_key.ctrl_v je edit_box_key.ctrl_v
rol eax,8 rol eax,8
@@: @@:
;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;<3B><><EFBFBD><EFBFBD><EFBFBD><20><> <20><><EFBFBD><E0A0A1><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20>.<2E>. <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3A6A5><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><EFBFBD><E5AEA4> <20><><20><> <20><><EFBFBD><E0A0A1><EFBFBD> ;<3B><><EFBFBD><EFBFBD><EFBFBD><20><> <20><><EFBFBD><E0A0A1><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20>.<2E>. <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3A6A5><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><EFBFBD><E5AEA4> <20><><20><> <20><><EFBFBD><E0A0A1><EFBFBD>
@@ -130,6 +130,8 @@ macro use_editbox_mouse
edit_box_mouse: edit_box_mouse:
pushad pushad
mov edi,dword [esp+36] mov edi,dword [esp+36]
test word ed_flags,ed_disabled
jnz edit_box.editbox_exit
;debug ;debug
;---------------------------------------------------------- ;----------------------------------------------------------
;--- <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ----------------------- ;--- <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> -----------------------
@@ -141,9 +143,9 @@ pushad
test eax,1 test eax,1
jnz edit_box_mouse.mouse_left_button jnz edit_box_mouse.mouse_left_button
and word ed_flags,ed_mouse_on_off and word ed_flags,ed_mouse_on_off
mov ebx,dword ed_mouse_variable mov ebx,dword ed_mouse_variable
push 0 push 0
pop dword [ebx] pop dword [ebx]
; mov dword [ebx],ebx ; mov dword [ebx],ebx
jmp edit_box.editbox_exit jmp edit_box.editbox_exit
.mouse_left_button: .mouse_left_button:
@@ -151,8 +153,8 @@ pushad
;--- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0AEA2> <20><><><E4AEAA><EFBFBD><EFBFBD><E0AEA2> <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ;--- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0AEA2> <20><><><E4AEAA><EFBFBD><EFBFBD><E0AEA2> <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
;---------------------------------------------------------- ;----------------------------------------------------------
mov eax,dword ed_mouse_variable mov eax,dword ed_mouse_variable
push dword [eax] push dword [eax]
pop eax pop eax
test eax,eax test eax,eax
jz @f jz @f
cmp eax,edi cmp eax,edi
@@ -224,10 +226,10 @@ edit_box.draw_text:
mov ecx,ed_text_color mov ecx,ed_text_color
add ebx,4 add ebx,4
add edx,ed_text add edx,ed_text
test word ed_flags,ed_pass test word ed_flags,ed_pass
jz @f jz @f
call edit_box.draw_password call edit_box.draw_password
jmp .end_f jmp .end_f
@@: @@:
mcall mcall
.end_f: .end_f:
@@ -237,20 +239,20 @@ txt_pass db '*',0
proc edit_box.draw_password proc edit_box.draw_password
locals locals
s_len dw ? ;<3B><><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><EBA2AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E2A5AA><EFBFBD> s_len dw ? ;<3B><><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><EBA2AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E2A5AA><EFBFBD>
endl endl
cmp esi,1 cmp esi,1
jl .end_f ;<3B><20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> jl .end_f ;<3B><20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mov [s_len],si mov [s_len],si
xor esi,esi xor esi,esi
inc esi inc esi
lea edx,[txt_pass] lea edx,[txt_pass]
@@: @@:
mcall mcall
add ebx,6 shl 16 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><><E1A8AC><EFBFBD><EFBFBD> add ebx,6 shl 16 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><><E1A8AC><EFBFBD><EFBFBD>
dec word[s_len] dec word[s_len]
cmp word[s_len],0 cmp word[s_len],0
jg @b jg @b
.end_f: .end_f:
ret ret
endp endp
@@ -265,6 +267,10 @@ edit_box.draw_bg:
mov ebx,ed_left mov ebx,ed_left
add ebx,1 add ebx,1
mov edx,ed_color mov edx,ed_color
test word ed_flags, ed_disabled
jz @f
mov edx, 0x00cacaca ; TODO: add new value disabled_color to editbox struct
@@:
shl ebx,16 shl ebx,16
add ebx,ed_width add ebx,ed_width
sub ebx,1 sub ebx,1
@@ -398,7 +404,7 @@ pushad
jmp edit_box.chk_d jmp edit_box.chk_d
edit_box.sub_8: edit_box.sub_8:
test ecx,ecx test ecx,ecx
jz edit_box.sub_min jz edit_box.sub_min
cmp ebx,8 cmp ebx,8
jbe edit_box.sub_min jbe edit_box.sub_min
@@ -424,25 +430,25 @@ edit_ex
align 4 align 4
proc edit_box_set_text, edit:dword, text:dword proc edit_box_set_text, edit:dword, text:dword
pushad pushad
mov edi,dword[edit] mov edi,dword[edit]
mov ecx,ed_max mov ecx,ed_max
inc ecx ;<3B><><EFBFBD><EFBFBD><EFBFBD><EBA2A0> <20><><EFBFBD><EFBFBD><20><><EFBFBD><E0A5A7><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> ascii 0 inc ecx ;<3B><><EFBFBD><EFBFBD><EFBFBD><EBA2A0> <20><><EFBFBD><EFBFBD><20><><EFBFBD><E0A5A7><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> ascii 0
mov edi,dword[text] mov edi,dword[text]
xor al,al xor al,al
cld cld
repne scasb ;<3B><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> edi ᨬ<><E1A8AC><EFBFBD><EFBFBD> al repne scasb ;<3B><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> edi ᨬ<><E1A8AC><EFBFBD><EFBFBD> al
mov ecx,edi ;ecx = text + <20><><EFBFBD>. <20><><EFBFBD><EFBFBD><E7A5AD> <20><>: 1) ed_max <20><><EFBFBD> 2) <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> text mov ecx,edi ;ecx = text + <20><><EFBFBD>. <20><><EFBFBD><EFBFBD><E7A5AD> <20><>: 1) ed_max <20><><EFBFBD> 2) <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> text
mov edi,dword[edit] mov edi,dword[edit]
mov esi,dword[text] mov esi,dword[text]
sub ecx,esi ;ecx = <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> text (<28><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 祬 ed_max) sub ecx,esi ;ecx = <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> text (<28><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 祬 ed_max)
dec ecx dec ecx
mov ed_size,ecx ;<3B><EFBFBD><E2A0A2> <20><><EFBFBD><EFBFBD><EFBFBD><><E0A0A7><EFBFBD> <20><><EFBFBD> mov ed_size,ecx ;<3B><EFBFBD><E2A0A2> <20><><EFBFBD><EFBFBD><EFBFBD><><E0A0A7><EFBFBD> <20><><EFBFBD>
mov ed_pos,ecx ;<3B><EFBFBD><E2A0A2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> mov ed_pos,ecx ;<3B><EFBFBD><E2A0A2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
and word ed_flags,ed_shift_cl ;᭨<><E1ADA8><EFBFBD><EFBFBD> <20><EFBFBD><EBA4A5><EFBFBD><EFBFBD><EFBFBD> <20><20><><EFBFBD> <20> and word ed_flags,ed_shift_cl ;᭨<><E1ADA8><EFBFBD><EFBFBD> <20><EFBFBD><EBA4A5><EFBFBD><EFBFBD><EFBFBD> <20><20><><EFBFBD> <20>
mov edi,ed_text mov edi,ed_text
repne movsb ;<3B><><EFBFBD><EFBFBD><EFBFBD><E0AEA2><EFBFBD><EFBFBD><><EFBFBD><E2AEA2> <20><><EFBFBD> text <20> edit_box repne movsb ;<3B><><EFBFBD><EFBFBD><EFBFBD><E0AEA2><EFBFBD><EFBFBD><><EFBFBD><E2AEA2> <20><><EFBFBD> text <20> edit_box
mov byte[edi],0 ;<3B><EFBFBD><E2A0A2> ascii 0 <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> mov byte[edi],0 ;<3B><EFBFBD><E2A0A2> ascii 0 <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
popad popad
ret ret
endp endp
@@ -462,7 +468,7 @@ edit_box_key.shift: ;;;;;;;SHIFT
jmp edit_box.draw_cursor_text jmp edit_box.draw_cursor_text
;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;
edit_box_key.f_exit: edit_box_key.f_exit:
call edit_box.check_offset call edit_box.check_offset
and word ed_flags,ed_shift_cl and word ed_flags,ed_shift_cl
call edit_box_key.enable_null call edit_box_key.enable_null
jmp edit_box.draw_cursor_text jmp edit_box.draw_cursor_text
@@ -480,7 +486,7 @@ edit_box_key.sh_cl_:
jmp edit_box_key.sh_n1 jmp edit_box_key.sh_n1
;<3B><20><><EFBFBD><EFBFBD><EFBFBD> ;<3B><20><><EFBFBD><EFBFBD><EFBFBD>
edit_box_key.sh_n: edit_box_key.sh_n:
push ebx push ebx
push eax push eax
edit_box_key.sh_n1: edit_box_key.sh_n1:
call edit_box.check_offset call edit_box.check_offset
@@ -663,7 +669,7 @@ edit_box_key.sh_home_end:
jmp edit_box_key.sh_e_end jmp edit_box_key.sh_e_end
edit_box_key.sh_exit_: edit_box_key.sh_exit_:
call edit_box.draw_bg call edit_box.draw_bg
call edit_box.check_offset call edit_box.check_offset
ret ret
;<3B><EFBFBD><E3ADAA><EFBFBD> <20><><EFBFBD><EFBFBD><E1A5AD> 0 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ed_size+1 ;<3B><EFBFBD><E3ADAA><EFBFBD> <20><><EFBFBD><EFBFBD><E1A5AD> 0 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ed_size+1
edit_box_key.enable_null: edit_box_key.enable_null:
@@ -799,12 +805,12 @@ pusha ;
or word ed_flags,ed_shift ;<3B><><EFBFBD><E2A0AD><EFBFBD><EFBFBD><> Shift or word ed_flags,ed_shift ;<3B><><EFBFBD><E2A0AD><EFBFBD><EFBFBD><> Shift
@@: @@:
and word ed_flags,ed_ctrl_off ; <20><><EFBFBD><EFBFBD>⨬ 䫠<> Ctrl and word ed_flags,ed_ctrl_off ; <20><><EFBFBD><EFBFBD>⨬ 䫠<> Ctrl
test al,1100b test al,1100b
je @f je @f
or word ed_flags,ed_ctrl_on ;<3B><><EFBFBD><E2A0AD><EFBFBD><EFBFBD><> Ctrl or word ed_flags,ed_ctrl_on ;<3B><><EFBFBD><E2A0AD><EFBFBD><EFBFBD><> Ctrl
@@: @@:
and word ed_flags,ed_alt_off ; <20><><EFBFBD><EFBFBD>⨬ 䫠<> Alt and word ed_flags,ed_alt_off ; <20><><EFBFBD><EFBFBD>⨬ 䫠<> Alt
test al,110000b test al,110000b
je @f je @f
or word ed_flags,ed_alt_on ;<3B><><EFBFBD><E2A0AD><EFBFBD><EFBFBD><> Alt or word ed_flags,ed_alt_on ;<3B><><EFBFBD><E2A0AD><EFBFBD><EFBFBD><> Alt
@@:edit_ex @@:edit_ex
@@ -938,7 +944,7 @@ popa
;-------- ;--------
loop @b loop @b
edit_box_key.In_k: edit_box_key.In_k:
cld cld
pop eax pop eax
mov al,ah mov al,ah
stosb stosb
@@ -962,7 +968,7 @@ edit_box_key.insert: test word ed_flags,ed_insert ;not word ed_insert
jmp edit_box.editbox_exit jmp edit_box.editbox_exit
edit_box_key.ins_v: edit_box_key.ins_v:
; dec dword [ebp+48];ed_size ;processing is insert ; dec dword [ebp+48];ed_size ;processing is insert
dec dword bp_size dec dword bp_size
sub esi,ecx sub esi,ecx
add esi,ebx add esi,ebx
mov edi,esi mov edi,esi
@@ -1035,7 +1041,7 @@ edit_box_key.draw_all2:
;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;--- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> left --- ;--- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> left ---
edit_box_key.left: edit_box_key.left:
mov ebx,ed_pos mov ebx,ed_pos
test ebx,ebx test ebx,ebx
jz edit_box_key.sh_st_of jz edit_box_key.sh_st_of
or word ed_flags,ed_left_fl or word ed_flags,ed_left_fl
@@ -1046,7 +1052,7 @@ edit_box_key.left:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;--- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> right --- ;--- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> right ---
edit_box_key.right: edit_box_key.right:
mov ebx,ed_pos mov ebx,ed_pos
cmp ebx,ed_size cmp ebx,ed_size
je edit_box_key.sh_st_of je edit_box_key.sh_st_of
and word ed_flags,ed_right_fl and word ed_flags,ed_right_fl
@@ -1077,106 +1083,106 @@ edit_box_key.end:
;----------------------------------------------------------------------------- ;-----------------------------------------------------------------------------
edit_box_key.ctrl_c: edit_box_key.ctrl_c:
; add memory area ; add memory area
mov ecx,ed_size mov ecx,ed_size
add ecx,3*4 add ecx,3*4
mcall 68,12 mcall 68,12
; building the clipboard slot header ; building the clipboard slot header
xor ecx,ecx xor ecx,ecx
mov [eax+4],ecx ; type 'text' mov [eax+4],ecx ; type 'text'
inc ecx inc ecx
mov [eax+8],ecx ; cp866 text encoding mov [eax+8],ecx ; cp866 text encoding
mov ecx,ed_size mov ecx,ed_size
add ecx,3*4 add ecx,3*4
mov [eax],ecx mov [eax],ecx
sub ecx,3*4 sub ecx,3*4
; copy data ; copy data
mov esi,ed_text mov esi,ed_text
push edi push edi
mov edi,eax mov edi,eax
add edi,3*4 add edi,3*4
cld cld
rep movsb rep movsb
pop edi pop edi
; put slot to the kernel clipboard ; put slot to the kernel clipboard
mov edx,eax mov edx,eax
mov ecx,[edx] mov ecx,[edx]
push eax push eax
mcall 54,2 mcall 54,2
pop ecx pop ecx
; remove unnecessary memory area ; remove unnecessary memory area
mcall 68,13 mcall 68,13
;-------------------------------------- ;--------------------------------------
.exit: .exit:
jmp edit_box.editbox_exit jmp edit_box.editbox_exit
;----------------------------------------------------------------------------- ;-----------------------------------------------------------------------------
edit_box_key.ctrl_v: edit_box_key.ctrl_v:
mcall 54,0 mcall 54,0
; no slots of clipboard ? ; no slots of clipboard ?
test eax,eax test eax,eax
jz .exit jz .exit
; main list area not found ? ; main list area not found ?
inc eax inc eax
test eax,eax test eax,eax
jz .exit jz .exit
sub eax,2 sub eax,2
mov ecx,eax mov ecx,eax
mcall 54,1 mcall 54,1
; main list area not found ? ; main list area not found ?
inc eax inc eax
test eax,eax test eax,eax
jz .exit jz .exit
; error ? ; error ?
sub eax,2 sub eax,2
test eax,eax test eax,eax
jz .exit jz .exit
inc eax inc eax
; check contents of container ; check contents of container
mov ebx,[eax+4] mov ebx,[eax+4]
; check for text ; check for text
test ebx,ebx test ebx,ebx
jnz .no_valid_text jnz .no_valid_text
mov ebx,[eax+8] mov ebx,[eax+8]
; check for cp866 ; check for cp866
cmp bl,1 cmp bl,1
jnz .no_valid_text jnz .no_valid_text
mov ecx,[eax] mov ecx,[eax]
sub ecx,3*4 sub ecx,3*4
cmp ecx,ed_max cmp ecx,ed_max
jb @f jb @f
mov ecx,ed_max mov ecx,ed_max
@@: @@:
mov esi,eax mov esi,eax
add esi,3*4 add esi,3*4
mov ed_size,ecx mov ed_size,ecx
mov ed_pos,ecx mov ed_pos,ecx
push eax edi push eax edi
mov edi,ed_text mov edi,ed_text
cld cld
@@: @@:
lodsb lodsb
cmp al,0x0d ; EOS (end of string) cmp al,0x0d ; EOS (end of string)
je .replace je .replace
cmp al,0x0a ; EOS (end of string) cmp al,0x0a ; EOS (end of string)
jne .continue jne .continue
.replace: .replace:
mov al,0x20 ; space mov al,0x20 ; space
.continue: .continue:
stosb stosb
dec ecx dec ecx
jnz @b jnz @b
; rep movsb ; rep movsb
pop edi eax pop edi eax
;-------------------------------------- ;--------------------------------------
.no_valid_text: .no_valid_text:
; remove unnecessary memory area ; remove unnecessary memory area
mov ecx,eax mov ecx,eax
mcall 68,13 mcall 68,13
;-------------------------------------- ;--------------------------------------
.exit: .exit:
jmp edit_box.draw_1 jmp edit_box.draw_1
@@ -1348,9 +1354,9 @@ edit_box_mouse._mshift:
; mov dword [mouse_flag],edi ;<3B><><EFBFBD><E2A0AD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E4A8AA><EFBFBD><EFBFBD> ; mov dword [mouse_flag],edi ;<3B><><EFBFBD><E2A0AD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E4A8AA><EFBFBD><EFBFBD>
mov ebx,dword ed_mouse_variable mov ebx,dword ed_mouse_variable
push edi push edi
pop dword [ebx] pop dword [ebx]
@@ -1366,7 +1372,7 @@ edit_box_mouse._mshift:
call edit_box_key.sh_cl_ call edit_box_key.sh_cl_
or word ed_flags,ed_mous_adn_b ;<3B><><EFBFBD><E2A0AD><EFBFBD><EFBFBD> <20><><EFBFBD>, <20><><EFBFBD> <20><> <20><EFBFBD><EBA4A5><EFBFBD><EFBFBD> +shift_on + or word ed_flags,ed_mous_adn_b ;<3B><><EFBFBD><E2A0AD><EFBFBD><EFBFBD> <20><><EFBFBD>, <20><><EFBFBD> <20><> <20><EFBFBD><EBA4A5><EFBFBD><EFBFBD> +shift_on +
edit_box_mouse.m_sh: edit_box_mouse.m_sh:
call edit_box.draw_text call edit_box.draw_text
call edit_box.draw_cursor call edit_box.draw_cursor
;---------------------------------------------------------- ;----------------------------------------------------------
;--- <20><><EFBFBD><EFBFBD><E6A5A4><EFBFBD> <20><><EFBFBD><E2A0AD><EFBFBD><EFBFBD><><E4AEAA><EFBFBD> --------------------------- ;--- <20><><EFBFBD><EFBFBD><E6A5A4><EFBFBD> <20><><EFBFBD><E2A0AD><EFBFBD><EFBFBD><><E4AEAA><EFBFBD> ---------------------------