diff --git a/new/newcontrol_unix.c b/new/newcontrol_unix.c index db7652b..c3fad42 100644 --- a/new/newcontrol_unix.c +++ b/new/newcontrol_unix.c @@ -87,8 +87,10 @@ static void singleShow(uiControl *c) singleWidget *s = (singleWidget *) (c->internal); s->userHid = FALSE; - if (!s->containerHid) + if (!s->containerHid) { gtk_widget_show_all(s->immediate); + updateParent(s->parent); + } } static void singleHide(uiControl *c) @@ -97,6 +99,7 @@ static void singleHide(uiControl *c) s->userHid = TRUE; gtk_widget_hide(s->immediate); + updateParent(s->parent); } static void singleContainerShow(uiControl *c) @@ -104,8 +107,10 @@ static void singleContainerShow(uiControl *c) singleWidget *s = (singleWidget *) (c->internal); s->containerHid = FALSE; - if (!s->userHid) + if (!s->userHid) { gtk_widget_show_all(s->immediate); + updateParent(s->parent); + } } static void singleContainerHide(uiControl *c) @@ -114,6 +119,7 @@ static void singleContainerHide(uiControl *c) s->containerHid = TRUE; gtk_widget_hide(s->immediate); + updateParent(s->parent); } static void singleEnable(uiControl *c) diff --git a/new/stack.c b/new/stack.c index 4c817d2..3899f83 100644 --- a/new/stack.c +++ b/new/stack.c @@ -97,6 +97,8 @@ static void stackPreferredSize(uiControl *c, uiSizing *d, intmax_t *width, intma maxStretchyWidth = 0; maxStretchyHeight = 0; for (i = 0; i < s->len; i++) { + if (!uiControlVisible(s->controls[i].c)) + continue; uiControlPreferredSize(s->controls[i].c, d, &preferredWidth, &preferredHeight); if (s->controls[i].stretchy) { nStretchy++; @@ -157,6 +159,8 @@ static void stackResize(uiControl *c, intmax_t x, intmax_t y, intmax_t width, in stretchyht = height; nStretchy = 0; for (i = 0; i < s->len; i++) { + if (!uiControlVisible(s->controls[i].c)) + continue; if (s->controls[i].stretchy) { nStretchy++; continue; @@ -180,14 +184,19 @@ static void stackResize(uiControl *c, intmax_t x, intmax_t y, intmax_t width, in stretchyht /= nStretchy; else stretchywid /= nStretchy; - for (i = 0; i < s->len; i++) + for (i = 0; i < s->len; i++) { + if (!uiControlVisible(s->controls[i].c)) + continue; if (s->controls[i].stretchy) { s->controls[i].width = stretchywid; s->controls[i].height = stretchyht; } + } // 3) now we can position controls for (i = 0; i < s->len; i++) { + if (!uiControlVisible(s->controls[i].c)) + continue; uiControlResize(s->controls[i].c, x, y, s->controls[i].width, s->controls[i].height, d); if (s->vertical) y += s->controls[i].height + ypadding;