You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
2.3 KiB
89 lines
2.3 KiB
--- gtk+-1.2.10/gtk/gtkwindow.c.themeswitch Mon Aug 13 13:42:05 2001
|
|
+++ gtk+-1.2.10/gtk/gtkwindow.c Mon Aug 13 13:42:05 2001
|
|
@@ -859,13 +859,60 @@
|
|
GTK_OBJECT_CLASS(parent_class)->finalize (object);
|
|
}
|
|
|
|
+
|
|
+static void
|
|
+reread_rc_files ()
|
|
+{
|
|
+ if (gtk_rc_reparse_all ())
|
|
+ {
|
|
+ /* If the above returned true, some of our RC files are out
|
|
+ * of date, so we need to reset all our widgets. Our other
|
|
+ * toplevel windows will also get the message, but by
|
|
+ * then, the RC file will up to date, so we have to tell
|
|
+ * them now.
|
|
+ */
|
|
+ GList *toplevels;
|
|
+
|
|
+ toplevels = gtk_container_get_toplevels();
|
|
+ while (toplevels)
|
|
+ {
|
|
+ gtk_widget_reset_rc_styles (toplevels->data);
|
|
+ toplevels = toplevels->next;
|
|
+ }
|
|
+ }
|
|
+}
|
|
+
|
|
static void
|
|
gtk_window_show (GtkWidget *widget)
|
|
{
|
|
GtkWindow *window = GTK_WINDOW (widget);
|
|
GtkContainer *container = GTK_CONTAINER (window);
|
|
gboolean need_resize;
|
|
+ GList *toplevels;
|
|
+ gboolean had_visible = FALSE;
|
|
|
|
+ /* If we have no windows shown at this point, then check for
|
|
+ * theme changes before showing the window. We really should
|
|
+ * be checking realized, not shown, but shown => realized,
|
|
+ * and checking in realize might cause reentrancy problems.
|
|
+ *
|
|
+ * Plus, this allows us to get the new size right before
|
|
+ * realizing.
|
|
+ */
|
|
+ toplevels = gtk_container_get_toplevels ();
|
|
+ while (toplevels)
|
|
+ {
|
|
+ if (GTK_WIDGET_VISIBLE (toplevels->data))
|
|
+ {
|
|
+ had_visible = TRUE;
|
|
+ break;
|
|
+ }
|
|
+ toplevels = toplevels->next;
|
|
+ }
|
|
+
|
|
+ if (!had_visible)
|
|
+ reread_rc_files ();
|
|
+
|
|
GTK_WIDGET_SET_FLAGS (widget, GTK_VISIBLE);
|
|
|
|
need_resize = container->need_resize || !GTK_WIDGET_REALIZED (widget);
|
|
@@ -1480,23 +1527,7 @@
|
|
}
|
|
}
|
|
|
|
- if (gtk_rc_reparse_all ())
|
|
- {
|
|
- /* If the above returned true, some of our RC files are out
|
|
- * of date, so we need to reset all our widgets. Our other
|
|
- * toplevel windows will also get the message, but by
|
|
- * then, the RC file will up to date, so we have to tell
|
|
- * them now.
|
|
- */
|
|
- GList *toplevels;
|
|
-
|
|
- toplevels = gtk_container_get_toplevels();
|
|
- while (toplevels)
|
|
- {
|
|
- gtk_widget_reset_rc_styles (toplevels->data);
|
|
- toplevels = toplevels->next;
|
|
- }
|
|
- }
|
|
+ reread_rc_files ();
|
|
}
|
|
|
|
static gint
|