summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--new/newcontrol_unix.c10
-rw-r--r--new/stack.c11
2 files changed, 18 insertions, 3 deletions
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;