1
0
mirror of https://gitlab.gnome.org/GNOME/nautilus synced 2024-06-30 23:46:35 +00:00

toolbar: Adapt to SAVE_FILE and SAVE_FILES modes

Both require a button for the view.new-folder action.

The formet additionally requires hiding the window close button,
because design calls for an explicit Cancel button instead.
This commit is contained in:
António Fernandes 2024-06-23 15:11:07 +01:00
parent 13902e46c2
commit 9223d69c4d
2 changed files with 24 additions and 1 deletions

View File

@ -38,6 +38,7 @@ struct _NautilusToolbar
{
AdwBin parent_instance;
AdwHeaderBar *header_bar;
GtkWidget *history_controls_stack;
GtkWidget *history_controls;
GtkWidget *history_controls_placeholder;
@ -49,6 +50,7 @@ struct _NautilusToolbar
GtkWidget *search_button_stack;
GtkWidget *search_button;
GtkWidget *search_button_placeholder;
GtkWidget *new_folder_button;
gboolean show_location_entry;
GtkWidget *focus_before_location_entry;
@ -109,6 +111,17 @@ toolbar_update_appearance (NautilusToolbar *self)
search_global ? self->search_button_placeholder : self->search_button);
gtk_stack_set_visible_child (GTK_STACK (self->history_controls_stack),
search_global ? self->history_controls_placeholder : self->history_controls);
if (self->window_slot != NULL)
{
NautilusMode mode = nautilus_window_slot_get_mode (self->window_slot);
gboolean show_title_buttons = (mode != NAUTILUS_MODE_SAVE_FILE);
adw_header_bar_set_show_start_title_buttons (self->header_bar, show_title_buttons);
adw_header_bar_set_show_end_title_buttons (self->header_bar, show_title_buttons);
gtk_widget_set_visible (self->new_folder_button, nautilus_mode_is_save (mode));
}
}
static void
@ -461,6 +474,7 @@ nautilus_toolbar_class_init (NautilusToolbarClass *klass)
gtk_widget_class_set_template_from_resource (widget_class,
"/org/gnome/nautilus/ui/nautilus-toolbar.ui");
gtk_widget_class_bind_template_child (widget_class, NautilusToolbar, header_bar);
gtk_widget_class_bind_template_child (widget_class, NautilusToolbar, history_controls_stack);
gtk_widget_class_bind_template_child (widget_class, NautilusToolbar, history_controls);
gtk_widget_class_bind_template_child (widget_class, NautilusToolbar, history_controls_placeholder);
@ -471,6 +485,7 @@ nautilus_toolbar_class_init (NautilusToolbarClass *klass)
gtk_widget_class_bind_template_child (widget_class, NautilusToolbar, search_button_stack);
gtk_widget_class_bind_template_child (widget_class, NautilusToolbar, search_button);
gtk_widget_class_bind_template_child (widget_class, NautilusToolbar, search_button_placeholder);
gtk_widget_class_bind_template_child (widget_class, NautilusToolbar, new_folder_button);
gtk_widget_class_bind_template_callback (widget_class, nautilus_toolbar_close_location_entry);

View File

@ -3,7 +3,7 @@
<requires lib="gtk" version="4.0"/>
<template class="NautilusToolbar" parent="AdwBin">
<child>
<object class="AdwHeaderBar">
<object class="AdwHeaderBar" id="header_bar">
<child type="title">
<object class="GtkBox" id="header_toolbar">
<property name="spacing">6</property>
@ -112,6 +112,14 @@
<property name="window-slot" bind-source="NautilusToolbar" bind-property="window-slot" bind-flags="sync-create"/>
</object>
</child>
<child type="end">
<object class="GtkButton" id="new_folder_button">
<property name="visible">false</property>
<property name="icon-name">folder-new-symbolic</property>
<property name="tooltip_text" translatable="yes">New Folder</property>
<property name="action-name">view.new-folder</property>
</object>
</child>
</object>
</child>
</template>