forked from KolibriOS/kolibrios
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:
@@ -33,26 +33,27 @@ ed_always_focus= 100000000000000b
|
||||
ed_focus= 10b ;䮪<><E4AEAA> <20>ਫ<EFBFBD><E0A8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
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_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_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_cl=1111111111101111b ;<3B><><EFBFBD><EFBFBD>⪠ <20><><EFBFBD> 㤠<><E3A4A0><EFBFBD><EFBFBD><EFBFBD> <20>뤥<EFBFBD><EBA4A5><EFBFBD><EFBFBD><EFBFBD>
|
||||
ed_shift_cl= 1111111111100011b
|
||||
ed_shift_mcl= 1111111111111011b
|
||||
ed_shift_bac_cl= not (ed_shift_bac)
|
||||
ed_shift_cl= not (ed_shift or ed_shift_bac or ed_shift_on)
|
||||
ed_shift_mcl= not (ed_shift)
|
||||
ed_left_fl= 100000b
|
||||
ed_right_fl= 1111111111011111b
|
||||
ed_right_fl= not (ed_left_fl)
|
||||
ed_offset_fl= 1000000b
|
||||
ed_offset_cl= 1111111110111111b
|
||||
ed_offset_cl= not (ed_offset_fl)
|
||||
ed_insert= 10000000b
|
||||
ed_insert_cl= 1111111101111111b
|
||||
ed_insert_cl= not (ed_insert)
|
||||
ed_mouse_on = 100000000b
|
||||
ed_mous_adn_b= 100011000b
|
||||
ed_mouse_on_off=1111111011111111b
|
||||
ed_mouse_on_off= not (ed_mouse_on)
|
||||
ed_ctrl_on = 1000000000b
|
||||
ed_ctrl_off = 1111110111111111b
|
||||
ed_ctrl_off = not (ed_ctrl_on)
|
||||
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>
|
||||
|
||||
struc edit_box width,left,top,color,shift_color,focus_border_color,\
|
||||
|
@@ -8,7 +8,7 @@ macro use_editbox_draw
|
||||
edit_box:
|
||||
.draw:
|
||||
pushad
|
||||
.draw_1:
|
||||
.draw_1:
|
||||
;--- <20><><EFBFBD>㥬 ࠬ<><E0A0AC> ---
|
||||
mov edi,dword [esp+36]
|
||||
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><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><>ᮢ<EFBFBD><E1AEA2><EFBFBD> ----
|
||||
test word ed_flags,ed_focus
|
||||
jz @f
|
||||
jz @f
|
||||
call .draw_cursor
|
||||
@@:
|
||||
call .draw_text
|
||||
@@ -46,27 +46,27 @@ edit_box_key:
|
||||
pushad
|
||||
mov edi,dword [esp+36]
|
||||
test word ed_flags,ed_focus ; <20> <20><> <20> 䮪<><E4AEAA><EFBFBD>, <20><>室<EFBFBD><E5AEA4>
|
||||
je edit_box.editbox_exit
|
||||
test word ed_flags,ed_mouse_on
|
||||
jne edit_box.editbox_exit
|
||||
jz edit_box.editbox_exit
|
||||
test word ed_flags,ed_mouse_on or ed_disabled
|
||||
jnz edit_box.editbox_exit
|
||||
|
||||
;--------------------------------------
|
||||
; this code for Win-keys, works with
|
||||
; kernel SVN r.3356 or later
|
||||
push eax
|
||||
push ebx
|
||||
mcall 66,3
|
||||
test ax,0x200 ; LWin
|
||||
jnz .win_key_pressed
|
||||
test ax,0x400 ; RWin
|
||||
jz @f
|
||||
push eax
|
||||
push ebx
|
||||
mcall 66,3
|
||||
test ax,0x200 ; LWin
|
||||
jnz .win_key_pressed
|
||||
test ax,0x400 ; RWin
|
||||
jz @f
|
||||
.win_key_pressed:
|
||||
pop ebx
|
||||
pop eax
|
||||
jmp edit_box.editbox_exit
|
||||
pop ebx
|
||||
pop eax
|
||||
jmp edit_box.editbox_exit
|
||||
@@:
|
||||
pop ebx
|
||||
pop eax
|
||||
pop ebx
|
||||
pop eax
|
||||
;--------------------------------------
|
||||
;<3B><EFBFBD>ઠ <20><><EFBFBD><EFBFBD><EFBFBD> shift ?
|
||||
call edit_box_key.check_shift_ctrl_alt
|
||||
@@ -89,14 +89,14 @@ pushad
|
||||
jz edit_box_key.insert
|
||||
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>樨 Ctrl + <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
test word ed_flags,ed_ctrl_on
|
||||
jz @f
|
||||
jz @f
|
||||
; <20><EFBFBD>ઠ ᪠<><E1AAA0><EFBFBD><EFBFBD><EFBFBD>
|
||||
ror eax,8
|
||||
cmp ah,46 ; Ctrl + C
|
||||
je edit_box_key.ctrl_c
|
||||
cmp ah,47 ; 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>
|
||||
@@ -130,6 +130,8 @@ macro use_editbox_mouse
|
||||
edit_box_mouse:
|
||||
pushad
|
||||
mov edi,dword [esp+36]
|
||||
test word ed_flags,ed_disabled
|
||||
jnz edit_box.editbox_exit
|
||||
;debug
|
||||
;----------------------------------------------------------
|
||||
;--- <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
|
||||
jnz edit_box_mouse.mouse_left_button
|
||||
and word ed_flags,ed_mouse_on_off
|
||||
mov ebx,dword ed_mouse_variable
|
||||
push 0
|
||||
pop dword [ebx]
|
||||
mov ebx,dword ed_mouse_variable
|
||||
push 0
|
||||
pop dword [ebx]
|
||||
; mov dword [ebx],ebx
|
||||
jmp edit_box.editbox_exit
|
||||
.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>
|
||||
;----------------------------------------------------------
|
||||
mov eax,dword ed_mouse_variable
|
||||
push dword [eax]
|
||||
pop eax
|
||||
push dword [eax]
|
||||
pop eax
|
||||
test eax,eax
|
||||
jz @f
|
||||
cmp eax,edi
|
||||
@@ -224,10 +226,10 @@ edit_box.draw_text:
|
||||
mov ecx,ed_text_color
|
||||
add ebx,4
|
||||
add edx,ed_text
|
||||
test word ed_flags,ed_pass
|
||||
jz @f
|
||||
call edit_box.draw_password
|
||||
jmp .end_f
|
||||
test word ed_flags,ed_pass
|
||||
jz @f
|
||||
call edit_box.draw_password
|
||||
jmp .end_f
|
||||
@@:
|
||||
mcall
|
||||
.end_f:
|
||||
@@ -237,20 +239,20 @@ txt_pass db '*',0
|
||||
|
||||
proc edit_box.draw_password
|
||||
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
|
||||
cmp esi,1
|
||||
jl .end_f ;<3B> <20><>ப<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
mov [s_len],si
|
||||
xor esi,esi
|
||||
inc esi
|
||||
lea edx,[txt_pass]
|
||||
cmp esi,1
|
||||
jl .end_f ;<3B> <20><>ப<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
mov [s_len],si
|
||||
xor esi,esi
|
||||
inc esi
|
||||
lea edx,[txt_pass]
|
||||
@@:
|
||||
mcall
|
||||
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]
|
||||
cmp word[s_len],0
|
||||
jg @b
|
||||
mcall
|
||||
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]
|
||||
cmp word[s_len],0
|
||||
jg @b
|
||||
.end_f:
|
||||
ret
|
||||
endp
|
||||
@@ -265,6 +267,10 @@ edit_box.draw_bg:
|
||||
mov ebx,ed_left
|
||||
add ebx,1
|
||||
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
|
||||
add ebx,ed_width
|
||||
sub ebx,1
|
||||
@@ -398,7 +404,7 @@ pushad
|
||||
jmp edit_box.chk_d
|
||||
|
||||
edit_box.sub_8:
|
||||
test ecx,ecx
|
||||
test ecx,ecx
|
||||
jz edit_box.sub_min
|
||||
cmp ebx,8
|
||||
jbe edit_box.sub_min
|
||||
@@ -424,25 +430,25 @@ edit_ex
|
||||
align 4
|
||||
proc edit_box_set_text, edit:dword, text:dword
|
||||
pushad
|
||||
mov edi,dword[edit]
|
||||
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
|
||||
mov edi,dword[text]
|
||||
xor al,al
|
||||
cld
|
||||
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 edi,dword[edit]
|
||||
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
|
||||
mov edi,dword[text]
|
||||
xor al,al
|
||||
cld
|
||||
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 edi,dword[edit]
|
||||
mov esi,dword[text]
|
||||
sub ecx,esi ;ecx = <20><><EFBFBD><EFBFBD><EFBFBD> <20><>ப<EFBFBD> text (<28><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 祬 ed_max)
|
||||
dec ecx
|
||||
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>
|
||||
and word ed_flags,ed_shift_cl ;᭨<><E1ADA8><EFBFBD><EFBFBD> <20>뤥<EFBFBD><EBA4A5><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> <20>뫮
|
||||
mov edi,ed_text
|
||||
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 edi,dword[edit]
|
||||
mov esi,dword[text]
|
||||
sub ecx,esi ;ecx = <20><><EFBFBD><EFBFBD><EFBFBD> <20><>ப<EFBFBD> text (<28><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 祬 ed_max)
|
||||
dec ecx
|
||||
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>
|
||||
and word ed_flags,ed_shift_cl ;᭨<><E1ADA8><EFBFBD><EFBFBD> <20>뤥<EFBFBD><EBA4A5><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> <20>뫮
|
||||
mov edi,ed_text
|
||||
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>
|
||||
popad
|
||||
ret
|
||||
endp
|
||||
@@ -462,7 +468,7 @@ edit_box_key.shift: ;;;;;;;SHIFT
|
||||
jmp edit_box.draw_cursor_text
|
||||
;;;;;;;;;;;;;;;;;;;;;
|
||||
edit_box_key.f_exit:
|
||||
call edit_box.check_offset
|
||||
call edit_box.check_offset
|
||||
and word ed_flags,ed_shift_cl
|
||||
call edit_box_key.enable_null
|
||||
jmp edit_box.draw_cursor_text
|
||||
@@ -480,7 +486,7 @@ edit_box_key.sh_cl_:
|
||||
jmp edit_box_key.sh_n1
|
||||
;<3B> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
edit_box_key.sh_n:
|
||||
push ebx
|
||||
push ebx
|
||||
push eax
|
||||
edit_box_key.sh_n1:
|
||||
call edit_box.check_offset
|
||||
@@ -663,7 +669,7 @@ edit_box_key.sh_home_end:
|
||||
jmp edit_box_key.sh_e_end
|
||||
edit_box_key.sh_exit_:
|
||||
call edit_box.draw_bg
|
||||
call edit_box.check_offset
|
||||
call edit_box.check_offset
|
||||
ret
|
||||
;<3B>㭪<EFBFBD><E3ADAA><EFBFBD> <20><><EFBFBD>ᥭ<EFBFBD><E1A5AD> 0 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ed_size+1
|
||||
edit_box_key.enable_null:
|
||||
@@ -799,12 +805,12 @@ pusha ;
|
||||
or word ed_flags,ed_shift ;<3B><>⠭<EFBFBD><E2A0AD><EFBFBD><EFBFBD> 䫠<> Shift
|
||||
@@:
|
||||
and word ed_flags,ed_ctrl_off ; <20><><EFBFBD><EFBFBD>⨬ 䫠<> Ctrl
|
||||
test al,1100b
|
||||
test al,1100b
|
||||
je @f
|
||||
or word ed_flags,ed_ctrl_on ;<3B><>⠭<EFBFBD><E2A0AD><EFBFBD><EFBFBD> 䫠<> Ctrl
|
||||
@@:
|
||||
and word ed_flags,ed_alt_off ; <20><><EFBFBD><EFBFBD>⨬ 䫠<> Alt
|
||||
test al,110000b
|
||||
test al,110000b
|
||||
je @f
|
||||
or word ed_flags,ed_alt_on ;<3B><>⠭<EFBFBD><E2A0AD><EFBFBD><EFBFBD> 䫠<> Alt
|
||||
@@:edit_ex
|
||||
@@ -938,7 +944,7 @@ popa
|
||||
;--------
|
||||
loop @b
|
||||
edit_box_key.In_k:
|
||||
cld
|
||||
cld
|
||||
pop eax
|
||||
mov al,ah
|
||||
stosb
|
||||
@@ -962,7 +968,7 @@ edit_box_key.insert: test word ed_flags,ed_insert ;not word ed_insert
|
||||
jmp edit_box.editbox_exit
|
||||
edit_box_key.ins_v:
|
||||
; dec dword [ebp+48];ed_size ;processing is insert
|
||||
dec dword bp_size
|
||||
dec dword bp_size
|
||||
sub esi,ecx
|
||||
add esi,ebx
|
||||
mov edi,esi
|
||||
@@ -1035,7 +1041,7 @@ edit_box_key.draw_all2:
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;--- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> left ---
|
||||
edit_box_key.left:
|
||||
mov ebx,ed_pos
|
||||
mov ebx,ed_pos
|
||||
test ebx,ebx
|
||||
jz edit_box_key.sh_st_of
|
||||
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 ---
|
||||
edit_box_key.right:
|
||||
mov ebx,ed_pos
|
||||
mov ebx,ed_pos
|
||||
cmp ebx,ed_size
|
||||
je edit_box_key.sh_st_of
|
||||
and word ed_flags,ed_right_fl
|
||||
@@ -1077,106 +1083,106 @@ edit_box_key.end:
|
||||
;-----------------------------------------------------------------------------
|
||||
edit_box_key.ctrl_c:
|
||||
; add memory area
|
||||
mov ecx,ed_size
|
||||
add ecx,3*4
|
||||
mcall 68,12
|
||||
mov ecx,ed_size
|
||||
add ecx,3*4
|
||||
mcall 68,12
|
||||
; building the clipboard slot header
|
||||
xor ecx,ecx
|
||||
mov [eax+4],ecx ; type 'text'
|
||||
inc ecx
|
||||
mov [eax+8],ecx ; cp866 text encoding
|
||||
mov ecx,ed_size
|
||||
add ecx,3*4
|
||||
mov [eax],ecx
|
||||
sub ecx,3*4
|
||||
xor ecx,ecx
|
||||
mov [eax+4],ecx ; type 'text'
|
||||
inc ecx
|
||||
mov [eax+8],ecx ; cp866 text encoding
|
||||
mov ecx,ed_size
|
||||
add ecx,3*4
|
||||
mov [eax],ecx
|
||||
sub ecx,3*4
|
||||
; copy data
|
||||
mov esi,ed_text
|
||||
push edi
|
||||
mov edi,eax
|
||||
add edi,3*4
|
||||
cld
|
||||
rep movsb
|
||||
pop edi
|
||||
mov esi,ed_text
|
||||
push edi
|
||||
mov edi,eax
|
||||
add edi,3*4
|
||||
cld
|
||||
rep movsb
|
||||
pop edi
|
||||
; put slot to the kernel clipboard
|
||||
mov edx,eax
|
||||
mov ecx,[edx]
|
||||
push eax
|
||||
mcall 54,2
|
||||
pop ecx
|
||||
mov edx,eax
|
||||
mov ecx,[edx]
|
||||
push eax
|
||||
mcall 54,2
|
||||
pop ecx
|
||||
; remove unnecessary memory area
|
||||
mcall 68,13
|
||||
mcall 68,13
|
||||
;--------------------------------------
|
||||
.exit:
|
||||
jmp edit_box.editbox_exit
|
||||
;-----------------------------------------------------------------------------
|
||||
edit_box_key.ctrl_v:
|
||||
mcall 54,0
|
||||
mcall 54,0
|
||||
; no slots of clipboard ?
|
||||
test eax,eax
|
||||
jz .exit
|
||||
; main list area not found ?
|
||||
inc eax
|
||||
test eax,eax
|
||||
jz .exit
|
||||
test eax,eax
|
||||
jz .exit
|
||||
; main list area not found ?
|
||||
inc eax
|
||||
test eax,eax
|
||||
jz .exit
|
||||
|
||||
sub eax,2
|
||||
mov ecx,eax
|
||||
mcall 54,1
|
||||
sub eax,2
|
||||
mov ecx,eax
|
||||
mcall 54,1
|
||||
; main list area not found ?
|
||||
inc eax
|
||||
test eax,eax
|
||||
jz .exit
|
||||
inc eax
|
||||
test eax,eax
|
||||
jz .exit
|
||||
; error ?
|
||||
sub eax,2
|
||||
test eax,eax
|
||||
jz .exit
|
||||
sub eax,2
|
||||
test eax,eax
|
||||
jz .exit
|
||||
|
||||
inc eax
|
||||
inc eax
|
||||
; check contents of container
|
||||
mov ebx,[eax+4]
|
||||
mov ebx,[eax+4]
|
||||
; check for text
|
||||
test ebx,ebx
|
||||
jnz .no_valid_text
|
||||
|
||||
mov ebx,[eax+8]
|
||||
test ebx,ebx
|
||||
jnz .no_valid_text
|
||||
|
||||
mov ebx,[eax+8]
|
||||
; check for cp866
|
||||
cmp bl,1
|
||||
jnz .no_valid_text
|
||||
|
||||
mov ecx,[eax]
|
||||
sub ecx,3*4
|
||||
cmp ecx,ed_max
|
||||
jb @f
|
||||
|
||||
mov ecx,ed_max
|
||||
cmp bl,1
|
||||
jnz .no_valid_text
|
||||
|
||||
mov ecx,[eax]
|
||||
sub ecx,3*4
|
||||
cmp ecx,ed_max
|
||||
jb @f
|
||||
|
||||
mov ecx,ed_max
|
||||
@@:
|
||||
mov esi,eax
|
||||
add esi,3*4
|
||||
mov ed_size,ecx
|
||||
mov ed_pos,ecx
|
||||
push eax edi
|
||||
mov edi,ed_text
|
||||
cld
|
||||
mov esi,eax
|
||||
add esi,3*4
|
||||
mov ed_size,ecx
|
||||
mov ed_pos,ecx
|
||||
push eax edi
|
||||
mov edi,ed_text
|
||||
cld
|
||||
@@:
|
||||
lodsb
|
||||
cmp al,0x0d ; EOS (end of string)
|
||||
je .replace
|
||||
lodsb
|
||||
cmp al,0x0d ; EOS (end of string)
|
||||
je .replace
|
||||
|
||||
cmp al,0x0a ; EOS (end of string)
|
||||
jne .continue
|
||||
cmp al,0x0a ; EOS (end of string)
|
||||
jne .continue
|
||||
.replace:
|
||||
mov al,0x20 ; space
|
||||
.continue:
|
||||
stosb
|
||||
dec ecx
|
||||
jnz @b
|
||||
; rep movsb
|
||||
pop edi eax
|
||||
;--------------------------------------
|
||||
mov al,0x20 ; space
|
||||
.continue:
|
||||
stosb
|
||||
dec ecx
|
||||
jnz @b
|
||||
; rep movsb
|
||||
pop edi eax
|
||||
;--------------------------------------
|
||||
.no_valid_text:
|
||||
; remove unnecessary memory area
|
||||
mov ecx,eax
|
||||
mcall 68,13
|
||||
mov ecx,eax
|
||||
mcall 68,13
|
||||
;--------------------------------------
|
||||
.exit:
|
||||
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 ebx,dword ed_mouse_variable
|
||||
push edi
|
||||
pop dword [ebx]
|
||||
mov ebx,dword ed_mouse_variable
|
||||
push edi
|
||||
pop dword [ebx]
|
||||
|
||||
|
||||
|
||||
@@ -1366,7 +1372,7 @@ edit_box_mouse._mshift:
|
||||
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 +
|
||||
edit_box_mouse.m_sh:
|
||||
call edit_box.draw_text
|
||||
call edit_box.draw_text
|
||||
call edit_box.draw_cursor
|
||||
;----------------------------------------------------------
|
||||
;--- <20><><EFBFBD>楤<EFBFBD><E6A5A4><EFBFBD> <20><>⠭<EFBFBD><E2A0AD><EFBFBD><EFBFBD> 䮪<><E4AEAA><EFBFBD> ---------------------------
|
||||
|
Reference in New Issue
Block a user