(svn r25687) -Codechange: [OSX] Pass text input directly down to the text handling.

This commit is contained in:
michi_cc 2013-08-05 20:37:37 +00:00
parent e4d48f3a3b
commit 643a294e68
2 changed files with 28 additions and 10 deletions

View File

@ -788,6 +788,23 @@ void cocoaReleaseAutoreleasePool()
if (_cocoa_subdriver != NULL) UndrawMouseCursor(); if (_cocoa_subdriver != NULL) UndrawMouseCursor();
_cursor.in_window = false; _cursor.in_window = false;
} }
/** Insert the given text at the caret. */
- (void)insertText:(id)aString
{
NSString *s = [ aString isKindOfClass:[ NSAttributedString class ] ] ? [ aString string ] : (NSString *)aString;
HandleTextInput(NULL, true);
HandleTextInput([ s UTF8String ]);
}
/** Invoke the selector if we implement it. */
- (void)doCommandBySelector:(SEL)aSelector
{
if ([ self respondsToSelector:aSelector ]) [ self performSelector:aSelector ];
}
@end @end

View File

@ -35,6 +35,7 @@
#include "../../network/network.h" #include "../../network/network.h"
#include "../../core/random_func.hpp" #include "../../core/random_func.hpp"
#include "../../texteff.hpp" #include "../../texteff.hpp"
#include "../../window_func.h"
#import <sys/time.h> /* gettimeofday */ #import <sys/time.h> /* gettimeofday */
@ -399,7 +400,6 @@ static bool QZ_PollEvent()
NSString *chars; NSString *chars;
NSPoint pt; NSPoint pt;
NSText *fieldEditor;
switch ([ event type ]) { switch ([ event type ]) {
case NSMouseMoved: case NSMouseMoved:
case NSOtherMouseDragged: case NSOtherMouseDragged:
@ -516,17 +516,18 @@ static bool QZ_PollEvent()
break; break;
} }
fieldEditor = [[ event window ] fieldEditor:YES forObject:nil ]; if (EditBoxInGlobalFocus()) {
[ fieldEditor setString:@"" ]; [ _cocoa_subdriver->cocoaview interpretKeyEvents:[ NSArray arrayWithObject:event ] ];
[ fieldEditor interpretKeyEvents: [ NSArray arrayWithObject:event ] ];
chars = [ event characters ];
if ([ chars length ] == 0) {
QZ_KeyEvent([ event keyCode ], 0, YES); QZ_KeyEvent([ event keyCode ], 0, YES);
} else { } else {
QZ_KeyEvent([ event keyCode ], [ chars characterAtIndex:0 ], YES); chars = [ event characters ];
for (uint i = 1; i < [ chars length ]; i++) { if ([ chars length ] == 0) {
QZ_KeyEvent(0, [ chars characterAtIndex:i ], YES); QZ_KeyEvent([ event keyCode ], 0, YES);
} else {
QZ_KeyEvent([ event keyCode ], [ chars characterAtIndex:0 ], YES);
for (uint i = 1; i < [ chars length ]; i++) {
QZ_KeyEvent(0, [ chars characterAtIndex:i ], YES);
}
} }
} }
break; break;