aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorTse Kit Yam <me@kytse.com>2016-09-30 12:59:53 +1000
committerTse Kit Yam <me@kytse.com>2016-09-30 12:59:53 +1000
commit73f798c039ac4e2b8127f79ed2fb4f0ca085e73f (patch)
treee162f68c3d51bd35a49facb78d68d35f2af5309c
parent03378bf5015987dd140d7fabd3d043ae909a4afc (diff)
downloadscintilla-mirror-73f798c039ac4e2b8127f79ed2fb4f0ca085e73f.tar.gz
Recognize the numeric keypad '+', '-', and '/' keys as SCK_ADD, SCK_SUBTRACT,
and SCK_DIVIDE.
-rw-r--r--cocoa/ScintillaCocoa.mm23
-rw-r--r--doc/ScintillaHistory.html5
2 files changed, 25 insertions, 3 deletions
diff --git a/cocoa/ScintillaCocoa.mm b/cocoa/ScintillaCocoa.mm
index 9fe70e3a8..200b39df7 100644
--- a/cocoa/ScintillaCocoa.mm
+++ b/cocoa/ScintillaCocoa.mm
@@ -2081,7 +2081,7 @@ bool ScintillaCocoa::Draw(NSRect rect, CGContextRef gc)
/**
* Helper function to translate OS X key codes to Scintilla key codes.
*/
-static inline UniChar KeyTranslate(UniChar unicodeChar)
+static inline UniChar KeyTranslate(UniChar unicodeChar, NSEventModifierFlags modifierFlags)
{
switch (unicodeChar)
{
@@ -2110,6 +2110,21 @@ static inline UniChar KeyTranslate(UniChar unicodeChar)
return SCK_RETURN;
case 27:
return SCK_ESCAPE;
+ case '+':
+ if (modifierFlags & NSNumericPadKeyMask)
+ return SCK_ADD;
+ else
+ return unicodeChar;
+ case '-':
+ if (modifierFlags & NSNumericPadKeyMask)
+ return SCK_SUBTRACT;
+ else
+ return unicodeChar;
+ case '/':
+ if (modifierFlags & NSNumericPadKeyMask)
+ return SCK_DIVIDE;
+ else
+ return unicodeChar;
case 127:
return SCK_BACK;
case '\t':
@@ -2158,11 +2173,13 @@ bool ScintillaCocoa::KeyboardInput(NSEvent* event)
for (size_t i = 0; i < input.length; i++)
{
const UniChar originalKey = [input characterAtIndex: i];
- UniChar key = KeyTranslate(originalKey);
+ NSEventModifierFlags modifierFlags = [event modifierFlags];
+
+ UniChar key = KeyTranslate(originalKey, modifierFlags);
bool consumed = false; // Consumed as command?
- if (KeyDownWithModifiers(key, TranslateModifierFlags([event modifierFlags]), &consumed))
+ if (KeyDownWithModifiers(key, TranslateModifierFlags(modifierFlags), &consumed))
handled = true;
if (consumed)
handled = true;
diff --git a/doc/ScintillaHistory.html b/doc/ScintillaHistory.html
index 080847d8e..dd51f6de4 100644
--- a/doc/ScintillaHistory.html
+++ b/doc/ScintillaHistory.html
@@ -591,6 +591,11 @@
<a href="http://sourceforge.net/p/scintilla/bugs/1863/">Bug #1863</a>.
</li>
<li>
+ On Cocoa, recognize the numeric keypad '+', '-', and '/' keys as
+ SCK_ADD, SCK_SUBTRACT, and SCK_DIVIDE.
+ <a href="http://sourceforge.net/p/scintilla/bugs/1867/">Bug #1867</a>.
+ </li>
+ <li>
On GTK+ 3.21+ fix incorrect font size in auto-completion list.
<a href="http://sourceforge.net/p/scintilla/bugs/1859/">Bug #1859</a>.
</li>