Commit bb52d301 authored by Aric Stewart's avatar Aric Stewart Committed by Alexandre Julliard

imm32: ImmDestroyContext cannot destroy the default context.

parent 5c8473ba
...@@ -109,6 +109,8 @@ static const WCHAR szwWineIMCProperty[] = {'W','i','n','e','I','m','m','H','I',' ...@@ -109,6 +109,8 @@ static const WCHAR szwWineIMCProperty[] = {'W','i','n','e','I','m','m','H','I','
#define is_himc_ime_unicode(p) (p->immKbd->imeInfo.fdwProperty & IME_PROP_UNICODE) #define is_himc_ime_unicode(p) (p->immKbd->imeInfo.fdwProperty & IME_PROP_UNICODE)
#define is_kbd_ime_unicode(p) (p->imeInfo.fdwProperty & IME_PROP_UNICODE) #define is_kbd_ime_unicode(p) (p->imeInfo.fdwProperty & IME_PROP_UNICODE)
static BOOL IMM_DestroyContext(HIMC hIMC);
static inline WCHAR *strdupAtoW( const char *str ) static inline WCHAR *strdupAtoW( const char *str )
{ {
WCHAR *ret = NULL; WCHAR *ret = NULL;
...@@ -150,7 +152,7 @@ static void IMM_InitThreadData(void) ...@@ -150,7 +152,7 @@ static void IMM_InitThreadData(void)
static void IMM_FreeThreadData(void) static void IMM_FreeThreadData(void)
{ {
IMMThreadData* data = TlsGetValue(tlsIndex); IMMThreadData* data = TlsGetValue(tlsIndex);
ImmDestroyContext(data->defaultContext); IMM_DestroyContext(data->defaultContext);
DestroyWindow(data->hwndDefault); DestroyWindow(data->hwndDefault);
HeapFree(GetProcessHeap(),0,data); HeapFree(GetProcessHeap(),0,data);
TRACE("Thread Data Destroyed\n"); TRACE("Thread Data Destroyed\n");
...@@ -510,7 +512,7 @@ HIMC WINAPI ImmCreateContext(void) ...@@ -510,7 +512,7 @@ HIMC WINAPI ImmCreateContext(void)
if (!new_context->immKbd->pImeSelect(new_context, TRUE)) if (!new_context->immKbd->pImeSelect(new_context, TRUE))
{ {
TRACE("Selection of IME failed\n"); TRACE("Selection of IME failed\n");
ImmDestroyContext(new_context); IMM_DestroyContext(new_context);
return 0; return 0;
} }
...@@ -520,10 +522,7 @@ HIMC WINAPI ImmCreateContext(void) ...@@ -520,10 +522,7 @@ HIMC WINAPI ImmCreateContext(void)
return (HIMC)new_context; return (HIMC)new_context;
} }
/*********************************************************************** static BOOL IMM_DestroyContext(HIMC hIMC)
* ImmDestroyContext (IMM32.@)
*/
BOOL WINAPI ImmDestroyContext(HIMC hIMC)
{ {
InputContextData *data = (InputContextData*)hIMC; InputContextData *data = (InputContextData*)hIMC;
...@@ -550,6 +549,17 @@ BOOL WINAPI ImmDestroyContext(HIMC hIMC) ...@@ -550,6 +549,17 @@ BOOL WINAPI ImmDestroyContext(HIMC hIMC)
} }
/*********************************************************************** /***********************************************************************
* ImmDestroyContext (IMM32.@)
*/
BOOL WINAPI ImmDestroyContext(HIMC hIMC)
{
if (hIMC != IMM_GetThreadData()->defaultContext)
return IMM_DestroyContext(hIMC);
else
return FALSE;
}
/***********************************************************************
* ImmDisableIME (IMM32.@) * ImmDisableIME (IMM32.@)
*/ */
BOOL WINAPI ImmDisableIME(DWORD idThread) BOOL WINAPI ImmDisableIME(DWORD idThread)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment