From 4346087adc4057aae9a84c18cdfd87db2aafdac0 Mon Sep 17 00:00:00 2001 From: Corey Berla Date: Mon, 2 Jan 2023 17:10:08 -0800 Subject: column-chooser: Subclass AdwWindow instead of GtkBox We were subclassing from GtkBox and then, list-view created a list-view-column-editor which subclassed from AdwWindow to add the column-chooser. It's a lot of extra code / complexity for something that is only used in list-view. This also allows us to directly use column-chooser within list-view. Also drop the list description label, in preparation for the switch to GtkListBox. --- po/POTFILES.in | 1 - src/nautilus-column-chooser.c | 12 +- src/nautilus-column-chooser.h | 8 +- src/nautilus-list-view.c | 24 +-- src/resources/nautilus.gresource.xml | 1 - src/resources/ui/nautilus-column-chooser.ui | 174 ++++++++++++--------- .../ui/nautilus-list-view-column-editor.ui | 41 ----- 7 files changed, 118 insertions(+), 143 deletions(-) delete mode 100644 src/resources/ui/nautilus-list-view-column-editor.ui diff --git a/po/POTFILES.in b/po/POTFILES.in index 0adfd1c0f..d3db01506 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -76,7 +76,6 @@ src/resources/ui/nautilus-files-view-select-items.ui src/resources/ui/nautilus-files-view.ui src/resources/ui/nautilus-grid-cell.ui src/resources/ui/nautilus-history-controls.ui -src/resources/ui/nautilus-list-view-column-editor.ui src/resources/ui/nautilus-name-cell.ui src/resources/ui/nautilus-operations-ui-manager-request-passphrase.ui src/resources/ui/nautilus-pathbar-context-menu.ui diff --git a/src/nautilus-column-chooser.c b/src/nautilus-column-chooser.c index de68338ec..ddc2d9bcd 100644 --- a/src/nautilus-column-chooser.c +++ b/src/nautilus-column-chooser.c @@ -32,7 +32,7 @@ struct _NautilusColumnChooser { - GtkBox parent; + AdwWindow parent; GtkWidget *view; GtkListStore *store; @@ -40,6 +40,7 @@ struct _NautilusColumnChooser GtkWidget *move_up_button; GtkWidget *move_down_button; GtkWidget *use_default_button; + GtkWidget *window_title; NautilusFile *file; }; @@ -67,7 +68,7 @@ enum }; static guint signals[LAST_SIGNAL]; -G_DEFINE_TYPE (NautilusColumnChooser, nautilus_column_chooser, GTK_TYPE_BOX); +G_DEFINE_TYPE (NautilusColumnChooser, nautilus_column_chooser, ADW_TYPE_WINDOW); static void nautilus_column_chooser_set_property (GObject *object, @@ -333,10 +334,14 @@ static void nautilus_column_chooser_constructed (GObject *object) { NautilusColumnChooser *chooser; + g_autofree gchar *name = NULL; G_OBJECT_CLASS (nautilus_column_chooser_parent_class)->constructed (object); chooser = NAUTILUS_COLUMN_CHOOSER (object); + name = nautilus_file_get_display_name (chooser->file); + + adw_window_title_set_subtitle (ADW_WINDOW_TITLE (chooser->window_title), name); populate_tree (chooser); @@ -553,6 +558,7 @@ nautilus_column_chooser_class_init (NautilusColumnChooserClass *chooser_class) gtk_widget_class_bind_template_child (widget_class, NautilusColumnChooser, move_up_button); gtk_widget_class_bind_template_child (widget_class, NautilusColumnChooser, move_down_button); gtk_widget_class_bind_template_child (widget_class, NautilusColumnChooser, use_default_button); + gtk_widget_class_bind_template_child (widget_class, NautilusColumnChooser, window_title); gtk_widget_class_bind_template_callback (widget_class, view_row_activated_callback); gtk_widget_class_bind_template_callback (widget_class, selection_changed_callback); gtk_widget_class_bind_template_callback (widget_class, visible_toggled_callback); @@ -560,6 +566,8 @@ nautilus_column_chooser_class_init (NautilusColumnChooserClass *chooser_class) gtk_widget_class_bind_template_callback (widget_class, move_down_clicked_callback); gtk_widget_class_bind_template_callback (widget_class, use_default_clicked_callback); + gtk_widget_class_add_binding_action (widget_class, GDK_KEY_Escape, 0, "window.close", NULL); + signals[CHANGED] = g_signal_new ("changed", G_TYPE_FROM_CLASS (chooser_class), diff --git a/src/nautilus-column-chooser.h b/src/nautilus-column-chooser.h index c52efe4c6..93581f5d4 100644 --- a/src/nautilus-column-chooser.h +++ b/src/nautilus-column-chooser.h @@ -25,14 +25,16 @@ #include #include "nautilus-file.h" +#include + #define NAUTILUS_TYPE_COLUMN_CHOOSER nautilus_column_chooser_get_type() -G_DECLARE_FINAL_TYPE (NautilusColumnChooser, nautilus_column_chooser, NAUTILUS, COLUMN_CHOOSER, GtkBox); +G_DECLARE_FINAL_TYPE (NautilusColumnChooser, nautilus_column_chooser, NAUTILUS, COLUMN_CHOOSER, AdwWindow); -GtkWidget *nautilus_column_chooser_new (NautilusFile *file); +GtkWidget *nautilus_column_chooser_new (NautilusFile *file); void nautilus_column_chooser_set_settings (NautilusColumnChooser *chooser, char **visible_columns, char **column_order); -void nautilus_column_chooser_get_settings (NautilusColumnChooser *chooser, +void nautilus_column_chooser_get_settings (NautilusColumnChooser *chooser, char ***visible_columns, char ***column_order); diff --git a/src/nautilus-list-view.c b/src/nautilus-list-view.c index 15202622f..3b5f250ef 100644 --- a/src/nautilus-list-view.c +++ b/src/nautilus-list-view.c @@ -542,31 +542,13 @@ column_chooser_use_default_callback (NautilusColumnChooser *chooser, static GtkWidget * create_column_editor (NautilusListView *view) { - g_autoptr (GtkBuilder) builder = NULL; - GtkWidget *window; - AdwWindowTitle *window_title; - GtkWidget *box; GtkWidget *column_chooser; NautilusFile *file; - char *name; - - builder = gtk_builder_new_from_resource ("/org/gnome/nautilus/ui/nautilus-list-view-column-editor.ui"); - - window = GTK_WIDGET (gtk_builder_get_object (builder, "window")); - gtk_window_set_transient_for (GTK_WINDOW (window), - GTK_WINDOW (gtk_widget_get_root (GTK_WIDGET (view)))); file = nautilus_files_view_get_directory_as_file (NAUTILUS_FILES_VIEW (view)); - name = nautilus_file_get_display_name (file); - window_title = ADW_WINDOW_TITLE (gtk_builder_get_object (builder, "window_title")); - adw_window_title_set_subtitle (window_title, name); - g_free (name); - - box = GTK_WIDGET (gtk_builder_get_object (builder, "box")); - column_chooser = nautilus_column_chooser_new (file); - gtk_widget_set_vexpand (column_chooser, TRUE); - gtk_box_append (GTK_BOX (box), column_chooser); + gtk_window_set_transient_for (GTK_WINDOW (column_chooser), + GTK_WINDOW (gtk_widget_get_root (GTK_WIDGET (view)))); g_signal_connect (column_chooser, "changed", G_CALLBACK (column_chooser_changed_callback), @@ -578,7 +560,7 @@ create_column_editor (NautilusListView *view) column_chooser_set_from_settings (NAUTILUS_COLUMN_CHOOSER (column_chooser), view); - return window; + return column_chooser; } static void diff --git a/src/resources/nautilus.gresource.xml b/src/resources/nautilus.gresource.xml index 87eb657e5..f1e9b41e2 100644 --- a/src/resources/nautilus.gresource.xml +++ b/src/resources/nautilus.gresource.xml @@ -11,7 +11,6 @@ ui/nautilus-view-controls.ui ui/nautilus-toolbar-view-menu.ui ui/nautilus-column-chooser.ui - ui/nautilus-list-view-column-editor.ui ui/nautilus-create-folder-dialog.ui ui/nautilus-compress-dialog.ui ui/nautilus-rename-file-popover.ui diff --git a/src/resources/ui/nautilus-column-chooser.ui b/src/resources/ui/nautilus-column-chooser.ui index 24cce3de7..512117c1c 100644 --- a/src/resources/ui/nautilus-column-chooser.ui +++ b/src/resources/ui/nautilus-column-chooser.ui @@ -13,93 +13,119 @@ -