aboutsummaryrefslogtreecommitdiffhomepage
path: root/cocoa/ScintillaCocoa.mm
diff options
context:
space:
mode:
Diffstat (limited to 'cocoa/ScintillaCocoa.mm')
-rw-r--r--cocoa/ScintillaCocoa.mm35
1 files changed, 20 insertions, 15 deletions
diff --git a/cocoa/ScintillaCocoa.mm b/cocoa/ScintillaCocoa.mm
index 34e016d94..5c378c903 100644
--- a/cocoa/ScintillaCocoa.mm
+++ b/cocoa/ScintillaCocoa.mm
@@ -1838,6 +1838,24 @@ static inline UniChar KeyTranslate(UniChar unicodeChar)
//--------------------------------------------------------------------------------------------------
/**
+ * Translate NSEvent modifier flags into SCI_* modifier flags.
+ *
+ * @param modifiers An integer bit set of NSSEvent modifier flags.
+ * @return A set of SCI_* modifier flags.
+ */
+static int TranslateModifierFlags(NSUInteger modifiers)
+{
+ // Signal Control as SCI_META
+ return
+ (((modifiers & NSShiftKeyMask) != 0) ? SCI_SHIFT : 0) |
+ (((modifiers & NSCommandKeyMask) != 0) ? SCI_CTRL : 0) |
+ (((modifiers & NSAlternateKeyMask) != 0) ? SCI_ALT : 0) |
+ (((modifiers & NSControlKeyMask) != 0) ? SCI_META : 0);
+}
+
+//--------------------------------------------------------------------------------------------------
+
+/**
* Main keyboard input handling method. It is called for any key down event, including function keys,
* numeric keypad input and whatnot.
*
@@ -1847,15 +1865,8 @@ static inline UniChar KeyTranslate(UniChar unicodeChar)
bool ScintillaCocoa::KeyboardInput(NSEvent* event)
{
// For now filter out function keys.
- NSUInteger modifiers = [event modifierFlags];
-
NSString* input = [event characters];
- bool control = (modifiers & NSControlKeyMask) != 0;
- bool shift = (modifiers & NSShiftKeyMask) != 0;
- bool command = (modifiers & NSCommandKeyMask) != 0;
- bool alt = (modifiers & NSAlternateKeyMask) != 0;
-
bool handled = false;
// Handle each entry individually. Usually we only have one entry anway.
@@ -1866,13 +1877,7 @@ bool ScintillaCocoa::KeyboardInput(NSEvent* event)
bool consumed = false; // Consumed as command?
- // Signal Control as SCMOD_META
- int modifierKeys =
- (shift ? SCI_SHIFT : 0) |
- (command ? SCI_CTRL : 0) |
- (alt ? SCI_ALT : 0) |
- (control ? SCI_META : 0);
- if (KeyDownWithModifiers(key, modifierKeys, &consumed))
+ if (KeyDownWithModifiers(key, TranslateModifierFlags([event modifierFlags]), &consumed))
handled = true;
if (consumed)
handled = true;
@@ -1977,7 +1982,7 @@ void ScintillaCocoa::MouseMove(NSEvent* event)
{
lastMouseEvent = event;
- ButtonMove(ConvertPoint([event locationInWindow]));
+ ButtonMoveWithModifiers(ConvertPoint([event locationInWindow]), TranslateModifierFlags([event modifierFlags]));
}
//--------------------------------------------------------------------------------------------------