diff options
author | Corey Berla <corey@berla.me> | 2023-01-02 17:10:08 -0800 |
---|---|---|
committer | Corey Berla <corey@berla.me> | 2023-05-04 21:32:59 +0000 |
commit | 4346087adc4057aae9a84c18cdfd87db2aafdac0 (patch) | |
tree | e8427d91141580eabf49a5b47d4aaf99effdbd95 | |
parent | 7c5f51739adc1c0abf60e1ac88f9cf9c4ce1aa97 (diff) | |
download | nautilus-4346087adc4057aae9a84c18cdfd87db2aafdac0.tar.gz |
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.
-rw-r--r-- | po/POTFILES.in | 1 | ||||
-rw-r--r-- | src/nautilus-column-chooser.c | 12 | ||||
-rw-r--r-- | src/nautilus-column-chooser.h | 8 | ||||
-rw-r--r-- | src/nautilus-list-view.c | 24 | ||||
-rw-r--r-- | src/resources/nautilus.gresource.xml | 1 | ||||
-rw-r--r-- | src/resources/ui/nautilus-column-chooser.ui | 174 | ||||
-rw-r--r-- | src/resources/ui/nautilus-list-view-column-editor.ui | 41 |
7 files changed, 118 insertions, 143 deletions
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 <gtk/gtk.h> #include "nautilus-file.h" +#include <libadwaita-1/adwaita.h> + #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 @@ <file>ui/nautilus-view-controls.ui</file> <file>ui/nautilus-toolbar-view-menu.ui</file> <file>ui/nautilus-column-chooser.ui</file> - <file>ui/nautilus-list-view-column-editor.ui</file> <file>ui/nautilus-create-folder-dialog.ui</file> <file>ui/nautilus-compress-dialog.ui</file> <file>ui/nautilus-rename-file-popover.ui</file> 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 @@ <column type="gboolean"/> </columns> </object> - <template class="NautilusColumnChooser" parent="GtkBox"> - <property name="orientation">vertical</property> - <property name="spacing">12</property> - <child> - <object class="GtkScrolledWindow"> - <property name="child"> - <object class="GtkTreeView" id="view"> - <property name="vexpand">True</property> - <property name="model">store</property> - <property name="headers-visible">False</property> - <property name="reorderable">True</property> - <signal name="row-activated" handler="view_row_activated_callback" swapped="no"/> - <child internal-child="selection"> - <object class="GtkTreeSelection"> - <signal name="changed" handler="selection_changed_callback" swapped="no"/> + <template class="NautilusColumnChooser" parent="AdwWindow"> + <property name="modal">True</property> + <property name="default-width">360</property> + <property name="default-height">480</property> + <property name="destroy-with-parent">True</property> + <property name="content"> + <object class="GtkBox"> + <property name="orientation">vertical</property> + <child> + <object class="GtkHeaderBar"> + <child type="title"> + <object class="AdwWindowTitle" id="window_title"> + <property name="title" translatable="true">Visible Columns</property> </object> </child> + </object> + </child> + <child> + <object class="GtkBox" id="box"> + <property name="margin-top">18</property> + <property name="margin-bottom">18</property> + <property name="margin-start">18</property> + <property name="margin-end">18</property> + <property name="orientation">vertical</property> + <property name="spacing">18</property> <child> - <object class="GtkTreeViewColumn" id="visible-column"> - <child> - <object class="GtkCellRendererToggle"> - <signal name="toggled" handler="visible_toggled_callback" swapped="no"/> + <object class="GtkScrolledWindow"> + <property name="child"> + <object class="GtkTreeView" id="view"> + <property name="vexpand">True</property> + <property name="model">store</property> + <property name="headers-visible">False</property> + <property name="reorderable">True</property> + <signal name="row-activated" handler="view_row_activated_callback" swapped="no"/> + <child internal-child="selection"> + <object class="GtkTreeSelection"> + <signal name="changed" handler="selection_changed_callback" swapped="no"/> + </object> + </child> + <child> + <object class="GtkTreeViewColumn" id="visible-column"> + <child> + <object class="GtkCellRendererToggle"> + <signal name="toggled" handler="visible_toggled_callback" swapped="no"/> + </object> + <attributes> + <attribute name="sensitive">3</attribute> + <attribute name="active">0</attribute> + </attributes> + </child> + </object> + </child> + <child> + <object class="GtkTreeViewColumn" id="label-column"> + <child> + <object class="GtkCellRendererText"/> + <attributes> + <attribute name="sensitive">3</attribute> + <attribute name="text">1</attribute> + </attributes> + </child> + </object> + </child> </object> - <attributes> - <attribute name="sensitive">3</attribute> - <attribute name="active">0</attribute> - </attributes> - </child> + </property> + <style> + <class name="frame"/> + </style> </object> </child> <child> - <object class="GtkTreeViewColumn" id="label-column"> + <object class="GtkBox"> + <property name="spacing">12</property> <child> - <object class="GtkCellRendererText"/> - <attributes> - <attribute name="sensitive">3</attribute> - <attribute name="text">1</attribute> - </attributes> + <object class="GtkBox"> + <child> + <object class="GtkButton" id="move_up_button"> + <property name="sensitive">False</property> + <property name="icon-name">go-up-symbolic</property> + <signal name="clicked" handler="move_up_clicked_callback" swapped="no"/> + </object> + </child> + <child> + <object class="GtkButton" id="move_down_button"> + <property name="sensitive">False</property> + <property name="icon-name">go-down-symbolic</property> + <signal name="clicked" handler="move_down_clicked_callback" swapped="no"/> + </object> + </child> + <style> + <class name="linked"/> + </style> + </object> + </child> + <child> + <object class="GtkBox"> + <child> + <object class="GtkButton" id="use_default_button"> + <property name="hexpand">true</property> + <property name="halign">end</property> + <property name="label" translatable="yes">Reset to De_fault</property> + <property name="tooltip-text" translatable="yes">Replace the current List Columns settings with the default settings</property> + <property name="use-underline">True</property> + <signal name="clicked" handler="use_default_clicked_callback" swapped="no"/> + </object> + </child> + </object> </child> - </object> - </child> - </object> - </property> - <style> - <class name="frame"/> - </style> - </object> - </child> - <child> - <object class="GtkBox"> - <property name="spacing">12</property> - <child> - <object class="GtkBox"> - <child> - <object class="GtkButton" id="move_up_button"> - <property name="sensitive">False</property> - <property name="icon-name">go-up-symbolic</property> - <signal name="clicked" handler="move_up_clicked_callback" swapped="no"/> - </object> - </child> - <child> - <object class="GtkButton" id="move_down_button"> - <property name="sensitive">False</property> - <property name="icon-name">go-down-symbolic</property> - <signal name="clicked" handler="move_down_clicked_callback" swapped="no"/> - </object> - </child> - <style> - <class name="linked"/> - </style> - </object> - </child> - <child> - <object class="GtkBox"> - <child> - <object class="GtkButton" id="use_default_button"> - <property name="hexpand">true</property> - <property name="halign">end</property> - <property name="label" translatable="yes">Reset to De_fault</property> - <property name="tooltip-text" translatable="yes">Replace the current List Columns settings with the default settings</property> - <property name="use-underline">True</property> - <signal name="clicked" handler="use_default_clicked_callback" swapped="no"/> </object> </child> </object> </child> </object> - </child> + </property> </template> </interface> diff --git a/src/resources/ui/nautilus-list-view-column-editor.ui b/src/resources/ui/nautilus-list-view-column-editor.ui deleted file mode 100644 index c4cab589e..000000000 --- a/src/resources/ui/nautilus-list-view-column-editor.ui +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<interface> - <requires lib="gtk" version="4.0"/> - <object class="AdwWindow" id="window"> - <property name="modal">True</property> - <property name="default-width">360</property> - <property name="default-height">440</property> - <child> - <object class="GtkBox"> - <property name="orientation">vertical</property> - <child> - <object class="AdwHeaderBar"> - <child type="title"> - <object class="AdwWindowTitle" id="window_title"> - <property name="title" translatable="true">Visible Columns</property> - </object> - </child> - </object> - </child> - <child> - <object class="GtkBox" id="box"> - <property name="margin-top">18</property> - <property name="margin-bottom">18</property> - <property name="margin-start">18</property> - <property name="margin-end">18</property> - <property name="orientation">vertical</property> - <property name="spacing">18</property> - <child> - <object class="GtkLabel"> - <property name="label" translatable="yes">Choose the order of information to appear in this folder:</property> - <property name="xalign">0</property> - <property name="yalign">0</property> - <property name="wrap">True</property> - </object> - </child> - </object> - </child> - </object> - </child> - </object> -</interface> |