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:
parent
b004b5af85
commit
b022e7e98b
@ -33,26 +33,27 @@ ed_always_focus= 100000000000000b
|
|||||||
ed_focus= 10b ;䮪ãá ¯à¨«®¦¥¨ï
|
ed_focus= 10b ;䮪ãá ¯à¨«®¦¥¨ï
|
||||||
ed_pass= 1b ;¯®«¥ á ¯ ஫¥¬
|
ed_pass= 1b ;¯®«¥ á ¯ ஫¥¬
|
||||||
ed_shift_on= 1000b ;¥á«¨ ¥ ãáâ ®¢«¥ -§ ç¨â ¢¯¥à¢ë¥ ¦ â shift,¥á«¨ ¡ë« ãáâ ®¢«¥, § ç¨â ¬ë 㦥 çâ® - â® ¤¥« «¨ 㤥ন¢ ï shift
|
ed_shift_on= 1000b ;¥á«¨ ¥ ãáâ ®¢«¥ -§ ç¨â ¢¯¥à¢ë¥ ¦ â shift,¥á«¨ ¡ë« ãáâ ®¢«¥, § ç¨â ¬ë 㦥 çâ® - â® ¤¥« «¨ 㤥ন¢ ï shift
|
||||||
ed_shift_on_off=1111111111110111b
|
ed_shift_on_off= not (ed_shift_on)
|
||||||
ed_shift= 100b ;¢ª«îç ¥âáï ¯à¨ ¦ ⨨ shift â.¥. ¥á«¨ ¦¨¬ î
|
ed_shift= 100b ;¢ª«îç ¥âáï ¯à¨ ¦ ⨨ shift â.¥. ¥á«¨ ¦¨¬ î
|
||||||
ed_shift_off= 1111111111111011b
|
ed_shift_off= not (ed_shift)
|
||||||
ed_shift_bac= 10000b ;¡¨â ¤«ï ®ç¨á⪨ ¢ë¤¥«¥®£® shift â.¥. ¯à¨ ãáâ ®¢ª¥ £®¢®à¨â çâ® ¥áâì ¢ë¤¥«¥¨¥
|
ed_shift_bac= 10000b ;¡¨â ¤«ï ®ç¨á⪨ ¢ë¤¥«¥®£® shift â.¥. ¯à¨ ãáâ ®¢ª¥ £®¢®à¨â çâ® ¥áâì ¢ë¤¥«¥¨¥
|
||||||
ed_shift_bac_cl=1111111111101111b ;®ç¨á⪠¯à¨ 㤠«¥¨¨ ¢ë¤¥«¥¨ï
|
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 ; ¢ëá®â
|
ed_height=14 ; ¢ëá®â
|
||||||
|
|
||||||
struc edit_box width,left,top,color,shift_color,focus_border_color,\
|
struc edit_box width,left,top,color,shift_color,focus_border_color,\
|
||||||
|
@ -23,7 +23,7 @@ edit_box:
|
|||||||
;--- à¨á㥬 ªãàá®à ---
|
;--- à¨á㥬 ªãàá®à ---
|
||||||
;--- ¬®¦¥â ¥£® ¥ ¤® à¨á®¢ âì ----
|
;--- ¬®¦¥â ¥£® ¥ ¤® à¨á®¢ âì ----
|
||||||
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 ; ¥á«¨ ¥ ¢ 䮪ãá¥, ¢ë室¨¬
|
test word ed_flags,ed_focus ; ¥á«¨ ¥ ¢ 䮪ãá¥, ¢ë室¨¬
|
||||||
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>஢¥àª ¦ â shift ?
|
;<3B>஢¥àª ¦ â 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
|
||||||
; ª®¬¡¨ 樨 Ctrl + ª« ¢¨è
|
; ª®¬¡¨ 樨 Ctrl + ª« ¢¨è
|
||||||
test word ed_flags,ed_ctrl_on
|
test word ed_flags,ed_ctrl_on
|
||||||
jz @f
|
jz @f
|
||||||
; ¯à®¢¥àª ᪠ª®¤
|
; ¯à®¢¥àª ᪠ª®¤
|
||||||
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
|
||||||
@@:
|
@@:
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;‡ £«ãèª ®¡à ¡®âªã ª« ¢¨è ¢¢¥àå ¨ ¢¨§ â.¥. ¯à¨ ®¡ à㦥¨¨ íâ¨å ª®¤®¢ ¯à®¨á室¨â ¢ë室 ¨§ ®¡à ¡®â稪
|
;‡ £«ãèª ®¡à ¡®âªã ª« ¢¨è ¢¢¥àå ¨ ¢¨§ â.¥. ¯à¨ ®¡ à㦥¨¨ íâ¨å ª®¤®¢ ¯à®¨á室¨â ¢ë室 ¨§ ®¡à ¡®â稪
|
||||||
@ -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
|
||||||
;----------------------------------------------------------
|
;----------------------------------------------------------
|
||||||
;--- ¯®«ãç ¥¬ á®áâ®ï¨¥ ª®¯®ª ¬ëè¨ -----------------------
|
;--- ¯®«ãç ¥¬ á®áâ®ï¨¥ ª®¯®ª ¬ëè¨ -----------------------
|
||||||
@ -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
|
|||||||
;--- ¡«®ª¨à®¢ª ®â 䮪ãá¨à®¢ª¨ ¢ ¤àã£¨å ¡®ªá å ¯à¨ ¯®¯ ¤ ¨¨ ¨å ªãàá®à
|
;--- ¡«®ª¨à®¢ª ®â 䮪ãá¨à®¢ª¨ ¢ ¤àã£¨å ¡®ªá å ¯à¨ ¯®¯ ¤ ¨¨ ¨å ªãàá®à
|
||||||
;----------------------------------------------------------
|
;----------------------------------------------------------
|
||||||
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 ? ;¤«¨ ¢ë¢®¤¨¬®£® ⥪áâ
|
s_len dw ? ;¤«¨ ¢ë¢®¤¨¬®£® ⥪áâ
|
||||||
endl
|
endl
|
||||||
cmp esi,1
|
cmp esi,1
|
||||||
jl .end_f ;¥á«¨ áâப ¯ãáâ ï
|
jl .end_f ;¥á«¨ áâப ¯ãáâ ï
|
||||||
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 ;¤®¡ ¢«ï¥¬ áâ ¤ àâãî è¨à¨ã ᨬ¢®«
|
add ebx,6 shl 16 ;¤®¡ ¢«ï¥¬ áâ ¤ àâãî è¨à¨ã ᨬ¢®«
|
||||||
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 ;ãç¨âë¢ ¥¬ ¡ã¤ã饥 ®¡à¥§ ¨¥ áâப¨ ¤«ï ascii 0
|
inc ecx ;ãç¨âë¢ ¥¬ ¡ã¤ã饥 ®¡à¥§ ¨¥ áâப¨ ¤«ï ascii 0
|
||||||
mov edi,dword[text]
|
mov edi,dword[text]
|
||||||
xor al,al
|
xor al,al
|
||||||
cld
|
cld
|
||||||
repne scasb ;¯®¨áª ¢ áâப¥ edi ᨬ¢®« al
|
repne scasb ;¯®¨áª ¢ áâப¥ edi ᨬ¢®« al
|
||||||
mov ecx,edi ;ecx = text + ¬¨. § 票¥ ¨§: 1) ed_max ¨«¨ 2) ¤«¨ë áâப¨ text
|
mov ecx,edi ;ecx = text + ¬¨. § 票¥ ¨§: 1) ed_max ¨«¨ 2) ¤«¨ë áâப¨ text
|
||||||
|
|
||||||
mov edi,dword[edit]
|
mov edi,dword[edit]
|
||||||
mov esi,dword[text]
|
mov esi,dword[text]
|
||||||
sub ecx,esi ;ecx = ¤«¨ áâப¨ text (® ¥ ¡®«ìè¥ ç¥¬ ed_max)
|
sub ecx,esi ;ecx = ¤«¨ áâப¨ text (® ¥ ¡®«ìè¥ ç¥¬ ed_max)
|
||||||
dec ecx
|
dec ecx
|
||||||
mov ed_size,ecx ;áâ ¢¨¬ ®¢ë© à §¬¥à áâப¨
|
mov ed_size,ecx ;áâ ¢¨¬ ®¢ë© à §¬¥à áâப¨
|
||||||
mov ed_pos,ecx ;áâ ¢¨¬ ªãàá®à ¢ ª®¥æ ®¢®© áâப¨
|
mov ed_pos,ecx ;áâ ¢¨¬ ªãàá®à ¢ ª®¥æ ®¢®© áâப¨
|
||||||
and word ed_flags,ed_shift_cl ;ᨬ ¥¬ ¢ë¤¥«¥¨¥ ¥á«¨ ®® ¡ë«®
|
and word ed_flags,ed_shift_cl ;ᨬ ¥¬ ¢ë¤¥«¥¨¥ ¥á«¨ ®® ¡ë«®
|
||||||
mov edi,ed_text
|
mov edi,ed_text
|
||||||
repne movsb ;ª®¯¨à®¢ ¨¥ ⥪á⮢®© áâப¨ text ¢ edit_box
|
repne movsb ;ª®¯¨à®¢ ¨¥ ⥪á⮢®© áâப¨ text ¢ edit_box
|
||||||
mov byte[edi],0 ;áâ ¢¨¬ ascii 0 ¢ ª®æ¥ áâப¨
|
mov byte[edi],0 ;áâ ¢¨¬ ascii 0 ¢ ª®æ¥ áâப¨
|
||||||
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
|
||||||
;¥á«¨ ¨ ç¥
|
;¥á«¨ ¨ ç¥
|
||||||
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
|
||||||
;äãªæ¨ï ¢¥á¥¨ï 0 ¯® ¤à¥áã ed_size+1
|
;äãªæ¨ï ¢¥á¥¨ï 0 ¯® ¤à¥áã ed_size+1
|
||||||
edit_box_key.enable_null:
|
edit_box_key.enable_null:
|
||||||
@ -799,12 +805,12 @@ pusha ;
|
|||||||
or word ed_flags,ed_shift ;ãáâ ®¢¨¬ ä« £ Shift
|
or word ed_flags,ed_shift ;ãáâ ®¢¨¬ ä« £ Shift
|
||||||
@@:
|
@@:
|
||||||
and word ed_flags,ed_ctrl_off ; ®ç¨á⨬ ä« £ Ctrl
|
and word ed_flags,ed_ctrl_off ; ®ç¨á⨬ ä« £ Ctrl
|
||||||
test al,1100b
|
test al,1100b
|
||||||
je @f
|
je @f
|
||||||
or word ed_flags,ed_ctrl_on ;ãáâ ®¢¨¬ ä« £ Ctrl
|
or word ed_flags,ed_ctrl_on ;ãáâ ®¢¨¬ ä« £ Ctrl
|
||||||
@@:
|
@@:
|
||||||
and word ed_flags,ed_alt_off ; ®ç¨á⨬ ä« £ Alt
|
and word ed_flags,ed_alt_off ; ®ç¨á⨬ ä« £ Alt
|
||||||
test al,110000b
|
test al,110000b
|
||||||
je @f
|
je @f
|
||||||
or word ed_flags,ed_alt_on ;ãáâ ®¢¨¬ ä« £ Alt
|
or word ed_flags,ed_alt_on ;ãáâ ®¢¨¬ ä« £ 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:
|
|||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;--- ¦ â ª« ¢¨è left ---
|
;--- ¦ â ª« ¢¨è 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:
|
|||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;--- ¦ â ª« ¢¨è right ---
|
;--- ¦ â ª« ¢¨è 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 ;ãáâ ®¢¨¬ ¨¤¥â¨ä¨ª â®à
|
; mov dword [mouse_flag],edi ;ãáâ ®¢¨¬ ¨¤¥â¨ä¨ª â®à
|
||||||
|
|
||||||
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 ;ãáâ ®¢¨¬ ¡¨â, çâ® ¬ë ¢ë¤¥«¨«¨ +shift_on +
|
or word ed_flags,ed_mous_adn_b ;ãáâ ®¢¨¬ ¡¨â, çâ® ¬ë ¢ë¤¥«¨«¨ +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
|
||||||
;----------------------------------------------------------
|
;----------------------------------------------------------
|
||||||
;--- ¯à®æ¥¤ãà ãáâ ®¢ª¨ 䮪ãá ---------------------------
|
;--- ¯à®æ¥¤ãà ãáâ ®¢ª¨ 䮪ãá ---------------------------
|
||||||
|
Loading…
Reference in New Issue
Block a user