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.
This commit is contained in:
Vadim Zeitlin
2015-11-09 03:27:03 +01:00
parent aef9eff1be
commit bfdf70d14a

View File

@@ -1037,11 +1037,7 @@ int ScintillaWX::DoKeyDown(const wxKeyEvent& evt, bool* consumed)
return 0; return 0;
} }
bool shift = evt.ShiftDown(), if (evt.RawControlDown() && key >= 1 && key <= 26 && key != WXK_BACK)
ctrl = evt.ControlDown(),
alt = evt.AltDown();
if (ctrl && key >= 1 && key <= 26 && key != WXK_BACK)
key += 'A' - 1; key += 'A' - 1;
switch (key) { switch (key) {
@@ -1082,23 +1078,18 @@ int ScintillaWX::DoKeyDown(const wxKeyEvent& evt, bool* consumed)
case WXK_MENU: key = SCK_MENU; break; case WXK_MENU: key = SCK_MENU; break;
} }
#ifdef __WXMAC__ int rv = KeyDownWithModifiers
if ( evt.MetaDown() ) { (
// check for a few common Mac Meta-key combos and remap them to Ctrl key,
// for Scintilla ModifierFlags
switch ( key ) { (
case 'Z': // Undo evt.ShiftDown(),
case 'X': // Cut evt.ControlDown(),
case 'C': // Copy evt.AltDown(),
case 'V': // Paste evt.RawControlDown()
case 'A': // Select All ),
ctrl = true; consumed
break; );
}
}
#endif
int rv = KeyDown(key, shift, ctrl, alt, consumed);
if (key) if (key)
return rv; return rv;