chiark / gitweb /
Shift-click is equivalent to middle-click. This is mostly for
authorSimon Tatham <anakin@pobox.com>
Wed, 28 Apr 2004 17:42:32 +0000 (17:42 +0000)
committerSimon Tatham <anakin@pobox.com>
Wed, 28 Apr 2004 17:42:32 +0000 (17:42 +0000)
Windows users who may not have a middle button at all, but I've
replicated it in GTK to maintain cross-platform consistency.

[originally from svn r4166]

gtk.c
windows.c

diff --git a/gtk.c b/gtk.c
index b69e95d4dffcb8e44b3ab455a1af1f932f756efe..8a26730040f866c3d2b6997a573650c091ae2f9e 100644 (file)
--- a/gtk.c
+++ b/gtk.c
@@ -181,10 +181,10 @@ static gint button_event(GtkWidget *widget, GdkEventButton *event,
     if (event->type != GDK_BUTTON_PRESS)
         return TRUE;
 
-    if (event->button == 1)
-       button = LEFT_BUTTON;
-    else if (event->button == 2)
+    if (event->button == 2 || (event->state & GDK_SHIFT_MASK))
        button = MIDDLE_BUTTON;
+    else if (event->button == 1)
+       button = LEFT_BUTTON;
     else if (event->button == 3)
        button = RIGHT_BUTTON;
     else
index 3d9820d746d3837cb4b2a08640d69031ba65f498..29b50bc8f15bb671d0ab7a1871896ce93b710f59 100644 (file)
--- a/windows.c
+++ b/windows.c
@@ -438,12 +438,25 @@ static LRESULT CALLBACK WndProc(HWND hwnd, UINT message,
       case WM_LBUTTONDOWN:
       case WM_RBUTTONDOWN:
       case WM_MBUTTONDOWN:
-       if (!midend_process_key(fe->me, LOWORD(lParam), HIWORD(lParam),
-                               (message == WM_LBUTTONDOWN ? LEFT_BUTTON :
-                                message == WM_RBUTTONDOWN ? RIGHT_BUTTON :
-                                MIDDLE_BUTTON)))
-           PostQuitMessage(0);
-       
+       {
+           int button;
+
+           /*
+            * Shift-clicks count as middle-clicks, since otherwise
+            * two-button Windows users won't have any kind of
+            * middle click to use.
+            */
+           if (message == WM_MBUTTONDOWN || (wParam & MK_SHIFT))
+               button = MIDDLE_BUTTON;
+           else if (message == WM_LBUTTONDOWN)
+               button = LEFT_BUTTON;
+           else
+               button = RIGHT_BUTTON;
+               
+           if (!midend_process_key(fe->me, LOWORD(lParam),
+                                   HIWORD(lParam), button))
+               PostQuitMessage(0);
+       }
        break;
       case WM_CHAR:
        if (!midend_process_key(fe->me, 0, 0, (unsigned char)wParam))