diff --git a/avr/modules/lcd2/gui2/base/widget.asm b/avr/modules/lcd2/gui2/base/widget.asm index 8eed11d..ff957d0 100644 --- a/avr/modules/lcd2/gui2/base/widget.asm +++ b/avr/modules/lcd2/gui2/base/widget.asm @@ -146,10 +146,65 @@ Widget_Fini: +; --------------------------------------------------------------------------- +; @routine Widget_OnDraw @global +; +; @param Y address of widget +; @param xl param1 +; @param xh param2 +; @return CFLAG set if signal handled +; @clobbers any, !Y + +Widget_OnDraw: + ldd r17, Y+OBJECT_OFFS_FLAGS + + ; check whether widget is visible + sbrs r17, WIDGET_FLAGS_VISIBLE_BIT + rjmp Widget_OnDraw_ret + + ; check whether widget is dirty + sbrs r17, WIDGET_FLAGS_DIRTY_BIT + rjmp Widget_OnDraw_ret + + ; clear dirty bit + cbr r17, (1<