summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElias Entrup <elias-git@flump.de>2017-06-18 18:09:40 +0200
committerErnestas Kulik <ernestask@gnome.org>2017-06-19 13:17:38 +0300
commite6712177418061a40b8bddabc34230d52bae484d (patch)
treeb2ebb0d65ba2bd182bf4ad089fdad0c125f3a46b
parent2b3bfe8a01e8fe5cae60549134f2bdf53cde4943 (diff)
downloadnautilus-e6712177418061a40b8bddabc34230d52bae484d.tar.gz
pathbar: Handle middle click on button-press-event
If "/org/gnome/desktop/wm/preferences/action-middle-click-titlebar" is set to "minimize", a click on the pathbar will open a new tab but also minimize the window. By handling the event already on the button press (not release), the window is not minimized anymore. https://bugzilla.gnome.org/show_bug.cgi?id=757439
-rw-r--r--src/nautilus-pathbar.c27
1 files changed, 16 insertions, 11 deletions
diff --git a/src/nautilus-pathbar.c b/src/nautilus-pathbar.c
index b5e0d653b..60817b442 100644
--- a/src/nautilus-pathbar.c
+++ b/src/nautilus-pathbar.c
@@ -1522,32 +1522,37 @@ button_event_cb (GtkWidget *button,
button_data = BUTTON_DATA (data);
path_bar = NAUTILUS_PATH_BAR (gtk_widget_get_parent (button));
+ mask = event->state & gtk_accelerator_get_default_mod_mask ();
if (event->type == GDK_BUTTON_PRESS)
{
g_object_set_data (G_OBJECT (button), "handle-button-release", GINT_TO_POINTER (TRUE));
- if (event->button == 3)
+ if (event->button == GDK_BUTTON_SECONDARY)
{
pop_up_pathbar_context_menu (path_bar, event, button_data->file);
- return TRUE;
+ return GDK_EVENT_STOP;
+ }
+ else if (event->button == GDK_BUTTON_MIDDLE && mask == 0)
+ {
+ g_signal_emit (path_bar,
+ path_bar_signals[OPEN_LOCATION],
+ 0,
+ button_data->path,
+ GTK_PLACES_OPEN_NEW_TAB);
+ return GDK_EVENT_STOP;
}
}
else if (event->type == GDK_BUTTON_RELEASE)
{
- mask = event->state & gtk_accelerator_get_default_mod_mask ();
flags = 0;
if (!GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (button), "handle-button-release")))
{
- return FALSE;
+ return GDK_EVENT_PROPAGATE;
}
- if (event->button == 2 && mask == 0)
- {
- flags = GTK_PLACES_OPEN_NEW_TAB;
- }
- else if (event->button == 1 && mask == GDK_CONTROL_MASK)
+ if (event->button == GDK_BUTTON_PRIMARY && mask == GDK_CONTROL_MASK)
{
flags = GTK_PLACES_OPEN_NEW_WINDOW;
}
@@ -1557,10 +1562,10 @@ button_event_cb (GtkWidget *button,
g_signal_emit (path_bar, path_bar_signals[OPEN_LOCATION], 0, button_data->path, flags);
}
- return FALSE;
+ return GDK_EVENT_PROPAGATE;
}
- return FALSE;
+ return GDK_EVENT_PROPAGATE;
}
static GIcon *