diff options
author | inmarket <andrewh@inmarket.com.au> | 2013-07-06 01:42:10 +1000 |
---|---|---|
committer | inmarket <andrewh@inmarket.com.au> | 2013-07-06 01:42:10 +1000 |
commit | f3f9b7dc015b5afc82fba6682e780dcc72f9241d (patch) | |
tree | 7644ded5c752f66064692dde8f82785c41ec22a1 /src | |
parent | 99c13615c829f5d64fe10f644aa493be0cd01c15 (diff) | |
download | uGFX-f3f9b7dc015b5afc82fba6682e780dcc72f9241d.tar.gz uGFX-f3f9b7dc015b5afc82fba6682e780dcc72f9241d.tar.bz2 uGFX-f3f9b7dc015b5afc82fba6682e780dcc72f9241d.zip |
Fix window manager bug
Window are was not being cleared properly when something was made invisible
Diffstat (limited to 'src')
-rw-r--r-- | src/gwin/gwm.c | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/src/gwin/gwm.c b/src/gwin/gwm.c index 75b08be6..88d61a21 100644 --- a/src/gwin/gwm.c +++ b/src/gwin/gwm.c @@ -88,18 +88,16 @@ static void WM_Delete(GHandle gh) { } static void WM_Visible(GHandle gh) { + #if GDISP_NEED_CLIP + gdispSetClip(gh->x, gh->y, gh->width, gh->height); + #endif if ((gh->flags & GWIN_FLG_VISIBLE)) { - if (gh->vmt->Redraw) { - #if GDISP_NEED_CLIP - gdispSetClip(gh->x, gh->y, gh->width, gh->height); - #endif + if (gh->vmt->Redraw) gh->vmt->Redraw(gh); - } else - gwinClear(gh); - // A real window manager would also redraw the borders - } - - else + else + gdispFillArea(gh->x, gh->y, gh->width, gh->height, gh->bgcolor); + // A real window manager would also redraw the borders here + } else gdispFillArea(gh->x, gh->y, gh->width, gh->height, gwinGetDefaultBgColor()); } |