diff options
-rw-r--r-- | src/nautilus-toolbar.c | 12 | ||||
-rw-r--r-- | src/nautilus-toolbar.h | 2 | ||||
-rw-r--r-- | src/nautilus-window-slot.c | 9 |
3 files changed, 22 insertions, 1 deletions
diff --git a/src/nautilus-toolbar.c b/src/nautilus-toolbar.c index d5ed7e069..432ce1e80 100644 --- a/src/nautilus-toolbar.c +++ b/src/nautilus-toolbar.c @@ -1166,6 +1166,18 @@ nautilus_toolbar_set_active_slot (NautilusToolbar *toolbar, } gboolean +nautilus_toolbar_is_menu_visible (NautilusToolbar *self) +{ + GtkPopover *popover; + + g_return_val_if_fail (NAUTILUS_IS_TOOLBAR (self), FALSE); + + popover = GTK_POPOVER (gtk_menu_button_get_popover (GTK_MENU_BUTTON (self->view_button))); + + return gtk_widget_is_visible (GTK_WIDGET (popover)); +} + +gboolean nautilus_toolbar_is_operations_button_active (NautilusToolbar *self) { return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->operations_button)); diff --git a/src/nautilus-toolbar.h b/src/nautilus-toolbar.h index 8b839a387..2ae1b7454 100644 --- a/src/nautilus-toolbar.h +++ b/src/nautilus-toolbar.h @@ -45,6 +45,8 @@ void nautilus_toolbar_set_show_location_entry (NautilusToolbar *self, void nautilus_toolbar_set_active_slot (NautilusToolbar *toolbar, NautilusWindowSlot *slot); +gboolean nautilus_toolbar_is_menu_visible (NautilusToolbar *toolbar); + gboolean nautilus_toolbar_is_operations_button_active (NautilusToolbar *toolbar); void nautilus_toolbar_on_window_constructed (NautilusToolbar *toolbar); diff --git a/src/nautilus-window-slot.c b/src/nautilus-window-slot.c index 0f4646f95..268bfdd1e 100644 --- a/src/nautilus-window-slot.c +++ b/src/nautilus-window-slot.c @@ -28,6 +28,7 @@ #include "nautilus-list-view.h" #include "nautilus-mime-actions.h" #include "nautilus-special-location-bar.h" +#include "nautilus-toolbar.h" #include "nautilus-trash-bar.h" #include "nautilus-trash-monitor.h" #include "nautilus-view.h" @@ -2436,7 +2437,13 @@ view_started_loading (NautilusWindowSlot *self, nautilus_window_slot_set_allow_stop (self, TRUE); } - gtk_widget_grab_focus (GTK_WIDGET (priv->window)); + /* Only grab focus if the menu isn't showing. Otherwise the menu disappears + * e.g. when the user toggles Show Hidden Files + */ + if (!nautilus_toolbar_is_menu_visible (NAUTILUS_TOOLBAR (nautilus_window_get_toolbar (priv->window)))) + { + gtk_widget_grab_focus (GTK_WIDGET (priv->window)); + } gtk_widget_show (GTK_WIDGET (priv->window)); |