[rhythmbox] property-view: select 'all' row when single mode selection is cleared
- From: Jonathan Matthew <jmatthew src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [rhythmbox] property-view: select 'all' row when single mode selection is cleared
- Date: Sat, 20 Aug 2016 22:08:41 +0000 (UTC)
commit 70495e6f38f267b52067d88acc3476e091cf2122
Author: Jonathan Matthew <jonathan d14n org>
Date: Sun Aug 21 08:06:24 2016 +1000
property-view: select 'all' row when single mode selection is cleared
Multiple selection mode has always done this, so single selection mode
should do it too.
https://bugzilla.gnome.org/show_bug.cgi?id=770167
widgets/rb-property-view.c | 37 ++++++++++++++++++++++++-------------
1 files changed, 24 insertions(+), 13 deletions(-)
---
diff --git a/widgets/rb-property-view.c b/widgets/rb-property-view.c
index 7ccae79..51255fe 100644
--- a/widgets/rb-property-view.c
+++ b/widgets/rb-property-view.c
@@ -850,6 +850,22 @@ rb_property_view_get_selection (RBPropertyView *view)
}
static void
+select_all (RBPropertyView *view, GtkTreeSelection *selection, GtkTreeModel *model)
+{
+ GtkTreeIter iter;
+
+ g_signal_handlers_block_by_func (selection,
+ G_CALLBACK (rb_property_view_selection_changed_cb),
+ view);
+ gtk_tree_selection_unselect_all (selection);
+ if (gtk_tree_model_get_iter_first (model, &iter))
+ gtk_tree_selection_select_iter (selection, &iter);
+ g_signal_handlers_unblock_by_func (selection,
+ G_CALLBACK (rb_property_view_selection_changed_cb),
+ view);
+}
+
+static void
rb_property_view_selection_changed_cb (GtkTreeSelection *selection,
RBPropertyView *view)
{
@@ -884,18 +900,10 @@ rb_property_view_selection_changed_cb (GtkTreeSelection *selection,
g_list_foreach (selected_rows, (GFunc) gtk_tree_path_free, NULL);
g_list_free (selected_rows);
- if (is_all) {
- g_signal_handlers_block_by_func (G_OBJECT (view->priv->selection),
- G_CALLBACK (rb_property_view_selection_changed_cb),
- view);
- gtk_tree_selection_unselect_all (selection);
- if (gtk_tree_model_get_iter_first (model, &iter))
- gtk_tree_selection_select_iter (selection, &iter);
- g_signal_handlers_unblock_by_func (G_OBJECT (view->priv->selection),
- G_CALLBACK (rb_property_view_selection_changed_cb),
- view);
- }
- g_signal_emit (G_OBJECT (view), rb_property_view_signals[PROPERTIES_SELECTED], 0,
+ if (is_all)
+ select_all (view, selection, model);
+
+ g_signal_emit (view, rb_property_view_signals[PROPERTIES_SELECTED], 0,
selected_properties);
rb_list_deep_free (selected_properties);
} else {
@@ -903,8 +911,11 @@ rb_property_view_selection_changed_cb (GtkTreeSelection *selection,
gtk_tree_model_get (model, &iter,
RHYTHMDB_PROPERTY_MODEL_COLUMN_TITLE, &selected_prop,
RHYTHMDB_PROPERTY_MODEL_COLUMN_PRIORITY, &is_all, -1);
- g_signal_emit (G_OBJECT (view), rb_property_view_signals[PROPERTY_SELECTED], 0,
+ g_signal_emit (view, rb_property_view_signals[PROPERTY_SELECTED], 0,
is_all ? NULL : selected_prop);
+ } else {
+ select_all (view, selection, model);
+ g_signal_emit (view, rb_property_view_signals[PROPERTY_SELECTED], 0, NULL);
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]