mirror of
git://slackware.nl/current.git
synced 2024-12-29 10:25:00 +01:00
89 lines
2.3 KiB
Diff
89 lines
2.3 KiB
Diff
|
--- 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
|