diff options
author | Joel Bodenmann <joel@unormal.org> | 2014-01-05 04:02:03 +0100 |
---|---|---|
committer | Joel Bodenmann <joel@unormal.org> | 2014-01-05 04:02:03 +0100 |
commit | a6b81192eb2ce4df34b04253c28b50e797aaccc9 (patch) | |
tree | 6fb56ccceb17da16fc6f2be6ca40f8b17bbcead6 /src/gwin/gwin.c | |
parent | 9f5d14cf5d17ac0b2b16943da4a1347f695d109b (diff) | |
download | uGFX-a6b81192eb2ce4df34b04253c28b50e797aaccc9.tar.gz uGFX-a6b81192eb2ce4df34b04253c28b50e797aaccc9.tar.bz2 uGFX-a6b81192eb2ce4df34b04253c28b50e797aaccc9.zip |
some progress
Diffstat (limited to 'src/gwin/gwin.c')
-rw-r--r-- | src/gwin/gwin.c | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/src/gwin/gwin.c b/src/gwin/gwin.c index 1ec8280c..27f893a8 100644 --- a/src/gwin/gwin.c +++ b/src/gwin/gwin.c @@ -299,7 +299,15 @@ void gwinResize(GHandle gh, coord_t width, coord_t height) { } void gwinRedraw(GHandle gh) { - _gwm_redraw(gh, GWIN_WMFLG_PRESERVE|GWIN_WMFLG_NOBGCLEAR); + _gwm_redraw(gh, GWIN_WMFLG_PRESERVE | GWIN_WMFLG_NOBGCLEAR); + + #if GWIN_NEED_HIERARCHY + GHandle tmp; + if (gh->child) { + for (tmp = gh->child; tmp; tmp = tmp->sibling) + gwinRedraw(tmp); + } + #endif } #if GDISP_NEED_TEXT @@ -309,8 +317,7 @@ void gwinRedraw(GHandle gh) { #endif #if GWIN_NEED_HIERARCHY - void gwinAddChild(GHandle parent, GHandle child, bool_t last) - { + void gwinAddChild(GHandle parent, GHandle child, bool_t last) { child->parent = parent; child->sibling = NULL; child->child = NULL; @@ -325,8 +332,19 @@ void gwinRedraw(GHandle gh) { s->sibling = child; } else { child->sibling = parent->child; - parent->child = child; + parent->child = child; } + + #if GDISP_NEED_CLIP + gdispGSetClip(child->display, child->x, child->y, child->width, child->height); + #endif + gdispGFillArea(child->display, child->x, child->y, child->width, child->height, child->bgcolor); + #if GDISP_NEED_CLIP + gdispGUnsetClip(child->display); + #endif + + gwinClear(parent); + gwinRedraw(parent); } GHandle gwinGetFirstChild(GHandle gh) { |