diff options
Diffstat (limited to 'x11-libs/gtk+/files/gtk+-1.2.10-mdk-themeswitch.patch')
-rw-r--r-- | x11-libs/gtk+/files/gtk+-1.2.10-mdk-themeswitch.patch | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-mdk-themeswitch.patch b/x11-libs/gtk+/files/gtk+-1.2.10-mdk-themeswitch.patch new file mode 100644 index 0000000..5bf8490 --- /dev/null +++ b/x11-libs/gtk+/files/gtk+-1.2.10-mdk-themeswitch.patch @@ -0,0 +1,88 @@ +--- 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 |