From a02ade37379d73e2231877889ac2179548d02d22 Mon Sep 17 00:00:00 2001 From: Michael Hasselmann Date: Sun, 22 Feb 2009 17:21:37 +0000 Subject: [PATCH] Added a check to not emit a "changed" signal when an already invalid 2009-02-19 Michael Hasselmann * gtk/gtkcombobox.c (gtk_combo_box_set_active_internal): Added a check to not emit a "changed" signal when an already invalid selection was set to invalid. svn path=/trunk/; revision=22390 --- ChangeLog | 6 ++++++ gtk/gtkcombobox.c | 12 +++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index eae5c630f7..aef3918edc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2009-02-19 Michael Hasselmann + + * gtk/gtkcombobox.c (gtk_combo_box_set_active_internal): + Added a check to not emit a "changed" signal when an already invalid + selection was set to invalid. + 2009-02-22 Matthias Clasen * gtk/gtk.symbols: diff --git a/gtk/gtkcombobox.c b/gtk/gtkcombobox.c index d0d73fcd58..57a975d0ef 100644 --- a/gtk/gtkcombobox.c +++ b/gtk/gtkcombobox.c @@ -4866,7 +4866,10 @@ gtk_combo_box_set_active_internal (GtkComboBox *combo_box, GtkTreePath *active_path; gint path_cmp; - if (path && gtk_tree_row_reference_valid (priv->active_row)) + /* Remember whether the initially active row is valid. */ + gboolean is_valid_row_reference = gtk_tree_row_reference_valid (priv->active_row); + + if (path && is_valid_row_reference) { active_path = gtk_tree_row_reference_get_path (priv->active_row); path_cmp = gtk_tree_path_compare (path, active_path); @@ -4895,6 +4898,13 @@ gtk_combo_box_set_active_internal (GtkComboBox *combo_box, if (priv->cell_view) gtk_cell_view_set_displayed_row (GTK_CELL_VIEW (priv->cell_view), NULL); + + /* + * Do not emit a "changed" signal when an already invalid selection was + * now set to invalid. + */ + if (!is_valid_row_reference) + return; } else {