[nautilus] pathbar: Handle middle click on button-press-event



commit e6712177418061a40b8bddabc34230d52bae484d
Author: Elias Entrup <elias-git flump de>
Date:   Sun Jun 18 18:09:40 2017 +0200

    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

 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 b5e0d65..60817b4 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 *


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]