From 50e06e6598ee117643be3b4a93d535b61d8da3ab Mon Sep 17 00:00:00 2001 From: dewyatt Date: Mon, 12 Jul 2010 14:17:43 -0400 Subject: [PATCH] Changed Start/StopTextInput back to not take any parameters. We call SDL_GetKeyboardFocus internally now. --- include/SDL_keyboard.h | 4 ++-- src/SDL_compat.c | 4 ++-- src/events/SDL_keyboard.c | 2 +- src/video/SDL_sysvideo.h | 4 ++-- src/video/SDL_video.c | 8 ++++---- src/video/win32/SDL_win32keyboard.c | 28 ++++++++++++++++++---------- src/video/win32/SDL_win32keyboard.h | 4 ++-- 7 files changed, 31 insertions(+), 23 deletions(-) diff --git a/include/SDL_keyboard.h b/include/SDL_keyboard.h index cccafd001..4482ac028 100644 --- a/include/SDL_keyboard.h +++ b/include/SDL_keyboard.h @@ -140,14 +140,14 @@ extern DECLSPEC const char *SDLCALL SDL_GetKeyName(SDLKey key); * \sa SDL_StopTextInput() * \sa SDL_SetTextInputRect() */ -extern DECLSPEC void SDLCALL SDL_StartTextInput(SDL_Window *window); +extern DECLSPEC void SDLCALL SDL_StartTextInput(void); /** * \brief Stop receiving any text input events. * * \sa SDL_StartTextInput() */ -extern DECLSPEC void SDLCALL SDL_StopTextInput(SDL_Window *window); +extern DECLSPEC void SDLCALL SDL_StopTextInput(void); /** * \brief Set the rectangle used to type Unicode text inputs. diff --git a/src/SDL_compat.c b/src/SDL_compat.c index 112510598..bb8e46ba8 100644 --- a/src/SDL_compat.c +++ b/src/SDL_compat.c @@ -1740,11 +1740,11 @@ SDL_EnableUNICODE(int enable) switch (enable) { case 1: SDL_enabled_UNICODE = 1; - SDL_StartTextInput(SDL_VideoWindow); + SDL_StartTextInput(); break; case 0: SDL_enabled_UNICODE = 0; - SDL_StopTextInput(SDL_VideoWindow); + SDL_StopTextInput(); break; } return previous; diff --git a/src/events/SDL_keyboard.c b/src/events/SDL_keyboard.c index 5de1116e3..f25bc6af8 100644 --- a/src/events/SDL_keyboard.c +++ b/src/events/SDL_keyboard.c @@ -617,7 +617,7 @@ SDL_SetKeyboardFocus(SDL_Window * window) 0, 0); if (SDL_EventState(SDL_TEXTINPUT, SDL_QUERY)) { - SDL_StartTextInput(window); + SDL_StartTextInput(); } } } diff --git a/src/video/SDL_sysvideo.h b/src/video/SDL_sysvideo.h index 7d93428f1..0a82717ec 100644 --- a/src/video/SDL_sysvideo.h +++ b/src/video/SDL_sysvideo.h @@ -299,8 +299,8 @@ struct SDL_VideoDevice void (*SuspendScreenSaver) (_THIS); /* Text input */ - void (*StartTextInput) (_THIS, SDL_Window *window); - void (*StopTextInput) (_THIS, SDL_Window *window); + void (*StartTextInput) (_THIS); + void (*StopTextInput) (_THIS); void (*SetTextInputRect) (_THIS, SDL_Rect *rect); /* * * */ diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index 8e10ede43..db8b5d3cb 100644 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -3385,20 +3385,20 @@ SDL_GetWindowWMInfo(SDL_Window * window, struct SDL_SysWMinfo *info) } void -SDL_StartTextInput(SDL_Window *window) +SDL_StartTextInput(void) { if (_this && _this->StartTextInput) { - _this->StartTextInput(_this, window); + _this->StartTextInput(_this); } SDL_EventState(SDL_TEXTINPUT, SDL_ENABLE); SDL_EventState(SDL_TEXTEDITING, SDL_ENABLE); } void -SDL_StopTextInput(SDL_Window *window) +SDL_StopTextInput(void) { if (_this && _this->StopTextInput) { - _this->StopTextInput(_this, window); + _this->StopTextInput(_this); } SDL_EventState(SDL_TEXTINPUT, SDL_DISABLE); SDL_EventState(SDL_TEXTEDITING, SDL_DISABLE); diff --git a/src/video/win32/SDL_win32keyboard.c b/src/video/win32/SDL_win32keyboard.c index c5de9dcc0..23caa2d28 100644 --- a/src/video/win32/SDL_win32keyboard.c +++ b/src/video/win32/SDL_win32keyboard.c @@ -141,21 +141,29 @@ WIN_QuitKeyboard(_THIS) } void -WIN_StartTextInput(_THIS, SDL_Window *window) +WIN_StartTextInput(_THIS) { - HWND hwnd = ((SDL_WindowData *) window->driverdata)->hwnd; - SDL_VideoData *videodata = (SDL_VideoData *)_this->driverdata; - IME_Init(videodata, hwnd); - IME_Enable(videodata, hwnd); + SDL_Window *window = SDL_GetKeyboardFocus(); + if (window) + { + HWND hwnd = ((SDL_WindowData *) window->driverdata)->hwnd; + SDL_VideoData *videodata = (SDL_VideoData *)_this->driverdata; + IME_Init(videodata, hwnd); + IME_Enable(videodata, hwnd); + } } void -WIN_StopTextInput(_THIS, SDL_Window *window) +WIN_StopTextInput(_THIS) { - HWND hwnd = ((SDL_WindowData *) window->driverdata)->hwnd; - SDL_VideoData *videodata = (SDL_VideoData *)_this->driverdata; - IME_Init(videodata, hwnd); - IME_Disable(videodata, hwnd); + SDL_Window *window = SDL_GetKeyboardFocus(); + if (window) + { + HWND hwnd = ((SDL_WindowData *) window->driverdata)->hwnd; + SDL_VideoData *videodata = (SDL_VideoData *)_this->driverdata; + IME_Init(videodata, hwnd); + IME_Disable(videodata, hwnd); + } } void diff --git a/src/video/win32/SDL_win32keyboard.h b/src/video/win32/SDL_win32keyboard.h index b2acc0165..670730bba 100644 --- a/src/video/win32/SDL_win32keyboard.h +++ b/src/video/win32/SDL_win32keyboard.h @@ -31,8 +31,8 @@ extern void WIN_InitKeyboard(_THIS); extern void WIN_UpdateKeymap(void); extern void WIN_QuitKeyboard(_THIS); -extern void WIN_StartTextInput(_THIS, SDL_Window *window); -extern void WIN_StopTextInput(_THIS, SDL_Window *window); +extern void WIN_StartTextInput(_THIS); +extern void WIN_StopTextInput(_THIS); extern void WIN_SetTextInputRect(_THIS, SDL_Rect *rect); extern SDL_bool IME_HandleMessage(HWND hwnd, UINT msg, WPARAM wParam, LPARAM *lParam, struct SDL_VideoData *videodata);