diff options
author | Corey Berla <corey@berla.me> | 2022-12-29 11:31:32 -0800 |
---|---|---|
committer | Corey Berla <corey@berla.me> | 2022-12-29 23:57:21 +0000 |
commit | d674de91ddb0816600d844ef6b181bc873476f84 (patch) | |
tree | 266bc0211bec8680bab15da61265d26753f8f382 | |
parent | d4061be4c72b952f1c20ec770f910ee311850478 (diff) | |
download | nautilus-d674de91ddb0816600d844ef6b181bc873476f84.tar.gz |
Revert "list-view: Only insert columns when they should be visible"
This reverts commit edc2d4ba20252c22dc3645b8e0173dbcd58ac9e9.
This is possible because of enhancements in GTK.
See: https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/5374
-rw-r--r-- | src/nautilus-list-view.c | 43 |
1 files changed, 28 insertions, 15 deletions
diff --git a/src/nautilus-list-view.c b/src/nautilus-list-view.c index b9b96f02a..45291f168 100644 --- a/src/nautilus-list-view.c +++ b/src/nautilus-list-view.c @@ -45,8 +45,6 @@ struct _NautilusListView GtkWidget *column_editor; GHashTable *factory_to_column_map; - GHashTable *all_view_columns_hash; - /* Column sort hack state */ gboolean column_header_was_clicked; GQuark clicked_column_attribute_q; @@ -123,6 +121,7 @@ apply_columns_settings (NautilusListView *self, g_autoptr (GList) view_columns = NULL; GListModel *old_view_columns; g_autoptr (GHashTable) visible_columns_hash = NULL; + g_autoptr (GHashTable) old_view_columns_hash = NULL; int column_i = 0; file = nautilus_files_view_get_directory_as_file (NAUTILUS_FILES_VIEW (self)); @@ -167,7 +166,25 @@ apply_columns_settings (NautilusListView *self, } } + old_view_columns_hash = g_hash_table_new_full (g_str_hash, + g_str_equal, + (GDestroyNotify) g_free, + NULL); old_view_columns = gtk_column_view_get_columns (self->view_ui); + for (guint i = 0; i < g_list_model_get_n_items (old_view_columns); i++) + { + g_autoptr (GtkColumnViewColumn) view_column = NULL; + GtkListItemFactory *factory; + NautilusColumn *nautilus_column; + gchar *name; + + view_column = g_list_model_get_item (old_view_columns, i); + factory = gtk_column_view_column_get_factory (view_column); + nautilus_column = g_hash_table_lookup (self->factory_to_column_map, factory); + g_object_get (nautilus_column, "name", &name, NULL); + g_hash_table_insert (old_view_columns_hash, name, view_column); + } + for (GList *l = all_columns; l != NULL; l = l->next) { g_autofree char *name = NULL; @@ -180,7 +197,7 @@ apply_columns_settings (NautilusListView *self, { GtkColumnViewColumn *view_column; - view_column = g_hash_table_lookup (self->all_view_columns_hash, name); + view_column = g_hash_table_lookup (old_view_columns_hash, name); if (view_column != NULL) { view_columns = g_list_prepend (view_columns, view_column); @@ -198,7 +215,11 @@ apply_columns_settings (NautilusListView *self, view_column = g_list_model_get_item (old_view_columns, i); if (g_list_find (view_columns, view_column) == NULL) { - gtk_column_view_remove_column (self->view_ui, view_column); + gtk_column_view_column_set_visible (view_column, FALSE); + } + else + { + gtk_column_view_column_set_visible (view_column, TRUE); } } @@ -745,11 +766,9 @@ real_begin_loading (NautilusFilesView *files_view) NautilusListView *self = NAUTILUS_LIST_VIEW (files_view); NautilusFile *file; - /* We need to setup the columns before chaining up */ - update_columns_settings_from_metadata_and_preferences (self); - NAUTILUS_FILES_VIEW_CLASS (nautilus_list_view_parent_class)->begin_loading (files_view); + update_columns_settings_from_metadata_and_preferences (self); self->clicked_column_attribute_q = 0; self->path_attribute_q = 0; @@ -1076,10 +1095,6 @@ setup_view_columns (NautilusListView *self) g_direct_equal, NULL, g_object_unref); - self->all_view_columns_hash = g_hash_table_new_full (g_str_hash, - g_str_equal, - (GDestroyNotify) g_free, - g_object_unref); for (GList *l = nautilus_columns; l != NULL; l = l->next) { @@ -1136,12 +1151,11 @@ setup_view_columns (NautilusListView *self) g_signal_connect (factory, "setup", G_CALLBACK (setup_label_cell), self); } + gtk_column_view_append_column (self->view_ui, view_column); + g_hash_table_insert (self->factory_to_column_map, factory, g_object_ref (nautilus_column)); - g_hash_table_insert (self->all_view_columns_hash, - g_steal_pointer (&name), - g_steal_pointer (&view_column)); } } @@ -1210,7 +1224,6 @@ nautilus_list_view_dispose (GObject *object) g_clear_object (&self->file_path_base_location); g_clear_pointer (&self->factory_to_column_map, g_hash_table_destroy); - g_clear_pointer (&self->all_view_columns_hash, g_hash_table_destroy); G_OBJECT_CLASS (nautilus_list_view_parent_class)->dispose (object); } |