[gtk+/places-sidebar: 9/53] Add gtk_places_sidebar_set_current_uri()
- From: Federico Mena Quintero <federico src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/places-sidebar: 9/53] Add gtk_places_sidebar_set_current_uri()
- Date: Tue, 4 Sep 2012 02:33:31 +0000 (UTC)
commit 1093e1433eeebbf5eed71bc9dc0a8fda3a051b35
Author: Federico Mena Quintero <federico gnome org>
Date: Wed Sep 7 17:55:21 2011 -0500
Add gtk_places_sidebar_set_current_uri()
And remove the code that updated the current URI automatically based
on a NautilusWindow.
Signed-off-by: Federico Mena Quintero <federico gnome org>
gtk/gtkplacessidebar.c | 83 +++++++++++++++++++++++++-----------------------
gtk/gtkplacessidebar.h | 4 ++-
2 files changed, 46 insertions(+), 41 deletions(-)
---
diff --git a/gtk/gtkplacessidebar.c b/gtk/gtkplacessidebar.c
index a0880eb..4ee7838 100644
--- a/gtk/gtkplacessidebar.c
+++ b/gtk/gtkplacessidebar.c
@@ -970,42 +970,6 @@ desktop_setting_changed_callback (gpointer user_data)
update_places (sidebar);
}
-static void
-loading_uri_callback (NautilusWindow *window,
- char *location,
- GtkPlacesSidebar *sidebar)
-{
- GtkTreeSelection *selection;
- GtkTreeIter iter;
- gboolean valid;
- char *uri;
-
- if (strcmp (sidebar->uri, location) != 0) {
- g_free (sidebar->uri);
- sidebar->uri = g_strdup (location);
-
- /* set selection if any place matches location */
- selection = gtk_tree_view_get_selection (sidebar->tree_view);
- gtk_tree_selection_unselect_all (selection);
- valid = gtk_tree_model_get_iter_first (sidebar->filter_model, &iter);
-
- while (valid) {
- gtk_tree_model_get (sidebar->filter_model, &iter,
- PLACES_SIDEBAR_COLUMN_URI, &uri,
- -1);
- if (uri != NULL) {
- if (strcmp (uri, location) == 0) {
- g_free (uri);
- gtk_tree_selection_select_iter (selection, &iter);
- break;
- }
- g_free (uri);
- }
- valid = gtk_tree_model_iter_next (sidebar->filter_model, &iter);
- }
- }
-}
-
/* Computes the appropriate row and position for dropping */
static gboolean
compute_drop_position (GtkTreeView *tree_view,
@@ -3340,10 +3304,6 @@ gtk_places_sidebar_set_parent_window (GtkPlacesSidebar *sidebar,
G_CALLBACK (update_places),
sidebar);
- g_signal_connect_object (window, "loading_uri",
- G_CALLBACK (loading_uri_callback),
- sidebar, 0);
-
g_signal_connect_swapped (nautilus_preferences, "changed::" NAUTILUS_PREFERENCES_ALWAYS_USE_BROWSER,
G_CALLBACK (bookmarks_popup_menu_detach_cb), sidebar);
@@ -3428,3 +3388,46 @@ nautilus_shortcuts_model_filter_new (GtkPlacesSidebar *sidebar,
return GTK_TREE_MODEL (model);
}
+
+/**
+ * gtk_places_sidebar_set_current_uri:
+ * @sidebar: a places sidebar
+ * @uri: URI to select, or #NULL for no current path
+ *
+ * Sets the URI that is being shown in the widgets surrounding the @sidebar. In turn,
+ * it will highlight that URI if it is being shown in the list of places, or it will
+ * unhighlight everything if the URI is not among the places in the list.
+ */
+void
+gtk_places_sidebar_set_current_uri (GtkPlacesSidebar *sidebar, const char *uri)
+{
+ GtkTreeSelection *selection;
+ GtkTreeIter iter;
+ gboolean valid;
+ char *iter_uri;
+
+ if (strcmp (sidebar->uri, uri) != 0) {
+ g_free (sidebar->uri);
+ sidebar->uri = g_strdup (uri);
+
+ /* set selection if any place matches the uri */
+ selection = gtk_tree_view_get_selection (sidebar->tree_view);
+ gtk_tree_selection_unselect_all (selection);
+ valid = gtk_tree_model_get_iter_first (sidebar->filter_model, &iter);
+
+ while (valid) {
+ gtk_tree_model_get (sidebar->filter_model, &iter,
+ PLACES_SIDEBAR_COLUMN_URI, &iter_uri,
+ -1);
+ if (iter_uri != NULL) {
+ if (strcmp (iter_uri, uri) == 0) {
+ g_free (iter_uri);
+ gtk_tree_selection_select_iter (selection, &iter);
+ break;
+ }
+ g_free (iter_uri);
+ }
+ valid = gtk_tree_model_iter_next (sidebar->filter_model, &iter);
+ }
+ }
+}
diff --git a/gtk/gtkplacessidebar.h b/gtk/gtkplacessidebar.h
index 2e5aee5..57057f8 100644
--- a/gtk/gtkplacessidebar.h
+++ b/gtk/gtkplacessidebar.h
@@ -41,10 +41,12 @@
typedef struct _GtkPlacesSidebar GtkPlacesSidebar;
typedef struct _GtkPlacesSidebarClass GtkPlacesSidebarClass;
-
GType gtk_places_sidebar_get_type (void);
GtkWidget *gtk_places_sidebar_new (void);
+/* FIXME: add an "uri" property so this can be set via g_object_set() */
+void gtk_places_sidebar_set_current_uri (GtkPlacesSidebar *sidebar, const char *uri);
+
G_END_DECLS
#endif /* __GTK_PLACES_SIDEBAR_H__ */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]