diff --git a/TODO.md b/TODO.md index 5c7ae0bc..cc5c6c41 100644 --- a/TODO.md +++ b/TODO.md @@ -7,6 +7,7 @@ - GWL(P)_ID - make sure all terminology is consistent - 32-bit Mac OS X support (requires lots of code changes) +- add a test for hidden controls when a window is shown ultimately: - make everything vtable-based diff --git a/container_unix.c b/container_unix.c index 5ee421cd..ec5d2f0c 100644 --- a/container_unix.c +++ b/container_unix.c @@ -117,7 +117,12 @@ static void uiContainer_class_init(uiContainerClass *class) GtkWidget *newContainer(void) { - return GTK_WIDGET(g_object_new(uiContainerType, NULL)); + GtkWidget *w; + + w = GTK_WIDGET(g_object_new(uiContainerType, NULL)); + // call gtk_widget_show_all() here to make the container visible + gtk_widget_show_all(w); + return w; } void updateParent(uintptr_t parent) diff --git a/newcontrol_unix.c b/newcontrol_unix.c index 0f6388b8..feedafea 100644 --- a/newcontrol_unix.c +++ b/newcontrol_unix.c @@ -221,6 +221,9 @@ uiControl *uiUnixNewControl(GType type, gboolean inScrolledWindow, gboolean scro // and let's free everything with the immediate widget g_signal_connect(s->immediate, "destroy", G_CALLBACK(onDestroy), c); + // finally, call gtk_widget_show_all() here to set the initial visibility of the widget + gtk_widget_show_all(s->immediate); + c->internal = s; return c; } diff --git a/window_unix.c b/window_unix.c index c4ec6d4c..d6273354 100644 --- a/window_unix.c +++ b/window_unix.c @@ -68,7 +68,8 @@ void uiWindowSetTitle(uiWindow *w, const char *title) void uiWindowShow(uiWindow *w) { - gtk_widget_show_all(w->widget); + // don't use gtk_widget_show_all(); that will override user hidden settings + gtk_widget_show(w->widget); } void uiWindowHide(uiWindow *w)