diff options
-rw-r--r-- | data/org.gnome.nautilus.gschema.xml | 5 | ||||
-rw-r--r-- | src/nautilus-global-preferences.h | 1 | ||||
-rw-r--r-- | src/nautilus-toolbar.c | 37 | ||||
-rw-r--r-- | src/nautilus-window.c | 89 | ||||
-rw-r--r-- | src/resources/ui/nautilus-toolbar.ui | 8 | ||||
-rw-r--r-- | src/resources/ui/nautilus-window.ui | 22 |
6 files changed, 82 insertions, 80 deletions
diff --git a/data/org.gnome.nautilus.gschema.xml b/data/org.gnome.nautilus.gschema.xml index 7dbacbee1..7d7d2a624 100644 --- a/data/org.gnome.nautilus.gschema.xml +++ b/data/org.gnome.nautilus.gschema.xml @@ -251,11 +251,6 @@ <summary>Whether the navigation window should be maximized</summary> <description>Whether the navigation window should be maximized by default.</description> </key> - <key type="i" name="sidebar-width"> - <default>188</default> - <summary>Width of the side pane</summary> - <description>The default width of the side pane in new windows.</description> - </key> <key type="b" name="start-with-location-bar"> <default>true</default> <summary>Show location bar in new windows</summary> diff --git a/src/nautilus-global-preferences.h b/src/nautilus-global-preferences.h index 53374aaef..6d3b0473c 100644 --- a/src/nautilus-global-preferences.h +++ b/src/nautilus-global-preferences.h @@ -59,7 +59,6 @@ typedef enum /* Which views should be displayed for new windows */ #define NAUTILUS_WINDOW_STATE_INITIAL_SIZE "initial-size" #define NAUTILUS_WINDOW_STATE_MAXIMIZED "maximized" -#define NAUTILUS_WINDOW_STATE_SIDEBAR_WIDTH "sidebar-width" /* Sorting order */ #define NAUTILUS_PREFERENCES_SORT_DIRECTORIES_FIRST "sort-directories-first" diff --git a/src/nautilus-toolbar.c b/src/nautilus-toolbar.c index 57fe64dc3..bc91c2ecb 100644 --- a/src/nautilus-toolbar.c +++ b/src/nautilus-toolbar.c @@ -85,6 +85,10 @@ struct _NautilusToolbar GtkWidget *app_button; GMenuModel *undo_redo_section; + GtkWidget *sidebar_button; + gboolean show_sidebar_button; + gboolean sidebar_button_active; + GtkWidget *forward_button; GtkWidget *forward_menu; @@ -110,6 +114,8 @@ enum PROP_SHOW_LOCATION_ENTRY, PROP_WINDOW_SLOT, PROP_SEARCHING, + PROP_SHOW_SIDEBAR_BUTTON, + PROP_SIDEBAR_BUTTON_ACTIVE, NUM_PROPERTIES }; @@ -916,6 +922,18 @@ nautilus_toolbar_get_property (GObject *object, } break; + case PROP_SHOW_SIDEBAR_BUTTON: + { + g_value_set_boolean (value, self->show_sidebar_button); + } + break; + + case PROP_SIDEBAR_BUTTON_ACTIVE: + { + g_value_set_boolean (value, self->sidebar_button_active); + } + break; + default: { G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); @@ -1022,6 +1040,18 @@ nautilus_toolbar_set_property (GObject *object, } break; + case PROP_SHOW_SIDEBAR_BUTTON: + { + self->show_sidebar_button = g_value_get_boolean (value); + } + break; + + case PROP_SIDEBAR_BUTTON_ACTIVE: + { + self->sidebar_button_active = g_value_get_boolean (value); + } + break; + default: { G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); @@ -1118,6 +1148,13 @@ nautilus_toolbar_class_init (NautilusToolbarClass *klass) FALSE, G_PARAM_READWRITE); + properties[PROP_SHOW_SIDEBAR_BUTTON] = + g_param_spec_boolean ("show-sidebar-button", NULL, NULL, FALSE, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + properties[PROP_SIDEBAR_BUTTON_ACTIVE] = + g_param_spec_boolean ("sidebar-button-active", NULL, NULL, FALSE, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + g_object_class_install_properties (oclass, NUM_PROPERTIES, properties); gtk_widget_class_set_template_from_resource (widget_class, diff --git a/src/nautilus-window.c b/src/nautilus-window.c index e3bb58c91..34f2aec72 100644 --- a/src/nautilus-window.c +++ b/src/nautilus-window.c @@ -104,11 +104,10 @@ struct _NautilusWindow GList *slots; NautilusWindowSlot *active_slot; /* weak reference */ - GtkWidget *content_paned; + GtkWidget *content_flap; /* Side Pane */ - int side_pane_width; - GtkWidget *places_sidebar; + GtkWidget *places_sidebar; /* the actual GtkPlacesSidebar */ GVolume *selected_volume; /* the selected volume in the sidebar popup callback */ GFile *selected_file; /* the selected file in the sidebar popup callback */ @@ -804,62 +803,6 @@ nautilus_window_get_notebook (NautilusWindow *window) return window->notebook; } -static gboolean -save_sidebar_width_cb (gpointer user_data) -{ - NautilusWindow *window = user_data; - - - window->sidebar_width_handler_id = 0; - - DEBUG ("Saving sidebar width: %d", window->side_pane_width); - - g_settings_set_int (nautilus_window_state, - NAUTILUS_WINDOW_STATE_SIDEBAR_WIDTH, - window->side_pane_width); - - return FALSE; -} - -/* side pane helpers */ -static void -side_pane_notify_position_callback (GObject *object, - GParamSpec *pspec, - gpointer user_data) -{ - NautilusWindow *window = user_data; - gint position; - - if (window->sidebar_width_handler_id != 0) - { - g_source_remove (window->sidebar_width_handler_id); - window->sidebar_width_handler_id = 0; - } - - position = gtk_paned_get_position (GTK_PANED (window->content_paned)); - if (position != window->side_pane_width && - position > 1) - { - window->side_pane_width = position; - - window->sidebar_width_handler_id = - g_idle_add (save_sidebar_width_cb, window); - } -} - -static void -setup_side_pane_width (NautilusWindow *window) -{ - g_return_if_fail (window->places_sidebar != NULL); - - window->side_pane_width = - g_settings_get_int (nautilus_window_state, - NAUTILUS_WINDOW_STATE_SIDEBAR_WIDTH); - - gtk_paned_set_position (GTK_PANED (window->content_paned), - window->side_pane_width); -} - /* Callback used when the places sidebar changes location; we need to change the displayed folder */ static void open_location_cb (NautilusWindow *window, @@ -1026,6 +969,19 @@ action_restore_tab (GSimpleAction *action, free_navigation_state (data); } +static void +action_toggle_sidebar (GSimpleAction *action, + GVariant *state, + gpointer user_data) +{ + NautilusWindow *window = NAUTILUS_WINDOW (user_data); + gboolean revealed; + + revealed = adw_flap_get_reveal_flap (ADW_FLAP (window->content_flap)); + adw_flap_set_reveal_flap (ADW_FLAP (window->content_flap), !revealed); +} + + static guint get_window_xid (NautilusWindow *window) { @@ -1042,12 +998,6 @@ get_window_xid (NautilusWindow *window) static void nautilus_window_set_up_sidebar (NautilusWindow *window) { - setup_side_pane_width (window); - g_signal_connect (window->content_paned, - "notify::position", - G_CALLBACK (side_pane_notify_position_callback), - window); - nautilus_gtk_places_sidebar_set_open_flags (NAUTILUS_GTK_PLACES_SIDEBAR (window->places_sidebar), (NAUTILUS_GTK_PLACES_OPEN_NORMAL | NAUTILUS_GTK_PLACES_OPEN_NEW_TAB @@ -1582,12 +1532,14 @@ const GActionEntry win_entries[] = { "prompt-home-location", action_prompt_for_location_home }, { "go-to-tab", NULL, "i", "0", action_go_to_tab }, { "restore-tab", action_restore_tab }, + { "toggle-sidebar", action_toggle_sidebar }, }; static void nautilus_window_initialize_actions (NautilusWindow *window) { GApplication *app; + GAction *action; gchar detailed_action[80]; gchar accel[80]; gint i; @@ -1625,6 +1577,7 @@ nautilus_window_initialize_actions (NautilusWindow *window) nautilus_application_set_accelerators (app, "win.prompt-home-location", ACCELS ("asciitilde", "dead_tilde")); nautilus_application_set_accelerator (app, "win.current-location-menu", "F10"); nautilus_application_set_accelerator (app, "win.restore-tab", "<shift><control>t"); + nautilus_application_set_accelerator (app, "win.toggle-sidebar", "F9"); /* Alt+N for the first 9 tabs */ for (i = 0; i < 9; ++i) @@ -1635,6 +1588,10 @@ nautilus_window_initialize_actions (NautilusWindow *window) } #undef ACCELS + + action = g_action_map_lookup_action (G_ACTION_MAP (window), "toggle-sidebar"); + g_object_bind_property (window->content_flap, "folded", + action, "enabled", G_BINDING_SYNC_CREATE); } @@ -2226,7 +2183,7 @@ nautilus_window_class_init (NautilusWindowClass *class) gtk_widget_class_set_template_from_resource (wclass, "/org/gnome/nautilus/ui/nautilus-window.ui"); gtk_widget_class_bind_template_child (wclass, NautilusWindow, toolbar); - gtk_widget_class_bind_template_child (wclass, NautilusWindow, content_paned); + gtk_widget_class_bind_template_child (wclass, NautilusWindow, content_flap); gtk_widget_class_bind_template_child (wclass, NautilusWindow, places_sidebar); gtk_widget_class_bind_template_child (wclass, NautilusWindow, notebook); gtk_widget_class_bind_template_child (wclass, NautilusWindow, tab_menu); diff --git a/src/resources/ui/nautilus-toolbar.ui b/src/resources/ui/nautilus-toolbar.ui index e9ab53edd..0bf8d79c2 100644 --- a/src/resources/ui/nautilus-toolbar.ui +++ b/src/resources/ui/nautilus-toolbar.ui @@ -171,6 +171,14 @@ </object> </child> <child type="start"> + <object class="GtkToggleButton" id="show_sidebar_button"> + <property name="visible" bind-source="NautilusToolbar" bind-property="show-sidebar-button" bind-flags="bidirectional|sync-create"/> + <property name="active" bind-source="NautilusToolbar" bind-property="sidebar-button-active" bind-flags="bidirectional|sync-create"/> + <property name="tooltip-text" translatable="yes">Show sidebar</property> + <property name="icon-name">sidebar-show-symbolic</property> + </object> + </child> + <child type="start"> <object class="GtkButton" id="back_button"> <property name="focusable">True</property> <property name="tooltip_text" translatable="yes">Go back</property> diff --git a/src/resources/ui/nautilus-window.ui b/src/resources/ui/nautilus-window.ui index a5c9a836e..dd9048f81 100644 --- a/src/resources/ui/nautilus-window.ui +++ b/src/resources/ui/nautilus-window.ui @@ -37,26 +37,32 @@ <object class="GtkBox"> <property name="orientation">vertical</property> <child> - <object class="NautilusToolbar" id="toolbar"/> + <object class="NautilusToolbar" id="toolbar"> + <property name="show-sidebar-button" bind-source="content_flap" bind-property="folded" bind-flags="sync-create"/> + <property name="sidebar-button-active" bind-source="content_flap" bind-property="reveal-flap" bind-flags="bidirectional|sync-create"/> + </object> </child> <child> - <object class="GtkPaned" id="content_paned"> - <property name="shrink-end-child">False</property> - <property name="shrink-start-child">False</property> - <property name="resize-start-child">False</property> - <property name="vexpand">True</property> - <property name="hexpand">True</property> - <child> + <object class="AdwFlap" id="content_flap"> + <child type="flap"> <object class="NautilusGtkPlacesSidebar" id="places_sidebar"> <property name="vexpand">True</property> <property name="show-other-locations">True</property> <property name="show-starred-location">True</property> + <property name="width-request">240</property> + <style> + <class name="background"/> + </style> </object> </child> + <child type="separator"> + <object class="GtkSeparator"/> + </child> <child> <object class="GtkNotebook" id="notebook"> <property name="show-tabs">False</property> <property name="show-border">False</property> + <property name="width-request">360</property> </object> </child> </object> |