From 1d7b4fd8a01c3251b8007cc6d6c8a972f2055a15 Mon Sep 17 00:00:00 2001 From: Jiang Jiang Date: Mon, 25 May 2009 02:42:45 +0000 Subject: [PATCH] Get basic text input support working for Cocoa --- build-scripts/showrev.sh | 3 +++ src/video/cocoa/SDL_cocoakeyboard.m | 31 ++++++++++++++++++++++++++++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/build-scripts/showrev.sh b/build-scripts/showrev.sh index 682bf7278..a33ac7c79 100755 --- a/build-scripts/showrev.sh +++ b/build-scripts/showrev.sh @@ -9,4 +9,7 @@ if [ -d $srcdir/.svn ]; then (svnversion -c 2>/dev/null || svnversion .) | \ sed -e 's,\([0-9]*\)[A-Z]*,\1,' \ -e 's,[0-9]*:\([0-9]*\)[A-Z]*,\1,' +else + cd $srcdir + git svn info | grep Revision | awk '{ print $2 }' fi diff --git a/src/video/cocoa/SDL_cocoakeyboard.m b/src/video/cocoa/SDL_cocoakeyboard.m index f9b01f302..c605d67a3 100644 --- a/src/video/cocoa/SDL_cocoakeyboard.m +++ b/src/video/cocoa/SDL_cocoakeyboard.m @@ -61,7 +61,26 @@ - (void) doCommandBySelector:(SEL)myselector; @end @implementation SDLTranslatorResponder -- (void) doCommandBySelector:(SEL) myselector {} + +- (void) insertText:(id) aString +{ + const char *str; + + NSLog(@"insertText: %@", aString); + + if ([aString isKindOfClass: [NSAttributedString class]]) + str = [[aString string] UTF8String]; + else + str = [aString UTF8String]; + + SDL_SendKeyboardText(0, str); +} + +- (void) doCommandBySelector:(SEL) myselector +{ + NSLog(@"doCommandBySelector, passed down"); + [super doCommandBySelector: myselector]; +} @end /* This is the original behavior, before support was added for @@ -510,12 +529,22 @@ - (void) doCommandBySelector:(SEL) myselector {} } if (SDL_EventState(SDL_TEXTINPUT, SDL_QUERY)) { /* FIXME CW 2007-08-16: only send those events to the field editor for which we actually want text events, not e.g. esc or function keys. Arrow keys in particular seem to produce crashes sometimes. */ + NSLog(@"interpretKeyEvents"); + if (! [[data->fieldEdit superview] isEqual: [[event window] contentView]]) + { + NSLog(@"add fieldEdit to window contentView"); + [data->fieldEdit removeFromSuperview]; + [[[event window] contentView] addSubview: data->fieldEdit]; + [[event window] makeFirstResponder: data->fieldEdit]; + } [data->fieldEdit interpretKeyEvents:[NSArray arrayWithObject:event]]; +#if 0 text = [[event characters] UTF8String]; if(text && *text) { SDL_SendKeyboardText(data->keyboard, text); [data->fieldEdit setString:@""]; } +#endif } break; case NSKeyUp: