mirror of
https://github.com/gnustep/libs-gui.git
synced 2025-05-31 06:10:48 +00:00
Updated processing of key events to fix in the backend
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@7369 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
34da01c114
commit
46fe4a5ba8
3 changed files with 42 additions and 24 deletions
|
@ -2566,16 +2566,23 @@ static SEL getSel = @selector(objectAtIndex:);
|
|||
|
||||
- (void) keyDown: (NSEvent *)theEvent;
|
||||
{
|
||||
// unsigned int flags = [theEvent modifierFlags];
|
||||
unsigned int key_code = [theEvent keyCode];
|
||||
NSString *characters = [theEvent characters];
|
||||
unichar character = 0;
|
||||
|
||||
if ([characters length] > 0)
|
||||
{
|
||||
character = [characters characterAtIndex: 0];
|
||||
}
|
||||
|
||||
// TODO
|
||||
// Selecting (not-editable, not-selectable cells) with the keyboard
|
||||
// NSLog (@"NSMatrix -keyDown:");
|
||||
|
||||
switch (key_code)
|
||||
switch (character)
|
||||
{
|
||||
case 0x000d: // Enter
|
||||
case NSCarriageReturnCharacter:
|
||||
case NSNewlineCharacter:
|
||||
case NSEnterCharacter:
|
||||
[self selectText: self];
|
||||
break;
|
||||
default:
|
||||
|
|
|
@ -118,15 +118,20 @@
|
|||
- (void) interpretKeyEvents:(NSArray*)eventArray
|
||||
{
|
||||
// FIXME: As NSInputManger is still missing this method is hard coded
|
||||
unsigned short keyCode;
|
||||
NSEvent *theEvent;
|
||||
NSEnumerator *eventEnum = [eventArray objectEnumerator];
|
||||
|
||||
while((theEvent = [eventEnum nextObject]) != nil)
|
||||
{
|
||||
keyCode = [theEvent keyCode];
|
||||
NSString *characters = [theEvent characters];
|
||||
unichar character = 0;
|
||||
|
||||
switch (keyCode)
|
||||
if ([characters length] > 0)
|
||||
{
|
||||
character = [characters characterAtIndex: 0];
|
||||
}
|
||||
|
||||
switch (character)
|
||||
{
|
||||
case NSUpArrowFunctionKey:
|
||||
[self doCommandBySelector: @selector(moveUp:)];
|
||||
|
@ -158,25 +163,26 @@
|
|||
case NSPageDownFunctionKey:
|
||||
[self doCommandBySelector: @selector(pageDown:)];
|
||||
break;
|
||||
case 0x0008:
|
||||
//BackspaceKey
|
||||
case NSBackspaceCharacter:
|
||||
[self doCommandBySelector: @selector(deleteBackward:)];
|
||||
break;
|
||||
case 0x0009:
|
||||
// TabKey
|
||||
case NSTabCharacter:
|
||||
if ([theEvent modifierFlags] & NSShiftKeyMask)
|
||||
[self doCommandBySelector: @selector(insertBacktab:)];
|
||||
else
|
||||
[self doCommandBySelector: @selector(insertTab:)];
|
||||
break;
|
||||
case 0x000a:
|
||||
case 0x000d:
|
||||
// Enter, Newline
|
||||
case NSEnterCharacter:
|
||||
case NSFormFeedCharacter:
|
||||
case NSCarriageReturnCharacter:
|
||||
[self doCommandBySelector: @selector(insertNewline:)];
|
||||
break;
|
||||
case 0:
|
||||
/* Character to implement ?? */
|
||||
break;
|
||||
default:
|
||||
// If the character(s) was not a special one, simply insert it.
|
||||
[self insertText: [theEvent characters]];
|
||||
[self insertText: characters];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1940,10 +1940,16 @@ resetCursorRectsForView(NSView *theView)
|
|||
|
||||
- (void) keyDown: (NSEvent*)theEvent
|
||||
{
|
||||
unsigned int key_code = [theEvent keyCode];
|
||||
NSString *characters = [theEvent characters];
|
||||
unichar character = 0;
|
||||
|
||||
if ([characters length] > 0)
|
||||
{
|
||||
character = [characters characterAtIndex: 0];
|
||||
}
|
||||
|
||||
// If this is a TAB or TAB+SHIFT event, move to the next key view
|
||||
if (key_code == 0x09)
|
||||
if (character == NSTabCharacter)
|
||||
{
|
||||
if ([theEvent modifierFlags] & NSShiftKeyMask)
|
||||
[self selectPreviousKeyView: self];
|
||||
|
@ -1953,13 +1959,12 @@ resetCursorRectsForView(NSView *theView)
|
|||
}
|
||||
|
||||
// If this is an ESC event, abort modal loop
|
||||
if (key_code == 0x1b)
|
||||
if (character == 0x001b)
|
||||
{
|
||||
NSApplication *app = [NSApplication sharedApplication];
|
||||
if ([app modalWindow] == self)
|
||||
if ([NSApp modalWindow] == self)
|
||||
{
|
||||
// NB: The following *never* returns.
|
||||
[app abortModal];
|
||||
[NSApp abortModal];
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
@ -1975,11 +1980,11 @@ resetCursorRectsForView(NSView *theView)
|
|||
timestamp: [theEvent timestamp]
|
||||
windowNumber: [theEvent windowNumber]
|
||||
context: [theEvent context]
|
||||
characters: [theEvent characters]
|
||||
characters: characters
|
||||
charactersIgnoringModifiers: [theEvent
|
||||
charactersIgnoringModifiers]
|
||||
isARepeat: [theEvent isARepeat]
|
||||
keyCode: key_code];
|
||||
keyCode: [theEvent keyCode]];
|
||||
if ([self performKeyEquivalent: new_event])
|
||||
return;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue