From 7075bea0f58dde1760fe53c6d54cd07bd3842531 Mon Sep 17 00:00:00 2001 From: Pietro Gagliardi Date: Fri, 9 Oct 2015 15:27:57 -0400 Subject: [PATCH] Added uiAreaQueueRedrawAll() and implemented on all platforms. NOW we can focus exclusively on the test suite. --- darwin/area.m | 5 +++++ test/page6.c | 2 +- ui.h | 2 ++ unix/area.c | 5 +++++ windows/area.c | 7 +++++++ 5 files changed, 20 insertions(+), 1 deletion(-) diff --git a/darwin/area.m b/darwin/area.m index 2995849c..c01d24fc 100644 --- a/darwin/area.m +++ b/darwin/area.m @@ -688,6 +688,11 @@ void uiAreaUpdateScroll(uiArea *a) */ } +void uiAreaQueueRedrawAll(uiArea *a) +{ + [a->view setNeedsDisplay:YES]; +} + uiArea *uiNewArea(uiAreaHandler *ah) { uiArea *a; diff --git a/test/page6.c b/test/page6.c index edfc1c78..b248a3a7 100644 --- a/test/page6.c +++ b/test/page6.c @@ -85,7 +85,7 @@ static void shouldntHappen(uiCombobox *c, void *data) static void redraw(uiCombobox *c, void *data) { - // TODO + uiAreaQueueRedrawAll(area); } uiBox *makePage6(void) diff --git a/ui.h b/ui.h index e5efca3b..d89bf14a 100644 --- a/ui.h +++ b/ui.h @@ -267,6 +267,8 @@ struct uiAreaHandler { _UI_EXTERN uintmax_t uiMenuItemType(void); #define uiArea(this) ((uiArea *) uiIsA((this), uiAreaType(), 1)) _UI_EXTERN void uiAreaUpdateScroll(uiArea *a); +// TODO uiAreaQueueRedraw() +_UI_EXTERN void uiAreaQueueRedrawAll(uiArea *a); _UI_EXTERN uiArea *uiNewArea(uiAreaHandler *ah); struct uiAreaDrawParams { diff --git a/unix/area.c b/unix/area.c index a05c2a40..d24314cd 100644 --- a/unix/area.c +++ b/unix/area.c @@ -568,6 +568,11 @@ void uiAreaUpdateScroll(uiArea *a) updateScroll(a->area); } +void uiAreaQueueRedrawAll(uiArea *a) +{ + gtk_widget_queue_draw(a->areaWidget); +} + uiArea *uiNewArea(uiAreaHandler *ah) { uiArea *a; diff --git a/windows/area.c b/windows/area.c index 478fec57..389e89ef 100644 --- a/windows/area.c +++ b/windows/area.c @@ -695,6 +695,13 @@ void uiAreaUpdateScroll(uiArea *a) vscrollby(a, 0); } +void uiAreaQueueRedrawAll(uiArea *a) +{ + // don't erase the background; we do that ourselves in doPaint() + if (InvalidateRect(a->hwnd, NULL, FALSE) == 0) + logLastError("error queueing uiArea redraw in uiAreaQueueRedrawAll()"); +} + uiArea *uiNewArea(uiAreaHandler *ah) { uiArea *a;