diff options
author | Elias Entrup <elias-git@flump.de> | 2017-06-18 18:09:40 +0200 |
---|---|---|
committer | Ernestas Kulik <ernestask@gnome.org> | 2017-06-19 13:17:38 +0300 |
commit | e6712177418061a40b8bddabc34230d52bae484d (patch) | |
tree | b2ebb0d65ba2bd182bf4ad089fdad0c125f3a46b | |
parent | 2b3bfe8a01e8fe5cae60549134f2bdf53cde4943 (diff) | |
download | nautilus-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.c | 27 |
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 * |