forked from KolibriOS/kolibrios
A library box_lib.obj is reentrant dll.
git-svn-id: svn://kolibrios.org@1214 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
@@ -1,6 +1,15 @@
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;Basic macros for use editbox ;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
macro init_editbox
|
||||
{
|
||||
pushad
|
||||
mcall
|
||||
|
||||
popad
|
||||
}
|
||||
|
||||
|
||||
macro use_editbox_draw
|
||||
{
|
||||
edit_box:
|
||||
@@ -14,14 +23,15 @@ ed_blur_border_color equ [edi+24] ;梥
|
||||
ed_text_color equ [edi+28] ;梥<> ⥪<><E2A5AA><EFBFBD>
|
||||
ed_max equ [edi+32] ;<3B><><EFBFBD>-<2D><> ᨬ<><E1A8AC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ᨬ<EFBFBD><E1A8AC>쭮 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
ed_text equ [edi+36] ;㪠<><E3AAA0>⥫<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
ed_flags equ [edi+40] ;䫠<><E4ABA0>
|
||||
ed_size equ [edi+44] ;<3B><><EFBFBD>-<2D><> ᨬ<><E1A8AC><EFBFBD><EFBFBD><EFBFBD>
|
||||
ed_pos equ [edi+48] ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
ed_offset equ [edi+52] ;ᬥ饭<EFBFBD><EFBFBD>
|
||||
cl_curs_x equ [edi+56] ;<3B>।<EFBFBD><EFBFBD><EFBFBD>饥 <20><><EFBFBD>न<EFBFBD><E0A4A8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <EFBFBD>
|
||||
cl_curs_y equ [edi+60] ;<3B>।<EFBFBD><E0A5A4><EFBFBD>饥 <20><><EFBFBD>न<EFBFBD><E0A4A8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>
|
||||
ed_shift_pos equ [edi+64] ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
ed_shift_pos_old equ [edi+68] ;<3B><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
ed_mouse_variable equ [edi+40] ; 㪠<><E3AAA0>⥫<EFBFBD> <20><> <20><>६<EFBFBD><E0A5AC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>/<2F><>㯯<EFBFBD>
|
||||
ed_flags equ [edi+44] ;䫠<EFBFBD><EFBFBD>
|
||||
ed_size equ [edi+48] ;<3B><><EFBFBD>-<EFBFBD><EFBFBD> ᨬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
ed_pos equ [edi+52] ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
ed_offset equ [edi+56] ;ᬥ饭<EFBFBD><EFBFBD>
|
||||
cl_curs_x equ [edi+60] ;<3B>।<EFBFBD><E0A5A4><EFBFBD>饥 <20><><EFBFBD>न<EFBFBD><E0A4A8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>
|
||||
cl_curs_y equ [edi+64] ;<3B>।<EFBFBD><EFBFBD><EFBFBD>饥 <20><><EFBFBD>न<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>
|
||||
ed_shift_pos equ [edi+68] ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
ed_shift_pos_old equ [edi+72] ;<3B><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
ed_figure_only= 1000000000000000b ;<3B><><EFBFBD><EFBFBD> ᨬ<><E1A8AC><EFBFBD><EFBFBD>
|
||||
ed_always_focus= 100000000000000b
|
||||
@@ -62,7 +72,7 @@ ed_height=14 ;
|
||||
;--- <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
|
||||
je @f
|
||||
jz @f
|
||||
call .draw_cursor
|
||||
@@:
|
||||
call .draw_text
|
||||
@@ -138,14 +148,18 @@ pushad
|
||||
test eax,1
|
||||
jnz edit_box_mouse.mouse_left_button
|
||||
and word ed_flags,ed_mouse_on_off
|
||||
xor ebx,ebx
|
||||
mov dword [mouse_flag],ebx
|
||||
mov ebx,dword ed_mouse_variable
|
||||
push 0
|
||||
pop dword [ebx]
|
||||
; mov dword [ebx],ebx
|
||||
jmp edit_box.editbox_exit
|
||||
.mouse_left_button:
|
||||
;----------------------------------------------------------
|
||||
;--- <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 [mouse_flag]
|
||||
mov eax,dword ed_mouse_variable
|
||||
push dword [eax]
|
||||
pop eax
|
||||
test eax,eax
|
||||
jz @f
|
||||
cmp eax,edi
|
||||
@@ -435,7 +449,8 @@ edit_box_key.sh_cl_:
|
||||
push ebx ;<3B><><EFBFBD><EFBFBD>襥
|
||||
jmp edit_box_key.sh_n1
|
||||
;<3B> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
edit_box_key.sh_n: push ebx
|
||||
edit_box_key.sh_n:
|
||||
push ebx
|
||||
push eax
|
||||
edit_box_key.sh_n1:
|
||||
call edit_box.check_offset
|
||||
@@ -920,7 +935,8 @@ popa
|
||||
stosb
|
||||
;--------
|
||||
loop @b
|
||||
edit_box_key.In_k: cld
|
||||
edit_box_key.In_k:
|
||||
cld
|
||||
pop eax
|
||||
mov al,ah
|
||||
stosb
|
||||
@@ -1015,7 +1031,8 @@ edit_box_key.draw_all2:
|
||||
ret
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;--- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> left ---
|
||||
edit_box_key.left: mov ebx,ed_pos
|
||||
edit_box_key.left:
|
||||
mov ebx,ed_pos
|
||||
test ebx,ebx
|
||||
jz edit_box_key.sh_st_of
|
||||
or word ed_flags,ed_left_fl
|
||||
@@ -1025,7 +1042,8 @@ edit_box_key.left: mov ebx,ed_pos
|
||||
jmp edit_box.draw_cursor_text
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;--- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> right ---
|
||||
edit_box_key.right: mov ebx,ed_pos
|
||||
edit_box_key.right:
|
||||
mov ebx,ed_pos
|
||||
cmp ebx,ed_size
|
||||
je edit_box_key.sh_st_of
|
||||
and word ed_flags,ed_right_fl
|
||||
@@ -1218,7 +1236,16 @@ edit_box_mouse._mshift:
|
||||
mov dword ed_shift_pos,eax
|
||||
or word ed_flags,ed_mouse_on
|
||||
mov dword ed_pos,eax
|
||||
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
|
||||
push edi
|
||||
pop dword [ebx]
|
||||
|
||||
|
||||
|
||||
|
||||
bts word ed_flags,1 ;<3B><>⠭<EFBFBD><E2A0AD><EFBFBD><EFBFBD> 䮪<><E4AEAA><EFBFBD>
|
||||
jmp edit_box_mouse.m_sh
|
||||
@@:
|
||||
@@ -1229,7 +1256,8 @@ edit_box_mouse._mshift:
|
||||
mov ebx,dword ed_shift_pos
|
||||
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
|
||||
edit_box_mouse.m_sh:
|
||||
call edit_box.draw_text
|
||||
call edit_box.draw_cursor
|
||||
;----------------------------------------------------------
|
||||
;--- <20><><EFBFBD>楤<EFBFBD><E6A5A4><EFBFBD> <20><>⠭<EFBFBD><E2A0AD><EFBFBD><EFBFBD> 䮪<><E4AEAA><EFBFBD> ---------------------------
|
||||
@@ -1350,9 +1378,9 @@ ed_mouse_on_off=1111111011111111b
|
||||
ed_height=24 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
ed_struc_size=72
|
||||
ed_struc_size=76
|
||||
struc edit_box width,left,top,color,shift_color,focus_border_color,\
|
||||
blur_border_color,text_color,max,text,flags,size,pos
|
||||
blur_border_color,text_color,max,text,mouse_variable,flags,size,pos
|
||||
{
|
||||
.width dd width
|
||||
.left dd left
|
||||
@@ -1364,6 +1392,7 @@ struc edit_box width,left,top,color,shift_color,focus_border_color,\
|
||||
.text_color dd text_color
|
||||
.max dd max
|
||||
.text dd text
|
||||
.mouse_variable dd mouse_variable
|
||||
.flags dd flags+0
|
||||
.size dd size+0
|
||||
.pos dd pos+0
|
||||
|
Reference in New Issue
Block a user