summaryrefslogtreecommitdiff
path: root/source/l/gtk+/gtk+-1.2.10-themeswitch.patch
diff options
context:
space:
mode:
Diffstat (limited to 'source/l/gtk+/gtk+-1.2.10-themeswitch.patch')
-rw-r--r--source/l/gtk+/gtk+-1.2.10-themeswitch.patch88
1 files changed, 88 insertions, 0 deletions
diff --git a/source/l/gtk+/gtk+-1.2.10-themeswitch.patch b/source/l/gtk+/gtk+-1.2.10-themeswitch.patch
new file mode 100644
index 00000000..5bf84903
--- /dev/null
+++ b/source/l/gtk+/gtk+-1.2.10-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