diff options
Diffstat (limited to 'cocoa/ScintillaCocoa.mm')
| -rw-r--r-- | cocoa/ScintillaCocoa.mm | 35 | 
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]));  }  //-------------------------------------------------------------------------------------------------- | 
