From b0f067190f385284449015d12d592b3f385b6a11 Mon Sep 17 00:00:00 2001 From: simon Date: Wed, 28 Apr 2004 17:42:32 +0000 Subject: [PATCH] Shift-click is equivalent to middle-click. This is mostly for Windows users who may not have a middle button at all, but I've replicated it in GTK to maintain cross-platform consistency. git-svn-id: svn://svn.tartarus.org/sgt/puzzles@4166 cda61777-01e9-0310-a592-d414129be87e --- gtk.c | 6 +++--- windows.c | 25 +++++++++++++++++++------ 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/gtk.c b/gtk.c index b69e95d..8a26730 100644 --- 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 diff --git a/windows.c b/windows.c index 3d9820d..29b50bc 100644 --- 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)) -- 2.11.0