From: Jjgod Jiang
Date: Mon, 18 Jan 2010 17:46:35 +0800 Subject: [PATCH] Polish text input handling for Mac OS X - Prevent crash caused by uninitialized video data - Prevent beeping caused by unhandled Cocoa selectors (like moveUp: moveDown:, etc.) --HG-- extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%404436
This commit is contained in:
parent
257e8decfd
commit
37d1b35d66
3 changed files with 13 additions and 10 deletions
|
@ -3580,7 +3580,7 @@ SDL_GetWindowWMInfo(SDL_WindowID windowID, struct SDL_SysWMinfo *info)
|
|||
void
|
||||
SDL_StartTextInput(void)
|
||||
{
|
||||
if (_this->StartTextInput) {
|
||||
if (_this && _this->StartTextInput) {
|
||||
_this->StartTextInput(_this);
|
||||
}
|
||||
SDL_EventState(SDL_TEXTINPUT, SDL_ENABLE);
|
||||
|
@ -3590,7 +3590,7 @@ SDL_StartTextInput(void)
|
|||
void
|
||||
SDL_StopTextInput(void)
|
||||
{
|
||||
if (_this->StopTextInput) {
|
||||
if (_this && _this->StopTextInput) {
|
||||
_this->StopTextInput(_this);
|
||||
}
|
||||
SDL_EventState(SDL_TEXTINPUT, SDL_DISABLE);
|
||||
|
@ -3600,7 +3600,7 @@ SDL_StopTextInput(void)
|
|||
void
|
||||
SDL_SetTextInputRect(SDL_Rect *rect)
|
||||
{
|
||||
if (_this->SetTextInputRect) {
|
||||
if (_this && _this->SetTextInputRect) {
|
||||
_this->SetTextInputRect(_this, rect);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -212,7 +212,6 @@ Cocoa_PumpEvents(_THIS)
|
|||
case NSFlagsChanged:
|
||||
Cocoa_HandleKeyEvent(_this, event);
|
||||
/* Fall through to pass event to NSApp; er, nevermind... */
|
||||
/* FIXME: Find a way to stop the beeping, using delegate */
|
||||
|
||||
/* Add to support system-wide keyboard shortcuts like CMD+Space */
|
||||
if (([event modifierFlags] & NSCommandKeyMask) || [event type] == NSFlagsChanged)
|
||||
|
|
|
@ -99,7 +99,9 @@
|
|||
|
||||
- (void) doCommandBySelector:(SEL) myselector
|
||||
{
|
||||
[super doCommandBySelector: myselector];
|
||||
// No need to do anything since we are not using Cocoa
|
||||
// selectors to handle special keys, instead we use SDL
|
||||
// key events to do the same job.
|
||||
}
|
||||
|
||||
- (BOOL) hasMarkedText
|
||||
|
@ -649,11 +651,13 @@ Cocoa_StopTextInput(_THIS)
|
|||
{
|
||||
SDL_VideoData *data = (SDL_VideoData *) _this->driverdata;
|
||||
|
||||
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
||||
[data->fieldEdit removeFromSuperview];
|
||||
[data->fieldEdit release];
|
||||
data->fieldEdit = nil;
|
||||
[pool release];
|
||||
if (data && data->fieldEdit) {
|
||||
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
||||
[data->fieldEdit removeFromSuperview];
|
||||
[data->fieldEdit release];
|
||||
data->fieldEdit = nil;
|
||||
[pool release];
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue