diff options
author | Corey Berla <corey@berla.me> | 2023-04-13 07:16:09 -0700 |
---|---|---|
committer | Corey Berla <corey@berla.me> | 2023-04-24 22:48:10 +0000 |
commit | 93a714dfea89b0fae67d44c690cf3d69e270f24a (patch) | |
tree | f58b8c98b0cb21d704d32953c456b4e60765e8c8 | |
parent | 57b5cd68a63ac168e68e8296a67153429e66e04b (diff) | |
download | nautilus-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.c | 13 | ||||
-rw-r--r-- | src/nautilus-list-base-private.h | 5 | ||||
-rw-r--r-- | src/nautilus-list-base.c | 4 | ||||
-rw-r--r-- | src/nautilus-list-view.c | 39 |
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); } |