diff --git a/ChangeLog b/ChangeLog index b46a04fbdb..ca3cdef55a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2004-03-11 Federico Mena Quintero + + * gtk/gtkfilechooserdefault.c (remove_settings_signal): New + function, copied from gtkpathbar.c. + (gtk_file_chooser_default_dispose): Use remove_settings_signal() + rather than our own code. + (gtk_file_chooser_default_screen_changed): Use + remove_settings_signal(); this should handle per-screen settings + correctly. + Thu Mar 11 14:07:18 2004 Owen Taylor * gtk/gtklabel.c (gtk_label_focus): Fix a missing return diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index b46a04fbdb..ca3cdef55a 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,13 @@ +2004-03-11 Federico Mena Quintero + + * gtk/gtkfilechooserdefault.c (remove_settings_signal): New + function, copied from gtkpathbar.c. + (gtk_file_chooser_default_dispose): Use remove_settings_signal() + rather than our own code. + (gtk_file_chooser_default_screen_changed): Use + remove_settings_signal(); this should handle per-screen settings + correctly. + Thu Mar 11 14:07:18 2004 Owen Taylor * gtk/gtklabel.c (gtk_label_focus): Fix a missing return diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index b46a04fbdb..ca3cdef55a 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,13 @@ +2004-03-11 Federico Mena Quintero + + * gtk/gtkfilechooserdefault.c (remove_settings_signal): New + function, copied from gtkpathbar.c. + (gtk_file_chooser_default_dispose): Use remove_settings_signal() + rather than our own code. + (gtk_file_chooser_default_screen_changed): Use + remove_settings_signal(); this should handle per-screen settings + correctly. + Thu Mar 11 14:07:18 2004 Owen Taylor * gtk/gtklabel.c (gtk_label_focus): Fix a missing return diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index b46a04fbdb..ca3cdef55a 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,13 @@ +2004-03-11 Federico Mena Quintero + + * gtk/gtkfilechooserdefault.c (remove_settings_signal): New + function, copied from gtkpathbar.c. + (gtk_file_chooser_default_dispose): Use remove_settings_signal() + rather than our own code. + (gtk_file_chooser_default_screen_changed): Use + remove_settings_signal(); this should handle per-screen settings + correctly. + Thu Mar 11 14:07:18 2004 Owen Taylor * gtk/gtklabel.c (gtk_label_focus): Fix a missing return diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index b46a04fbdb..ca3cdef55a 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,13 @@ +2004-03-11 Federico Mena Quintero + + * gtk/gtkfilechooserdefault.c (remove_settings_signal): New + function, copied from gtkpathbar.c. + (gtk_file_chooser_default_dispose): Use remove_settings_signal() + rather than our own code. + (gtk_file_chooser_default_screen_changed): Use + remove_settings_signal(); this should handle per-screen settings + correctly. + Thu Mar 11 14:07:18 2004 Owen Taylor * gtk/gtklabel.c (gtk_label_focus): Fix a missing return diff --git a/gtk/gtkfilechooserdefault.c b/gtk/gtkfilechooserdefault.c index c7d9d7e12a..bde958ff5d 100644 --- a/gtk/gtkfilechooserdefault.c +++ b/gtk/gtkfilechooserdefault.c @@ -3205,6 +3205,21 @@ gtk_file_chooser_default_get_property (GObject *object, } } +/* Removes the settings signal handler. It's safe to call multiple times */ +static void +remove_settings_signal (GtkFileChooserDefault *impl, + GdkScreen *screen) +{ + if (impl->settings_signal_id) + { + GtkSettings *settings; + + settings = gtk_settings_get_for_screen (screen); + g_signal_handler_disconnect (settings, + impl->settings_signal_id); + impl->settings_signal_id = 0; + } +} static void gtk_file_chooser_default_dispose (GObject *object) @@ -3217,14 +3232,7 @@ gtk_file_chooser_default_dispose (GObject *object) impl->extra_widget = NULL; } - if (impl->settings_signal_id) - { - GtkSettings *settings; - - settings = gtk_settings_get_for_screen (gtk_widget_get_screen (GTK_WIDGET (impl))); - g_signal_handler_disconnect (settings, impl->settings_signal_id); - impl->settings_signal_id = 0; - } + remove_settings_signal (impl, gtk_widget_get_screen (GTK_WIDGET (impl))); G_OBJECT_CLASS (parent_class)->dispose (object); } @@ -3322,6 +3330,7 @@ gtk_file_chooser_default_screen_changed (GtkWidget *widget, if (GTK_WIDGET_CLASS (parent_class)->screen_changed) GTK_WIDGET_CLASS (parent_class)->screen_changed (widget, previous_screen); + remove_settings_signal (impl, previous_screen); check_icon_theme (impl); g_signal_emit_by_name (widget, "default-size-changed");