# HG changeset patch # User Jiang Jiang # Date 1243219365 0 # Node ID da6cbfa5b5f29dc43e17ed6ba105b578515c26d8 # Parent 395e0c7a78a3140edf78e94125e38c06cd817577 Get basic text input support working for Cocoa diff -r 395e0c7a78a3 -r da6cbfa5b5f2 build-scripts/showrev.sh --- a/build-scripts/showrev.sh Sat May 23 22:48:40 2009 +0000 +++ b/build-scripts/showrev.sh Mon May 25 02:42:45 2009 +0000 @@ -9,4 +9,7 @@ (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 -r 395e0c7a78a3 -r da6cbfa5b5f2 src/video/cocoa/SDL_cocoakeyboard.m --- a/src/video/cocoa/SDL_cocoakeyboard.m Sat May 23 22:48:40 2009 +0000 +++ b/src/video/cocoa/SDL_cocoakeyboard.m Mon May 25 02:42:45 2009 +0000 @@ -61,7 +61,26 @@ @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 @@ } 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: