summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libedataserverui/e-source-selector.c25
1 files changed, 14 insertions, 11 deletions
diff --git a/libedataserverui/e-source-selector.c b/libedataserverui/e-source-selector.c
index f64c192bd..f26ce4030 100644
--- a/libedataserverui/e-source-selector.c
+++ b/libedataserverui/e-source-selector.c
@@ -475,17 +475,20 @@ cell_toggled_callback (GtkCellRendererToggle *renderer,
gtk_tree_path_free (path);
} else {
source = E_SOURCE (data);
- if (source_is_selected (selector, source))
- unselect_source (selector, source);
- else
- select_source (selector, source);
-
- selector->priv->toggled_last = TRUE;
-
- gtk_tree_model_row_changed (model, path, &iter);
- g_signal_emit (selector, signals[SELECTION_CHANGED], 0);
-
- gtk_tree_path_free (path);
+
+ if (e_source_selector_peek_primary_selection (selector) != source) {
+ if (source_is_selected (selector, source))
+ unselect_source (selector, source);
+ else
+ select_source (selector, source);
+
+ selector->priv->toggled_last = TRUE;
+
+ gtk_tree_model_row_changed (model, path, &iter);
+ g_signal_emit (selector, signals[SELECTION_CHANGED], 0);
+
+ gtk_tree_path_free (path);
+ }
}
g_object_unref (data);