summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorey Berla <corey@berla.me>2023-04-13 07:16:09 -0700
committerCorey Berla <corey@berla.me>2023-04-24 22:48:10 +0000
commit93a714dfea89b0fae67d44c690cf3d69e270f24a (patch)
treef58b8c98b0cb21d704d32953c456b4e60765e8c8
parent57b5cd68a63ac168e68e8296a67153429e66e04b (diff)
downloadnautilus-93a714dfea89b0fae67d44c690cf3d69e270f24a.tar.gz
view: Port to GtkColumnViewCell
This doesn't give us anything currently, but it's the direction that GtkColumnView is going in, so let's use it. Some minor modifications are necessary to list-base where GridView and ColumnView share code.
-rw-r--r--src/nautilus-grid-view.c13
-rw-r--r--src/nautilus-list-base-private.h5
-rw-r--r--src/nautilus-list-base.c4
-rw-r--r--src/nautilus-list-view.c39
4 files changed, 36 insertions, 25 deletions
diff --git a/src/nautilus-grid-view.c b/src/nautilus-grid-view.c
index 269e57072..599a0b2cb 100644
--- a/src/nautilus-grid-view.c
+++ b/src/nautilus-grid-view.c
@@ -31,6 +31,12 @@ G_DEFINE_TYPE (NautilusGridView, nautilus_grid_view, NAUTILUS_TYPE_LIST_BASE)
static guint get_icon_size_for_zoom_level (NautilusGridZoomLevel zoom_level);
+static NautilusViewItem *
+get_view_item (GtkListItem *listitem)
+{
+ return NAUTILUS_VIEW_ITEM (gtk_tree_list_row_get_item (GTK_TREE_LIST_ROW (gtk_list_item_get_item (listitem))));
+}
+
static gint
nautilus_grid_view_sort (gconstpointer a,
gconstpointer b,
@@ -444,7 +450,7 @@ bind_cell (GtkSignalListItemFactory *factory,
g_autoptr (NautilusViewItem) item = NULL;
cell = gtk_list_item_get_child (listitem);
- item = listitem_get_view_item (listitem);
+ item = get_view_item (listitem);
g_return_if_fail (item != NULL);
nautilus_view_item_set_item_ui (item, cell);
@@ -477,7 +483,7 @@ unbind_cell (GtkSignalListItemFactory *factory,
{
g_autoptr (NautilusViewItem) item = NULL;
- item = listitem_get_view_item (listitem);
+ item = get_view_item (listitem);
/* item may be NULL when row has just been destroyed. */
if (item != NULL)
@@ -495,7 +501,8 @@ setup_cell (GtkSignalListItemFactory *factory,
NautilusGridCell *cell;
cell = nautilus_grid_cell_new (NAUTILUS_LIST_BASE (self));
- setup_cell_common (listitem, NAUTILUS_VIEW_CELL (cell));
+ gtk_list_item_set_child (listitem, GTK_WIDGET (cell));
+ setup_cell_common (G_OBJECT (listitem), NAUTILUS_VIEW_CELL (cell));
setup_cell_hover (NAUTILUS_VIEW_CELL (cell));
nautilus_grid_cell_set_caption_attributes (cell, self->caption_attributes);
diff --git a/src/nautilus-list-base-private.h b/src/nautilus-list-base-private.h
index 54f26c03e..5c8404af3 100644
--- a/src/nautilus-list-base-private.h
+++ b/src/nautilus-list-base-private.h
@@ -26,7 +26,7 @@ void nautilus_list_base_setup_gestures (NautilusListBase *self);
void set_directory_sort_metadata (NautilusFile *file,
const gchar *sort_attribute,
gboolean reversed);
-void setup_cell_common (GtkListItem *listitem,
+void setup_cell_common (GObject *listitem,
NautilusViewCell *cell);
void setup_cell_hover (NautilusViewCell *cell);
void setup_cell_hover_inner_target (NautilusViewCell *cell,
@@ -35,7 +35,4 @@ void setup_cell_hover_inner_target (NautilusViewCel
void set_focus_item (NautilusListBase *self,
NautilusViewItem *item);
-#define listitem_get_view_item(li) \
-(NAUTILUS_VIEW_ITEM (gtk_tree_list_row_get_item (GTK_TREE_LIST_ROW (gtk_list_item_get_item (li)))))
-
G_END_DECLS
diff --git a/src/nautilus-list-base.c b/src/nautilus-list-base.c
index 5a1708c92..22440bacd 100644
--- a/src/nautilus-list-base.c
+++ b/src/nautilus-list-base.c
@@ -908,7 +908,7 @@ on_view_drop (GtkDropTarget *target,
}
void
-setup_cell_common (GtkListItem *listitem,
+setup_cell_common (GObject *listitem,
NautilusViewCell *cell)
{
GtkExpression *expression;
@@ -919,8 +919,6 @@ setup_cell_common (GtkListItem *listitem,
expression = gtk_property_expression_new (GTK_TYPE_TREE_LIST_ROW, expression, "item");
gtk_expression_bind (expression, cell, "item", listitem);
- gtk_list_item_set_child (listitem, GTK_WIDGET (cell));
-
controller = GTK_EVENT_CONTROLLER (gtk_gesture_click_new ());
gtk_widget_add_controller (GTK_WIDGET (cell), controller);
gtk_event_controller_set_propagation_phase (controller, GTK_PHASE_BUBBLE);
diff --git a/src/nautilus-list-view.c b/src/nautilus-list-view.c
index a9adff550..15202622f 100644
--- a/src/nautilus-list-view.c
+++ b/src/nautilus-list-view.c
@@ -63,6 +63,12 @@ static const char *default_columns_for_trash[] =
"name", "size", "trashed_on", NULL
};
+static NautilusViewItem *
+get_view_item (GtkColumnViewCell *cell)
+{
+ return NAUTILUS_VIEW_ITEM (gtk_tree_list_row_get_item (GTK_TREE_LIST_ROW (gtk_column_view_cell_get_item (cell))));
+}
+
static guint
get_icon_size_for_zoom_level (NautilusListZoomLevel zoom_level)
{
@@ -1122,14 +1128,15 @@ tree_expander_shortcut_cb (GtkWidget *widget,
static void
setup_name_cell (GtkSignalListItemFactory *factory,
- GtkListItem *listitem,
+ GtkColumnViewCell *listitem,
gpointer user_data)
{
NautilusListView *self = NAUTILUS_LIST_VIEW (user_data);
NautilusViewCell *cell;
cell = nautilus_name_cell_new (NAUTILUS_LIST_BASE (self));
- setup_cell_common (listitem, cell);
+ gtk_column_view_cell_set_child (listitem, GTK_WIDGET (cell));
+ setup_cell_common (G_OBJECT (listitem), cell);
setup_cell_hover_inner_target (cell, nautilus_name_cell_get_content (NAUTILUS_NAME_CELL (cell)));
nautilus_name_cell_set_path (NAUTILUS_NAME_CELL (cell),
@@ -1184,17 +1191,17 @@ on_row_children_changed (GObject *gobject,
static void
bind_name_cell (GtkSignalListItemFactory *factory,
- GtkListItem *listitem,
+ GtkColumnViewCell *listitem,
gpointer user_data)
{
GtkWidget *cell;
NautilusListView *self = user_data;
g_autoptr (NautilusViewItem) item = NULL;
- cell = gtk_list_item_get_child (listitem);
- item = listitem_get_view_item (listitem);
+ cell = gtk_column_view_cell_get_child (listitem);
+ item = get_view_item (listitem);
- nautilus_view_item_set_item_ui (item, gtk_list_item_get_child (listitem));
+ nautilus_view_item_set_item_ui (item, gtk_column_view_cell_get_child (listitem));
if (nautilus_view_cell_once (NAUTILUS_VIEW_CELL (cell)))
{
@@ -1213,7 +1220,7 @@ bind_name_cell (GtkSignalListItemFactory *factory,
if (self->expand_as_a_tree)
{
GtkTreeExpander *expander = nautilus_name_cell_get_expander (NAUTILUS_NAME_CELL (cell));
- GtkTreeListRow *row = GTK_TREE_LIST_ROW (gtk_list_item_get_item (listitem));
+ GtkTreeListRow *row = GTK_TREE_LIST_ROW (gtk_column_view_cell_get_item (listitem));
g_signal_connect_object (row,
"notify::expanded",
@@ -1228,13 +1235,13 @@ bind_name_cell (GtkSignalListItemFactory *factory,
static void
unbind_name_cell (GtkSignalListItemFactory *factory,
- GtkListItem *listitem,
+ GtkColumnViewCell *listitem,
gpointer user_data)
{
NautilusListView *self = user_data;
g_autoptr (NautilusViewItem) item = NULL;
- item = listitem_get_view_item (listitem);
+ item = get_view_item (listitem);
if (item == NULL)
{
/* The row is gone */
@@ -1246,10 +1253,10 @@ unbind_name_cell (GtkSignalListItemFactory *factory,
if (self->expand_as_a_tree)
{
- g_signal_handlers_disconnect_by_func (gtk_list_item_get_item (listitem),
+ g_signal_handlers_disconnect_by_func (gtk_column_view_cell_get_item (listitem),
on_row_expanded_changed,
self);
- g_signal_handlers_disconnect_by_func (gtk_list_item_get_item (listitem),
+ g_signal_handlers_disconnect_by_func (gtk_column_view_cell_get_item (listitem),
on_row_children_changed,
self);
}
@@ -1257,19 +1264,20 @@ unbind_name_cell (GtkSignalListItemFactory *factory,
static void
setup_star_cell (GtkSignalListItemFactory *factory,
- GtkListItem *listitem,
+ GtkColumnViewCell *listitem,
gpointer user_data)
{
NautilusViewCell *cell;
cell = nautilus_star_cell_new (NAUTILUS_LIST_BASE (user_data));
- setup_cell_common (listitem, cell);
+ gtk_column_view_cell_set_child (listitem, GTK_WIDGET (cell));
+ setup_cell_common (G_OBJECT (listitem), cell);
setup_cell_hover (cell);
}
static void
setup_label_cell (GtkSignalListItemFactory *factory,
- GtkListItem *listitem,
+ GtkColumnViewCell *listitem,
gpointer user_data)
{
NautilusListView *self = user_data;
@@ -1279,7 +1287,8 @@ setup_label_cell (GtkSignalListItemFactory *factory,
nautilus_column = g_hash_table_lookup (self->factory_to_column_map, factory);
cell = nautilus_label_cell_new (NAUTILUS_LIST_BASE (user_data), nautilus_column);
- setup_cell_common (listitem, cell);
+ gtk_column_view_cell_set_child (listitem, GTK_WIDGET (cell));
+ setup_cell_common (G_OBJECT (listitem), cell);
setup_cell_hover (cell);
}