summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNeil Herald <neil.herald@gmail.com>2016-12-10 14:28:24 +0000
committerNeil Herald <neil.herald@gmail.com>2016-12-10 20:06:55 +0000
commitacff418810418e594a094dfee045300320f69ff4 (patch)
treeb64dbb161f7462f273fe00a0d925da5a811626bc
parent94b66f342bb396ed4cf214c9f2a8dad68aa5ccba (diff)
downloadnautilus-acff418810418e594a094dfee045300320f69ff4.tar.gz
window-slot: prevent menu disappearing when Hidden Files toggled
When the user toggled the Show Hidden Files option on the toolbar menu, previously the menu disappeared - which isn't the correct behaviour. This commit changes it so that the menu doesn't disappear. https://bugzilla.gnome.org/show_bug.cgi?id=766952
-rw-r--r--src/nautilus-toolbar.c12
-rw-r--r--src/nautilus-toolbar.h2
-rw-r--r--src/nautilus-window-slot.c9
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));