From: simon Date: Thu, 20 Nov 2003 18:41:12 +0000 (+0000) Subject: Introduce a new mouse handling option, in which the right button X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/putty/commitdiff_plain/ebc0310de640067f9866094c7be5fab2d478b514?hp=00381fc7bed1aaf2008172c0f4b9e5a53e465bc7 Introduce a new mouse handling option, in which the right button brings up the context menu (and you can then paste by selecting `Paste'). Should be more friendly to Windows-oriented users as opposed to expatriate X users; also has the effect of making it more difficult to paste into PuTTY by a single misplaced mouse click, which has been a common theme of complaint recently. For the moment, `Compromise' (the X-like behaviour with the right and middle buttons reversed so that two-button users still get the two most important functions) is still the default. I'm uncertain that it might not be better to make the new option the default, though, since the compromise option is optimal for _nobody_. git-svn-id: svn://svn.tartarus.org/sgt/putty@3565 cda61777-01e9-0310-a592-d414129be87e --- diff --git a/wincfg.c b/wincfg.c index ffb18113..070e6f53 100644 --- a/wincfg.c +++ b/wincfg.c @@ -246,12 +246,13 @@ void win_setup_config_box(struct controlbox *b, HWND *hwndp, int has_help, */ s = ctrl_getset(b, "Window/Selection", "mouse", "Control use of mouse"); - ctrl_radiobuttons(s, "Action of mouse buttons:", NO_SHORTCUT, 1, + ctrl_radiobuttons(s, "Action of mouse buttons:", 'm', 1, HELPCTX(selection_buttons), dlg_stdradiobutton_handler, I(offsetof(Config, mouse_is_xterm)), - "Windows (Right pastes, Middle extends)", 'w', I(0), - "xterm (Right extends, Middle pastes)", 'x', I(1), NULL); + "Windows (Middle extends, Right brings up menu)", I(2), + "Compromise (Middle extends, Right pastes)", I(0), + "xterm (Right extends, Middle pastes)", I(1), NULL); /* * This really ought to go at the _top_ of its box, not the * bottom, so we'll just do some shuffling now we've set it diff --git a/window.c b/window.c index db645137..9c77861f 100644 --- a/window.c +++ b/window.c @@ -1640,9 +1640,9 @@ static Mouse_Button translate_button(Mouse_Button button) if (button == MBT_LEFT) return MBT_SELECT; if (button == MBT_MIDDLE) - return cfg.mouse_is_xterm ? MBT_PASTE : MBT_EXTEND; + return cfg.mouse_is_xterm == 1 ? MBT_PASTE : MBT_EXTEND; if (button == MBT_RIGHT) - return cfg.mouse_is_xterm ? MBT_EXTEND : MBT_PASTE; + return cfg.mouse_is_xterm == 1 ? MBT_EXTEND : MBT_PASTE; return 0; /* shouldn't happen */ } @@ -2028,9 +2028,11 @@ static LRESULT CALLBACK WndProc(HWND hwnd, UINT message, case WM_LBUTTONUP: case WM_MBUTTONUP: case WM_RBUTTONUP: - if (message == WM_RBUTTONDOWN && (wParam & MK_CONTROL)) { + if (message == WM_RBUTTONDOWN && + ((wParam & MK_CONTROL) || (cfg.mouse_is_xterm == 2))) { POINT cursorpos; + show_mouseptr(1); /* make sure pointer is visible */ GetCursorPos(&cursorpos); TrackPopupMenu(popup_menus[CTXMENU].menu, TPM_LEFTALIGN | TPM_TOPALIGN | TPM_RIGHTBUTTON,