From 8f79f0596f69db020684c51e5192e6cc9fa8d757 Mon Sep 17 00:00:00 2001 From: Pietro Gagliardi Date: Wed, 29 Apr 2015 14:25:34 -0400 Subject: [PATCH] Set hidden flag variables BEFORE updating parent containers. Otherwise, parents won't reposition children correctly on systems where updates happen immediately (like OS X). --- darwin/container.m | 5 +++-- darwin/newcontrol.m | 4 ++-- unix/container.c | 4 ++-- unix/newcontrol.c | 4 ++-- windows/container.c | 4 ++-- windows/newcontrol.c | 4 ++-- 6 files changed, 13 insertions(+), 12 deletions(-) diff --git a/darwin/container.m b/darwin/container.m index d75b1fac..2223fd9c 100644 --- a/darwin/container.m +++ b/darwin/container.m @@ -114,9 +114,10 @@ static void containerShow(uiControl *cc) [c setHidden:NO]; // hidden controls don't count in boxes and grids + // be sure to change the hidden variable FIRST, otherwise immediate resizes like on OS X don't work right + c.containerHidden = 0; if (c.containerParent != NULL) uiContainerUpdate(c.containerParent); - c.containerHidden = 0; } static void containerHide(uiControl *cc) @@ -124,9 +125,9 @@ static void containerHide(uiControl *cc) containerView *c = (containerView *) (cc->Internal); [c setHidden:YES]; + c.containerHidden = 1; if (c.containerParent != NULL) uiContainerUpdate(c.containerParent); - c.containerHidden = 1; } static void containerEnable(uiControl *cc) diff --git a/darwin/newcontrol.m b/darwin/newcontrol.m index ecf379bd..029cab58 100644 --- a/darwin/newcontrol.m +++ b/darwin/newcontrol.m @@ -93,9 +93,9 @@ static void singleShow(uiControl *c) singleView *s = (singleView *) (c->Internal); [s->immediate setHidden:NO]; + s->hidden = 0; if (s->parent != NULL) uiContainerUpdate(s->parent); - s->hidden = 0; } static void singleHide(uiControl *c) @@ -103,9 +103,9 @@ static void singleHide(uiControl *c) singleView *s = (singleView *) (c->Internal); [s->immediate setHidden:YES]; + s->hidden = 1; if (s->parent != NULL) uiContainerUpdate(s->parent); - s->hidden = 1; } static void singleEnable(uiControl *c) diff --git a/unix/container.c b/unix/container.c index 5cdaffd6..074730d2 100644 --- a/unix/container.c +++ b/unix/container.c @@ -178,9 +178,9 @@ static void containerShow(uiControl *cc) // don't use gtk_widget_show_all(); that'll show every widget, including ones hidden by the user gtk_widget_show(GTK_WIDGET(c)); // hidden controls don't count in boxes and grids + c->hidden = 0; if (c->parent != NULL) uiContainerUpdate(c->parent); - c->hidden = 0; } static void containerHide(uiControl *cc) @@ -188,9 +188,9 @@ static void containerHide(uiControl *cc) containerWidget *c = containerWidget(cc->Internal); gtk_widget_hide(GTK_WIDGET(c)); + c->hidden = 1; if (c->parent != NULL) uiContainerUpdate(c->parent); - c->hidden = 1; } static void containerEnable(uiControl *cc) diff --git a/unix/newcontrol.c b/unix/newcontrol.c index f29b4a9e..7fb58619 100644 --- a/unix/newcontrol.c +++ b/unix/newcontrol.c @@ -99,9 +99,9 @@ static void singleShow(uiControl *c) singleWidget *s = (singleWidget *) (c->Internal); gtk_widget_show_all(s->immediate); + s->hidden = 0; if (s->parent != NULL) uiContainerUpdate(s->parent); - s->hidden = 0; } static void singleHide(uiControl *c) @@ -109,9 +109,9 @@ static void singleHide(uiControl *c) singleWidget *s = (singleWidget *) (c->Internal); gtk_widget_hide(s->immediate); + s->hidden = 1; if (s->parent != NULL) uiContainerUpdate(s->parent); - s->hidden = 1; } static void singleEnable(uiControl *c) diff --git a/windows/container.c b/windows/container.c index 1cf04ae6..b9c93b5b 100644 --- a/windows/container.c +++ b/windows/container.c @@ -179,9 +179,9 @@ static void containerShow(uiControl *cc) ShowWindow(c->hwnd, SW_SHOW); // hidden controls don't count in boxes and grids + c->hidden = 0; if (c->parent != NULL) uiContainerUpdate(c->parent); - c->hidden = 0; } static void containerHide(uiControl *cc) @@ -189,9 +189,9 @@ static void containerHide(uiControl *cc) struct container *c = (struct container *) (cc->Internal); ShowWindow(c->hwnd, SW_HIDE); + c->hidden = 1; if (c->parent != NULL) uiContainerUpdate(c->parent); - c->hidden = 1; } static void containerEnable(uiControl *cc) diff --git a/windows/newcontrol.c b/windows/newcontrol.c index 400786d3..8e69c238 100644 --- a/windows/newcontrol.c +++ b/windows/newcontrol.c @@ -73,9 +73,9 @@ static void singleShow(uiControl *c) singleHWND *s = (singleHWND *) (c->Internal); ShowWindow(s->hwnd, SW_SHOW); + s->hidden = 0; if (s->parent != NULL) uiContainerUpdate(s->parent); - s->hidden = 0; } static void singleHide(uiControl *c) @@ -83,9 +83,9 @@ static void singleHide(uiControl *c) singleHWND *s = (singleHWND *) (c->Internal); ShowWindow(s->hwnd, SW_HIDE); + s->hidden = 1; if (s->parent != NULL) uiContainerUpdate(s->parent); - s->hidden = 1; } static void singleEnable(uiControl *c)