diff --git a/include/Mw/Core.h b/include/Mw/Core.h index 0cc7130..bd4a7ee 100644 --- a/include/Mw/Core.h +++ b/include/Mw/Core.h @@ -208,6 +208,12 @@ MWDECL void MwDispatchError(int code, const char* message); */ MWDECL void MwGetBeforeStep(MwWidget handle, jmp_buf* jmpbuf); +/*! + * %brief Forcefully makes widget render + * %param handle Widget + */ +MWDECL void MwForceRender(MwWidget handle); + #ifdef __cplusplus } #endif diff --git a/src/backend/gdi.c b/src/backend/gdi.c index e608a86..70e7eb0 100644 --- a/src/backend/gdi.c +++ b/src/backend/gdi.c @@ -47,7 +47,6 @@ static LRESULT CALLBACK wndproc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) { SetCapture(hWnd); MwLLDispatch(u->ll, down, &p); - InvalidateRect(hWnd, NULL, FALSE); } else if(msg == WM_LBUTTONUP) { MwPoint p; p.x = LOWORD(lp); @@ -55,7 +54,6 @@ static LRESULT CALLBACK wndproc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) { SetCapture(NULL); MwLLDispatch(u->ll, up, &p); - InvalidateRect(hWnd, NULL, FALSE); } else if(msg == WM_MOUSEMOVE) { MwPoint p; p.x = LOWORD(lp); diff --git a/src/backend/x11.c b/src/backend/x11.c index bc983e1..a6f656e 100644 --- a/src/backend/x11.c +++ b/src/backend/x11.c @@ -150,7 +150,6 @@ void MwLLNextEvent(MwLL handle) { p.y = ev.xbutton.y; MwLLDispatch(handle, down, &p); - render = 1; } } else if(ev.type == ButtonRelease) { if(ev.xbutton.button == Button1) { @@ -159,7 +158,6 @@ void MwLLNextEvent(MwLL handle) { p.y = ev.xbutton.y; MwLLDispatch(handle, up, &p); - render = 1; } } else if(ev.type == ConfigureNotify) { MwLLDispatch(handle, resize, NULL); diff --git a/src/core.c b/src/core.c index 4f91b30..f540db8 100644 --- a/src/core.c +++ b/src/core.c @@ -335,3 +335,7 @@ void MwDispatchError(int code, const char* message) { void MwGetBeforeStep(MwWidget handle, jmp_buf* jmpbuf) { memcpy(jmpbuf, &handle->before_step, sizeof(*jmpbuf)); } + +void MwForceRender(MwWidget handle) { + MwLLForceRender(handle->lowlevel); +} diff --git a/src/widget/button.c b/src/widget/button.c index 85968eb..6fabb8f 100644 --- a/src/widget/button.c +++ b/src/widget/button.c @@ -62,13 +62,13 @@ static void click(MwWidget handle) { } MwClassRec MwButtonClassRec = { - create, /* create */ - NULL, /* destroy */ - draw, /* draw */ - click, /* click */ - NULL, /* parent_resize */ - NULL, /* mouse_move */ - NULL, /* mouse_up */ - NULL /* mouse_down */ + create, /* create */ + NULL, /* destroy */ + draw, /* draw */ + click, /* click */ + NULL, /* parent_resize */ + NULL, /* mouse_move */ + MwForceRender, /* mouse_up */ + MwForceRender /* mouse_down */ }; MwClass MwButtonClass = &MwButtonClassRec; diff --git a/src/widget/menu.c b/src/widget/menu.c index 30ec3cf..29ed5ff 100644 --- a/src/widget/menu.c +++ b/src/widget/menu.c @@ -150,8 +150,8 @@ MwClassRec MwMenuClassRec = { NULL, /* click */ parent_resize, /* parent_resize */ NULL, /* mouse_move */ - NULL, /* mouse_up */ - NULL /* mouse_down */ + MwForceRender, /* mouse_up */ + MwForceRender /* mouse_down */ }; MwClass MwMenuClass = &MwMenuClassRec; diff --git a/src/widget/scrollbar.c b/src/widget/scrollbar.c index 2a95ebd..f69bab0 100644 --- a/src/widget/scrollbar.c +++ b/src/widget/scrollbar.c @@ -76,13 +76,13 @@ static void draw(MwWidget handle) { } MwClassRec MwScrollBarClassRec = { - create, /* create */ - destroy, /* destroy */ - draw, /* draw */ - NULL, /* click */ - NULL, /* parent_resize */ - NULL, /* mouse_move */ - NULL, /* mouse_up */ - NULL /* mouse_down */ + create, /* create */ + destroy, /* destroy */ + draw, /* draw */ + NULL, /* click */ + NULL, /* parent_resize */ + NULL, /* mouse_move */ + MwForceRender, /* mouse_up */ + MwForceRender /* mouse_down */ }; MwClass MwScrollBarClass = &MwScrollBarClassRec; diff --git a/src/widget/submenu.c b/src/widget/submenu.c index 1e419f8..1883860 100644 --- a/src/widget/submenu.c +++ b/src/widget/submenu.c @@ -152,14 +152,14 @@ static void click(MwWidget handle) { } MwClassRec MwSubMenuClassRec = { - create, /* create */ - destroy, /* destroy */ - draw, /* draw */ - click, /* click */ - NULL, /* parent_resize */ - NULL, /* mouse_move */ - NULL, /* mouse_up */ - NULL /* mouse_down */ + create, /* create */ + destroy, /* destroy */ + draw, /* draw */ + click, /* click */ + NULL, /* parent_resize */ + NULL, /* mouse_move */ + MwForceRender, /* mouse_up */ + MwForceRender /* mouse_down */ }; MwClass MwSubMenuClass = &MwSubMenuClassRec;