summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>2016-03-02 00:55:42 -0300
committerGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>2016-06-20 12:36:28 -0300
commit1b31223df74e0097e8a398e1d001900e18a88c6f (patch)
tree1114ddbaa234e580a40086692719b357b8088d3e
parent69f30e714e87095ad5715c4c0ac5ec38ef8c0a05 (diff)
downloadnautilus-1b31223df74e0097e8a398e1d001900e18a88c6f.tar.gz
view: add NautilusView::selection property
Currently we don't have any way to track selection changes, although NautilusView exposes selection. This is an inconsistency in code, and should be avoided. Fix that by adding a NautilusView::selection property and deprecating the NautilusFilesView::selection-changed signal. https://bugzilla.gnome.org/show_bug.cgi?id=767874
-rw-r--r--src/nautilus-files-view.c34
-rw-r--r--src/nautilus-places-view.c9
-rw-r--r--src/nautilus-trash-bar.c5
-rw-r--r--src/nautilus-view.c11
4 files changed, 40 insertions, 19 deletions
diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c
index a386e19c0..1e2c93441 100644
--- a/src/nautilus-files-view.c
+++ b/src/nautilus-files-view.c
@@ -135,7 +135,6 @@ enum {
FILE_CHANGED,
MOVE_COPY_ITEMS,
REMOVE_FILE,
- SELECTION_CHANGED,
TRASH,
DELETE,
LAST_SIGNAL
@@ -150,6 +149,7 @@ enum {
PROP_IS_LOADING,
PROP_LOCATION,
PROP_SEARCH_QUERY,
+ PROP_SELECTION,
NUM_PROPERTIES
};
@@ -2793,6 +2793,8 @@ nautilus_files_view_set_selection (NautilusView *nautilus_files_view,
*/
nautilus_files_view_call_set_selection (view, selection);
nautilus_files_view_reveal_selection (view);
+
+ g_object_notify (G_OBJECT (view), "selection");
} else {
/* If we are still loading, set the list of pending URIs instead.
* done_loading() will eventually select the pending URIs and reveal them.
@@ -3105,12 +3107,6 @@ nautilus_files_view_display_selection_info (NautilusFilesView *view)
}
static void
-nautilus_files_view_send_selection_change (NautilusFilesView *view)
-{
- g_signal_emit (view, signals[SELECTION_CHANGED], 0);
-}
-
-static void
nautilus_files_view_set_location (NautilusView *view,
GFile *location)
{
@@ -3236,6 +3232,8 @@ done_loading (NautilusFilesView *view,
}
}
nautilus_files_view_display_selection_info (view);
+
+ g_object_notify (G_OBJECT (view), "selection");
}
view->details->loading = FALSE;
@@ -3708,7 +3706,7 @@ process_old_files (NautilusFilesView *view)
/* Send a selection change since some file names could
* have changed.
*/
- nautilus_files_view_send_selection_change (view);
+ g_object_notify (G_OBJECT (view), "selection");
}
g_signal_emit (view, signals[END_FILE_CHANGES], 0);
@@ -3746,7 +3744,8 @@ display_selection_info_idle_callback (gpointer data)
view->details->display_selection_idle_id = 0;
nautilus_files_view_display_selection_info (view);
- nautilus_files_view_send_selection_change (view);
+
+ g_object_notify (G_OBJECT (view), "selection");
g_object_unref (G_OBJECT (view));
@@ -7644,6 +7643,10 @@ nautilus_files_view_get_property (GObject *object,
g_value_set_object (value, view->details->search_query);
break;
+ case PROP_SELECTION:
+ g_value_set_pointer (value, nautilus_view_get_selection (NAUTILUS_VIEW (view)));
+ break;
+
default:
g_assert_not_reached ();
@@ -7687,6 +7690,10 @@ nautilus_files_view_set_property (GObject *object,
nautilus_view_set_search_query (NAUTILUS_VIEW (directory_view), g_value_get_object (value));
break;
+ case PROP_SELECTION:
+ nautilus_view_set_selection (NAUTILUS_VIEW (directory_view), g_value_get_pointer (value));
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -8074,14 +8081,6 @@ nautilus_files_view_class_init (NautilusFilesViewClass *klass)
NULL, NULL,
g_cclosure_marshal_generic,
G_TYPE_NONE, 2, NAUTILUS_TYPE_FILE, NAUTILUS_TYPE_DIRECTORY);
- signals[SELECTION_CHANGED] =
- g_signal_new ("selection-changed",
- G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_LAST,
- 0,
- NULL, NULL,
- g_cclosure_marshal_VOID__VOID,
- G_TYPE_NONE, 0);
klass->get_backing_uri = real_get_backing_uri;
klass->using_manual_layout = real_using_manual_layout;
@@ -8117,6 +8116,7 @@ nautilus_files_view_class_init (NautilusFilesViewClass *klass)
g_object_class_override_property (oclass, PROP_IS_SEARCH, "is-searching");
g_object_class_override_property (oclass, PROP_LOCATION, "location");
g_object_class_override_property (oclass, PROP_SEARCH_QUERY, "search-query");
+ g_object_class_override_property (oclass, PROP_SELECTION, "selection");
}
static void
diff --git a/src/nautilus-places-view.c b/src/nautilus-places-view.c
index f6214f880..96d290ed9 100644
--- a/src/nautilus-places-view.c
+++ b/src/nautilus-places-view.c
@@ -50,6 +50,7 @@ enum {
PROP_VIEW_WIDGET,
PROP_IS_LOADING,
PROP_IS_SEARCHING,
+ PROP_SELECTION,
LAST_PROP
};
@@ -164,6 +165,10 @@ nautilus_places_view_get_property (GObject *object,
g_value_set_object (value, nautilus_view_get_view_widget (view));
break;
+ case PROP_SELECTION:
+ g_value_set_pointer (value, NULL);
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
@@ -186,6 +191,9 @@ nautilus_places_view_set_property (GObject *object,
nautilus_view_set_search_query (view, g_value_get_object (value));
break;
+ case PROP_SELECTION:
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
@@ -336,6 +344,7 @@ nautilus_places_view_class_init (NautilusPlacesViewClass *klass)
g_object_class_override_property (object_class, PROP_IS_SEARCHING, "is-searching");
g_object_class_override_property (object_class, PROP_LOCATION, "location");
g_object_class_override_property (object_class, PROP_SEARCH_QUERY, "search-query");
+ g_object_class_override_property (object_class, PROP_SELECTION, "selection");
g_object_class_override_property (object_class, PROP_VIEW_WIDGET, "view-widget");
}
diff --git a/src/nautilus-trash-bar.c b/src/nautilus-trash-bar.c
index dd4327a63..b2139dbf2 100644
--- a/src/nautilus-trash-bar.c
+++ b/src/nautilus-trash-bar.c
@@ -54,6 +54,7 @@ G_DEFINE_TYPE (NautilusTrashBar, nautilus_trash_bar, GTK_TYPE_INFO_BAR);
static void
selection_changed_cb (NautilusFilesView *view,
+ GParamSpec *pspec,
NautilusTrashBar *bar)
{
GList *selection;
@@ -73,10 +74,10 @@ static void
connect_view_and_update_button (NautilusTrashBar *bar)
{
bar->priv->selection_handler_id =
- g_signal_connect (bar->priv->view, "selection-changed",
+ g_signal_connect (bar->priv->view, "notify::selection",
G_CALLBACK (selection_changed_cb), bar);
- selection_changed_cb (bar->priv->view, bar);
+ selection_changed_cb (bar->priv->view, NULL, bar);
}
static void
diff --git a/src/nautilus-view.c b/src/nautilus-view.c
index f14b9f0cd..30f72f90f 100644
--- a/src/nautilus-view.c
+++ b/src/nautilus-view.c
@@ -96,6 +96,17 @@ nautilus_view_default_init (NautilusViewInterface *iface)
"The search query being performed on the view",
NAUTILUS_TYPE_QUERY,
G_PARAM_READWRITE));
+
+ /**
+ * NautilusView::selection:
+ *
+ * The current selection of the view.
+ */
+ g_object_interface_install_property (iface,
+ g_param_spec_pointer ("selection",
+ "Selection of the view",
+ "The selection of the view",
+ G_PARAM_READWRITE));
}
/**