gui2: main windows basically work now!
This commit is contained in:
@@ -193,6 +193,11 @@ Widget_Init_setDefaultSize:
|
||||
or r16, xh
|
||||
breq Widget_Init_ret
|
||||
bigcall OBJ_AddChild ; (r18, r19)
|
||||
; parent needs to layout with the new child
|
||||
adiw xh:xl, OBJECT_OFFS_FLAGS
|
||||
ld r16, X
|
||||
sbr r16, (1<<WIDGET_FLAGS_LAYOUT_BIT)
|
||||
sbiw xh:xl, OBJECT_OFFS_FLAGS
|
||||
|
||||
; preset flags
|
||||
ldd r16, Y+OBJECT_OFFS_FLAGS
|
||||
@@ -401,6 +406,40 @@ Widget_OnLayout:
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine Widget_OnShow @global
|
||||
;
|
||||
; @param Y address of widget
|
||||
; @return CFLAG set if signal handled
|
||||
; @clobbers any, !Y
|
||||
|
||||
Widget_OnShow:
|
||||
ldd r16, Y+OBJECT_OFFS_FLAGS
|
||||
sbr r16, (1<<WIDGET_FLAGS_VISIBLE_BIT) | (1<<WIDGET_FLAGS_DIRTY_BIT) | (1<<WIDGET_FLAGS_LAYOUT_BIT)
|
||||
std Y+OBJECT_OFFS_FLAGS, r16
|
||||
sec
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine Widget_OnHide @global
|
||||
;
|
||||
; @param Y address of widget
|
||||
; @return CFLAG set if signal handled
|
||||
; @clobbers any, !Y
|
||||
|
||||
Widget_OnHide:
|
||||
ldd r16, Y+OBJECT_OFFS_FLAGS
|
||||
cbr r16, (1<<WIDGET_FLAGS_VISIBLE_BIT)
|
||||
std Y+OBJECT_OFFS_FLAGS, r16
|
||||
sec
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine Widget_OnGetValue @global
|
||||
;
|
||||
@@ -1023,14 +1062,14 @@ widgetPack:
|
||||
sub r18, r20 ; subtract border at begin
|
||||
sbc r19, r21
|
||||
sub r18, r20 ; subtract border at end
|
||||
sbc r19, r21
|
||||
sbc r19, r21 ; r19:r18=host size - (border*2)
|
||||
|
||||
andi r17, 3 ; only 2 bits pack mode
|
||||
cpi r17, WIDGET_PACK_END
|
||||
breq widgetPack_end
|
||||
cpi r17, WIDGET_PACK_CENTER
|
||||
breq widgetPack_center
|
||||
rjmp widgetPack_ret ; begin/filled, align at begin
|
||||
rjmp widgetPack_ret ; begin/filled, align at begin
|
||||
widgetPack_end:
|
||||
sub r18, r12
|
||||
sbc r19, r13
|
||||
@@ -1063,6 +1102,8 @@ Widget_DefaultSignalmap:
|
||||
.db 0, WIDGET_SIGNAL_DRAW, LOW(Widget_OnDraw), HIGH(Widget_OnDraw)
|
||||
.db 0, WIDGET_SIGNAL_LAYOUT, LOW(Widget_OnLayout), HIGH(Widget_OnLayout)
|
||||
.db 0, WIDGET_SIGNAL_GETVALUE, LOW(Widget_OnGetValue), HIGH(Widget_OnGetValue) ; handle any value here
|
||||
.db 0, WIDGET_SIGNAL_SHOW, LOW(Widget_OnShow), HIGH(Widget_OnShow)
|
||||
.db 0, WIDGET_SIGNAL_HIDE, LOW(Widget_OnHide), HIGH(Widget_OnHide)
|
||||
.db 0, 0, 0, 0 ; end of table
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user