From f3f9b7dc015b5afc82fba6682e780dcc72f9241d Mon Sep 17 00:00:00 2001 From: inmarket Date: Sat, 6 Jul 2013 01:42:10 +1000 Subject: [PATCH] Fix window manager bug Window are was not being cleared properly when something was made invisible --- src/gwin/gwm.c | 18 ++++++++---------- 1 file 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()); }