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] ;梥â ⥪áâ
|
||||
ed_max equ [edi+32] ;ª®«-¢® ᨬ¢®«®¢ ª®â®àë¥ ¬®¦® ¬ ªá¨¬ «ì® ¢¢¥áâ¨
|
||||
ed_text equ [edi+36] ;㪠§ â¥«ì ¡ãä¥à
|
||||
ed_flags equ [edi+40] ;ä« £¨
|
||||
ed_size equ [edi+44] ;ª®«-¢® ᨬ¢®«®¢
|
||||
ed_pos equ [edi+48] ;¯®§¨æ¨ï ªãàá®à
|
||||
ed_offset equ [edi+52] ;ᬥ饨¥
|
||||
cl_curs_x equ [edi+56] ;¯à¥¤ë¤ã饥 ª®®à¤¨ â ªãàá®à ¯® å
|
||||
cl_curs_y equ [edi+60] ;¯à¥¤ë¤ã饥 ª®®à¤¨ â ªãàá®à ¯® ã
|
||||
ed_shift_pos equ [edi+64] ;¯®«®¦¥¨¥ ªãàá®à
|
||||
ed_shift_pos_old equ [edi+68] ;áâ ஥ ¯®«®¦¥¨¥ ªãàá®à
|
||||
ed_mouse_variable equ [edi+40] ; 㪠§ â¥«ì ¯¥à¥¬¥ãî ¤«ï ¡®ªá /£à㯯ë
|
||||
ed_flags equ [edi+44] ;ä« £¨
|
||||
ed_size equ [edi+48] ;ª®«-¢® ᨬ¢®«®¢
|
||||
ed_pos equ [edi+52] ;¯®§¨æ¨ï ªãàá®à
|
||||
ed_offset equ [edi+56] ;ᬥ饨¥
|
||||
cl_curs_x equ [edi+60] ;¯à¥¤ë¤ã饥 ª®®à¤¨ â ªãàá®à ¯® å
|
||||
cl_curs_y equ [edi+64] ;¯à¥¤ë¤ã饥 ª®®à¤¨ â ªãàá®à ¯® ã
|
||||
ed_shift_pos equ [edi+68] ;¯®«®¦¥¨¥ ªãàá®à
|
||||
ed_shift_pos_old equ [edi+72] ;áâ ஥ ¯®«®¦¥¨¥ ªãàá®à
|
||||
|
||||
ed_figure_only= 1000000000000000b ;®¤¨ ᨬ¢®«ë
|
||||
ed_always_focus= 100000000000000b
|
||||
@@ -62,7 +72,7 @@ ed_height=14 ;
|
||||
;--- à¨á㥬 ªãàá®à ---
|
||||
;--- ¬®¦¥â ¥£® ¥ ¤® à¨á®¢ âì ----
|
||||
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:
|
||||
;----------------------------------------------------------
|
||||
;--- ¡«®ª¨à®¢ª ®â 䮪ãá¨à®¢ª¨ ¢ ¤àã£¨å ¡®ªá å ¯à¨ ¯®¯ ¤ ¨¨ ¨å ªãàá®à
|
||||
;----------------------------------------------------------
|
||||
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 ;¡®«ì襥
|
||||
jmp edit_box_key.sh_n1
|
||||
;¥á«¨ ¨ ç¥
|
||||
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
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;--- ¦ â ª« ¢¨è 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
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;--- ¦ â ª« ¢¨è 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 ;ãáâ ®¢¨¬ ¨¤¥â¨ä¨ª â®à
|
||||
|
||||
; mov dword [mouse_flag],edi ;ãáâ ®¢¨¬ ¨¤¥â¨ä¨ª â®à
|
||||
|
||||
mov ebx,dword ed_mouse_variable
|
||||
push edi
|
||||
pop dword [ebx]
|
||||
|
||||
|
||||
|
||||
|
||||
bts word ed_flags,1 ;ãáâ ®¢ª 䮪ãá
|
||||
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 ;ãáâ ®¢¨¬ ¡¨â çâ® ¬ë ¢ë¤¥«¨«¨ +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
|
||||
;----------------------------------------------------------
|
||||
;--- ¯à®æ¥¤ãà ãáâ ®¢ª¨ 䮪ãá ---------------------------
|
||||
@@ -1350,9 +1378,9 @@ ed_mouse_on_off=1111111011111111b
|
||||
ed_height=24 ; ¢ëá®â
|
||||
}
|
||||
|
||||
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