From bfdf70d14ad8e1389789e206fb977648376bd47e Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 9 Nov 2015 03:27:03 +0100 Subject: [PATCH] Fix handling of keys with Ctrl modifier in wxSTC under OS X The real Ctrl key is represented by "meta" modifier bit under OS X as the "ctrl" bit is used for the Cmd key, but the previously used KeyDown() method didn't support the meta bit at all, so key combinations using Ctrl didn't work. Also remove obsolete code which mapped "meta" to "ctrl", probably predating the mapping of Cmd to "ctrl" at wx API level. See #16243. --- src/stc/ScintillaWX.cpp | 35 +++++++++++++---------------------- 1 file changed, 13 insertions(+), 22 deletions(-) diff --git a/src/stc/ScintillaWX.cpp b/src/stc/ScintillaWX.cpp index 7bc3d8c050..1372a90b8a 100644 --- a/src/stc/ScintillaWX.cpp +++ b/src/stc/ScintillaWX.cpp @@ -1037,11 +1037,7 @@ int ScintillaWX::DoKeyDown(const wxKeyEvent& evt, bool* consumed) return 0; } - bool shift = evt.ShiftDown(), - ctrl = evt.ControlDown(), - alt = evt.AltDown(); - - if (ctrl && key >= 1 && key <= 26 && key != WXK_BACK) + if (evt.RawControlDown() && key >= 1 && key <= 26 && key != WXK_BACK) key += 'A' - 1; switch (key) { @@ -1082,23 +1078,18 @@ int ScintillaWX::DoKeyDown(const wxKeyEvent& evt, bool* consumed) case WXK_MENU: key = SCK_MENU; break; } -#ifdef __WXMAC__ - if ( evt.MetaDown() ) { - // check for a few common Mac Meta-key combos and remap them to Ctrl - // for Scintilla - switch ( key ) { - case 'Z': // Undo - case 'X': // Cut - case 'C': // Copy - case 'V': // Paste - case 'A': // Select All - ctrl = true; - break; - } - } -#endif - - int rv = KeyDown(key, shift, ctrl, alt, consumed); + int rv = KeyDownWithModifiers + ( + key, + ModifierFlags + ( + evt.ShiftDown(), + evt.ControlDown(), + evt.AltDown(), + evt.RawControlDown() + ), + consumed + ); if (key) return rv;