[nautilus] places-sidebar: don't use an additional GtkTreeModelFilter
- From: Cosimo Cecchi <cosimoc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus] places-sidebar: don't use an additional GtkTreeModelFilter
- Date: Mon, 6 Feb 2012 23:21:04 +0000 (UTC)
commit 7e7a21daf15055aab8639ba684ce34a6683073fa
Author: Cosimo Cecchi <cosimoc gnome org>
Date: Mon Feb 6 18:10:09 2012 -0500
places-sidebar: don't use an additional GtkTreeModelFilter
We were using it just for GtkTreeDragSourceIface, which we can implement
ourselves.
src/nautilus-places-sidebar.c | 190 ++++++++++++++++++-----------------------
1 files changed, 85 insertions(+), 105 deletions(-)
---
diff --git a/src/nautilus-places-sidebar.c b/src/nautilus-places-sidebar.c
index 23fd751..734d7f9 100644
--- a/src/nautilus-places-sidebar.c
+++ b/src/nautilus-places-sidebar.c
@@ -65,7 +65,6 @@ typedef struct {
GtkCellRenderer *eject_icon_cell_renderer;
char *uri;
GtkListStore *store;
- GtkTreeModel *filter_model;
NautilusWindow *window;
NautilusBookmarkList *bookmarks;
GVolumeMonitor *volume_monitor;
@@ -188,30 +187,24 @@ static const GtkTargetEntry nautilus_shortcuts_drop_targets [] = {
/* Drag and drop interface declarations */
typedef struct {
- GtkTreeModelFilter parent;
+ GtkListStore parent;
NautilusPlacesSidebar *sidebar;
-} NautilusShortcutsModelFilter;
+} NautilusShortcutsModel;
typedef struct {
- GtkTreeModelFilterClass parent_class;
-} NautilusShortcutsModelFilterClass;
+ GtkListStoreClass parent_class;
+} NautilusShortcutsModelClass;
-#define NAUTILUS_SHORTCUTS_MODEL_FILTER_TYPE (_nautilus_shortcuts_model_filter_get_type ())
-#define NAUTILUS_SHORTCUTS_MODEL_FILTER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NAUTILUS_SHORTCUTS_MODEL_FILTER_TYPE, NautilusShortcutsModelFilter))
+#define NAUTILUS_TYPE_SHORTCUTS_MODEL (_nautilus_shortcuts_model_get_type ())
+#define NAUTILUS_SHORTCUTS_MODEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NAUTILUS_SHORTCUTS_MODEL_TYPE, NautilusShortcutsModel))
-GType _nautilus_shortcuts_model_filter_get_type (void);
-static void nautilus_shortcuts_model_filter_drag_source_iface_init (GtkTreeDragSourceIface *iface);
-
-G_DEFINE_TYPE_WITH_CODE (NautilusShortcutsModelFilter,
- _nautilus_shortcuts_model_filter,
- GTK_TYPE_TREE_MODEL_FILTER,
+GType _nautilus_shortcuts_model_get_type (void);
+static void _nautilus_shortcuts_model_drag_source_init (GtkTreeDragSourceIface *iface);
+G_DEFINE_TYPE_WITH_CODE (NautilusShortcutsModel, _nautilus_shortcuts_model, GTK_TYPE_LIST_STORE,
G_IMPLEMENT_INTERFACE (GTK_TYPE_TREE_DRAG_SOURCE,
- nautilus_shortcuts_model_filter_drag_source_iface_init));
-
-static GtkTreeModel *nautilus_shortcuts_model_filter_new (NautilusPlacesSidebar *sidebar,
- GtkTreeModel *child_model,
- GtkTreePath *root);
+ _nautilus_shortcuts_model_drag_source_init));
+static GtkListStore *nautilus_shortcuts_model_new (NautilusPlacesSidebar *sidebar);
G_DEFINE_TYPE (NautilusPlacesSidebar, nautilus_places_sidebar, GTK_TYPE_SCROLLED_WINDOW);
@@ -307,7 +300,7 @@ add_heading (NautilusPlacesSidebar *sidebar,
SectionType section_type,
const gchar *title)
{
- GtkTreeIter iter, child_iter;
+ GtkTreeIter iter;
gtk_list_store_append (sidebar->store, &iter);
gtk_list_store_set (sidebar->store, &iter,
@@ -318,12 +311,7 @@ add_heading (NautilusPlacesSidebar *sidebar,
PLACES_SIDEBAR_COLUMN_NO_EJECT, TRUE,
-1);
- gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (sidebar->filter_model));
- gtk_tree_model_filter_convert_child_iter_to_iter (GTK_TREE_MODEL_FILTER (sidebar->filter_model),
- &child_iter,
- &iter);
-
- return child_iter;
+ return iter;
}
static void
@@ -366,7 +354,7 @@ add_place (NautilusPlacesSidebar *sidebar,
const char *tooltip)
{
GdkPixbuf *pixbuf;
- GtkTreeIter iter, child_iter;
+ GtkTreeIter iter;
GdkPixbuf *eject;
NautilusIconInfo *icon_info;
int icon_size;
@@ -421,11 +409,8 @@ add_place (NautilusPlacesSidebar *sidebar,
if (pixbuf != NULL) {
g_object_unref (pixbuf);
}
- gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (sidebar->filter_model));
- gtk_tree_model_filter_convert_child_iter_to_iter (GTK_TREE_MODEL_FILTER (sidebar->filter_model),
- &child_iter,
- &iter);
- return child_iter;
+
+ return iter;
}
static void
@@ -1049,10 +1034,11 @@ loading_uri_callback (NautilusWindow *window,
/* 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);
+ valid = gtk_tree_model_get_iter_first (GTK_TREE_MODEL (sidebar->store),
+ &iter);
while (valid) {
- gtk_tree_model_get (sidebar->filter_model, &iter,
+ gtk_tree_model_get (GTK_TREE_MODEL (sidebar->store), &iter,
PLACES_SIDEBAR_COLUMN_URI, &uri,
-1);
if (uri != NULL) {
@@ -1063,7 +1049,8 @@ loading_uri_callback (NautilusWindow *window,
}
g_free (uri);
}
- valid = gtk_tree_model_iter_next (sidebar->filter_model, &iter);
+ valid = gtk_tree_model_iter_next (GTK_TREE_MODEL (sidebar->store),
+ &iter);
}
}
}
@@ -1239,9 +1226,9 @@ drag_motion_callback (GtkTreeView *tree_view,
if (sidebar->drag_list == NULL) {
action = 0;
} else {
- gtk_tree_model_get_iter (sidebar->filter_model,
+ gtk_tree_model_get_iter (GTK_TREE_MODEL (sidebar->store),
&iter, path);
- gtk_tree_model_get (GTK_TREE_MODEL (sidebar->filter_model),
+ gtk_tree_model_get (GTK_TREE_MODEL (sidebar->store),
&iter,
PLACES_SIDEBAR_COLUMN_URI, &uri,
-1);
@@ -1393,7 +1380,7 @@ reorder_bookmarks (NautilusPlacesSidebar *sidebar,
return;
}
- gtk_tree_model_get (GTK_TREE_MODEL (sidebar->filter_model), &iter,
+ gtk_tree_model_get (GTK_TREE_MODEL (sidebar->store), &iter,
PLACES_SIDEBAR_COLUMN_ROW_TYPE, &type,
PLACES_SIDEBAR_COLUMN_INDEX, &old_position,
-1);
@@ -1672,7 +1659,7 @@ bookmarks_check_popup_sensitivity (NautilusPlacesSidebar *sidebar)
}
if (get_selected_iter (sidebar, &iter)) {
- gtk_tree_model_get (GTK_TREE_MODEL (sidebar->filter_model), &iter,
+ gtk_tree_model_get (GTK_TREE_MODEL (sidebar->store), &iter,
PLACES_SIDEBAR_COLUMN_ROW_TYPE, &type,
PLACES_SIDEBAR_COLUMN_DRIVE, &drive,
PLACES_SIDEBAR_COLUMN_VOLUME, &volume,
@@ -1993,7 +1980,7 @@ rename_selected_bookmark (NautilusPlacesSidebar *sidebar)
PlaceType type;
if (get_selected_iter (sidebar, &iter)) {
- gtk_tree_model_get (GTK_TREE_MODEL (sidebar->filter_model), &iter,
+ gtk_tree_model_get (GTK_TREE_MODEL (sidebar->store), &iter,
PLACES_SIDEBAR_COLUMN_ROW_TYPE, &type,
-1);
@@ -2001,7 +1988,7 @@ rename_selected_bookmark (NautilusPlacesSidebar *sidebar)
return;
}
- path = gtk_tree_model_get_path (GTK_TREE_MODEL (sidebar->filter_model), &iter);
+ path = gtk_tree_model_get_path (GTK_TREE_MODEL (sidebar->store), &iter);
column = gtk_tree_view_get_column (GTK_TREE_VIEW (sidebar->tree_view), 0);
renderers = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (column));
cell = g_list_nth_data (renderers, 6);
@@ -2032,7 +2019,7 @@ remove_selected_bookmarks (NautilusPlacesSidebar *sidebar)
return;
}
- gtk_tree_model_get (GTK_TREE_MODEL (sidebar->filter_model), &iter,
+ gtk_tree_model_get (GTK_TREE_MODEL (sidebar->store), &iter,
PLACES_SIDEBAR_COLUMN_ROW_TYPE, &type,
-1);
@@ -2040,7 +2027,7 @@ remove_selected_bookmarks (NautilusPlacesSidebar *sidebar)
return;
}
- gtk_tree_model_get (GTK_TREE_MODEL (sidebar->filter_model), &iter,
+ gtk_tree_model_get (GTK_TREE_MODEL (sidebar->store), &iter,
PLACES_SIDEBAR_COLUMN_INDEX, &index,
-1);
@@ -2065,7 +2052,7 @@ mount_shortcut_cb (GtkMenuItem *item,
return;
}
- gtk_tree_model_get (GTK_TREE_MODEL (sidebar->filter_model), &iter,
+ gtk_tree_model_get (GTK_TREE_MODEL (sidebar->store), &iter,
PLACES_SIDEBAR_COLUMN_VOLUME, &volume,
-1);
@@ -2105,7 +2092,7 @@ do_unmount_selection (NautilusPlacesSidebar *sidebar)
return;
}
- gtk_tree_model_get (GTK_TREE_MODEL (sidebar->filter_model), &iter,
+ gtk_tree_model_get (GTK_TREE_MODEL (sidebar->store), &iter,
PLACES_SIDEBAR_COLUMN_MOUNT, &mount,
-1);
@@ -2241,7 +2228,7 @@ eject_shortcut_cb (GtkMenuItem *item,
return;
}
- gtk_tree_model_get (GTK_TREE_MODEL (sidebar->filter_model), &iter,
+ gtk_tree_model_get (GTK_TREE_MODEL (sidebar->store), &iter,
PLACES_SIDEBAR_COLUMN_MOUNT, &mount,
PLACES_SIDEBAR_COLUMN_VOLUME, &volume,
PLACES_SIDEBAR_COLUMN_DRIVE, &drive,
@@ -2262,7 +2249,7 @@ eject_or_unmount_bookmark (NautilusPlacesSidebar *sidebar,
GDrive *drive;
gboolean ret;
- model = GTK_TREE_MODEL (sidebar->filter_model);
+ model = GTK_TREE_MODEL (sidebar->store);
if (!path) {
return FALSE;
@@ -2310,7 +2297,7 @@ eject_or_unmount_selection (NautilusPlacesSidebar *sidebar)
return FALSE;
}
- path = gtk_tree_model_get_path (GTK_TREE_MODEL (sidebar->filter_model), &iter);
+ path = gtk_tree_model_get_path (GTK_TREE_MODEL (sidebar->store), &iter);
if (path == NULL) {
return FALSE;
}
@@ -2357,7 +2344,7 @@ rescan_shortcut_cb (GtkMenuItem *item,
return;
}
- gtk_tree_model_get (GTK_TREE_MODEL (sidebar->filter_model), &iter,
+ gtk_tree_model_get (GTK_TREE_MODEL (sidebar->store), &iter,
PLACES_SIDEBAR_COLUMN_DRIVE, &drive,
-1);
@@ -2402,7 +2389,7 @@ start_shortcut_cb (GtkMenuItem *item,
return;
}
- gtk_tree_model_get (GTK_TREE_MODEL (sidebar->filter_model), &iter,
+ gtk_tree_model_get (GTK_TREE_MODEL (sidebar->store), &iter,
PLACES_SIDEBAR_COLUMN_DRIVE, &drive,
-1);
@@ -2457,7 +2444,7 @@ stop_shortcut_cb (GtkMenuItem *item,
return;
}
- gtk_tree_model_get (GTK_TREE_MODEL (sidebar->filter_model), &iter,
+ gtk_tree_model_get (GTK_TREE_MODEL (sidebar->store), &iter,
PLACES_SIDEBAR_COLUMN_DRIVE, &drive,
-1);
@@ -2878,11 +2865,11 @@ update_eject_buttons (NautilusPlacesSidebar *sidebar,
}
if (path) {
- gtk_tree_model_get_iter (GTK_TREE_MODEL (sidebar->filter_model),
+ gtk_tree_model_get_iter (GTK_TREE_MODEL (sidebar->store),
&iter,
path);
- gtk_tree_model_get (GTK_TREE_MODEL (sidebar->filter_model),
+ gtk_tree_model_get (GTK_TREE_MODEL (sidebar->store),
&iter,
PLACES_SIDEBAR_COLUMN_EJECT, &icon_visible,
-1);
@@ -2901,7 +2888,6 @@ update_eject_buttons (NautilusPlacesSidebar *sidebar,
&iter,
PLACES_SIDEBAR_COLUMN_EJECT_ICON, get_eject_icon (sidebar, FALSE),
-1);
- gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (sidebar->filter_model));
gtk_tree_path_free (sidebar->eject_highlight_path);
sidebar->eject_highlight_path = NULL;
@@ -2923,7 +2909,6 @@ update_eject_buttons (NautilusPlacesSidebar *sidebar,
&iter,
PLACES_SIDEBAR_COLUMN_EJECT_ICON, get_eject_icon (sidebar, TRUE),
-1);
- gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (sidebar->filter_model));
sidebar->eject_highlight_path = gtk_tree_path_copy (path);
}
@@ -3018,8 +3003,8 @@ bookmarks_edited (GtkCellRenderer *cell,
g_object_set (cell, "editable", FALSE, NULL);
path = gtk_tree_path_new_from_string (path_string);
- gtk_tree_model_get_iter (GTK_TREE_MODEL (sidebar->filter_model), &iter, path);
- gtk_tree_model_get (GTK_TREE_MODEL (sidebar->filter_model), &iter,
+ gtk_tree_model_get_iter (GTK_TREE_MODEL (sidebar->store), &iter, path);
+ gtk_tree_model_get (GTK_TREE_MODEL (sidebar->store), &iter,
PLACES_SIDEBAR_COLUMN_INDEX, &index,
-1);
gtk_tree_path_free (path);
@@ -3312,23 +3297,7 @@ nautilus_places_sidebar_init (NautilusPlacesSidebar *sidebar)
gtk_tree_view_column_set_max_width (GTK_TREE_VIEW_COLUMN (col), NAUTILUS_ICON_SIZE_SMALLER);
gtk_tree_view_append_column (tree_view, col);
- sidebar->store = gtk_list_store_new (PLACES_SIDEBAR_COLUMN_COUNT,
- G_TYPE_INT,
- G_TYPE_STRING,
- G_TYPE_DRIVE,
- G_TYPE_VOLUME,
- G_TYPE_MOUNT,
- G_TYPE_STRING,
- GDK_TYPE_PIXBUF,
- G_TYPE_INT,
- G_TYPE_BOOLEAN,
- G_TYPE_BOOLEAN,
- G_TYPE_BOOLEAN,
- G_TYPE_STRING,
- GDK_TYPE_PIXBUF,
- G_TYPE_INT,
- G_TYPE_STRING);
-
+ sidebar->store = nautilus_shortcuts_model_new (sidebar);
gtk_tree_view_set_tooltip_column (tree_view, PLACES_SIDEBAR_COLUMN_TOOLTIP);
gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (sidebar->store),
PLACES_SIDEBAR_COLUMN_NAME,
@@ -3338,11 +3307,7 @@ nautilus_places_sidebar_init (NautilusPlacesSidebar *sidebar)
places_sidebar_sort_func,
sidebar, NULL);
- sidebar->filter_model = nautilus_shortcuts_model_filter_new (sidebar,
- GTK_TREE_MODEL (sidebar->store),
- NULL);
-
- gtk_tree_view_set_model (tree_view, sidebar->filter_model);
+ gtk_tree_view_set_model (tree_view, GTK_TREE_MODEL (sidebar->store));
gtk_container_add (GTK_CONTAINER (sidebar), GTK_WIDGET (tree_view));
gtk_widget_show (GTK_WIDGET (tree_view));
@@ -3436,7 +3401,6 @@ nautilus_places_sidebar_dispose (GObject *object)
g_clear_object (&sidebar->store);
g_clear_object (&sidebar->bookmarks);
- g_clear_object (&sidebar->filter_model);
eel_remove_weak_pointer (&(sidebar->go_to_after_mount_slot));
@@ -3558,21 +3522,11 @@ nautilus_places_sidebar_new (NautilusWindow *window)
/* Drag and drop interfaces */
-static void
-_nautilus_shortcuts_model_filter_class_init (NautilusShortcutsModelFilterClass *class)
-{
-}
-
-static void
-_nautilus_shortcuts_model_filter_init (NautilusShortcutsModelFilter *model)
-{
- model->sidebar = NULL;
-}
-
/* GtkTreeDragSource::row_draggable implementation for the shortcuts filter model */
+
static gboolean
-nautilus_shortcuts_model_filter_row_draggable (GtkTreeDragSource *drag_source,
- GtkTreePath *path)
+nautilus_shortcuts_model_row_draggable (GtkTreeDragSource *drag_source,
+ GtkTreePath *path)
{
GtkTreeModel *model;
GtkTreeIter iter;
@@ -3593,26 +3547,52 @@ nautilus_shortcuts_model_filter_row_draggable (GtkTreeDragSource *drag_source,
return FALSE;
}
-/* Fill the GtkTreeDragSourceIface vtable */
static void
-nautilus_shortcuts_model_filter_drag_source_iface_init (GtkTreeDragSourceIface *iface)
+_nautilus_shortcuts_model_class_init (NautilusShortcutsModelClass *klass)
+{
+
+}
+
+static void
+_nautilus_shortcuts_model_init (NautilusShortcutsModel *model)
{
- iface->row_draggable = nautilus_shortcuts_model_filter_row_draggable;
+ model->sidebar = NULL;
}
-static GtkTreeModel *
-nautilus_shortcuts_model_filter_new (NautilusPlacesSidebar *sidebar,
- GtkTreeModel *child_model,
- GtkTreePath *root)
+static void
+_nautilus_shortcuts_model_drag_source_init (GtkTreeDragSourceIface *iface)
{
- NautilusShortcutsModelFilter *model;
+ iface->row_draggable = nautilus_shortcuts_model_row_draggable;
+}
- model = g_object_new (NAUTILUS_SHORTCUTS_MODEL_FILTER_TYPE,
- "child-model", child_model,
- "virtual-root", root,
- NULL);
+static GtkListStore *
+nautilus_shortcuts_model_new (NautilusPlacesSidebar *sidebar)
+{
+ NautilusShortcutsModel *model;
+ GType model_types[PLACES_SIDEBAR_COLUMN_COUNT] = {
+ G_TYPE_INT,
+ G_TYPE_STRING,
+ G_TYPE_DRIVE,
+ G_TYPE_VOLUME,
+ G_TYPE_MOUNT,
+ G_TYPE_STRING,
+ GDK_TYPE_PIXBUF,
+ G_TYPE_INT,
+ G_TYPE_BOOLEAN,
+ G_TYPE_BOOLEAN,
+ G_TYPE_BOOLEAN,
+ G_TYPE_STRING,
+ GDK_TYPE_PIXBUF,
+ G_TYPE_INT,
+ G_TYPE_STRING
+ };
+ model = g_object_new (NAUTILUS_TYPE_SHORTCUTS_MODEL, NULL);
model->sidebar = sidebar;
- return GTK_TREE_MODEL (model);
+ gtk_list_store_set_column_types (GTK_LIST_STORE (model),
+ PLACES_SIDEBAR_COLUMN_COUNT,
+ model_types);
+
+ return GTK_LIST_STORE (model);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]