Tested with "MS IME 2002(imekr61.ime)", "MS IME
2003(imekr70.ime)", and "Saenaru(saenaru.ime, Korean Free IME)".
---
dlls/imm32/imm.c | 29 ++++++++++++++++++++---------
1 files changed, 20 insertions(+), 9 deletions(-)
diff --git a/dlls/imm32/imm.c b/dlls/imm32/imm.c
index c03d6fd..6fb73d2 100644
--- a/dlls/imm32/imm.c
+++ b/dlls/imm32/imm.c
@@ -1761,16 +1761,27 @@ BOOL WINAPI ImmSetCompositionWindow(
BOOL WINAPI ImmSetConversionStatus(
HIMC hIMC, DWORD fdwConversion, DWORD fdwSentence)
{
- static int shown = 0;
+ BOOL bConversion = TRUE;
+ BOOL bSentence = TRUE;
+ InputContextData *data = (InputContextData*)hIMC;
- if (!shown) {
- FIXME("(%p, %d, %d): stub\n",
- hIMC, fdwConversion, fdwSentence
- );
- shown = 1;
- }
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return FALSE;
+ TRACE("%p %d %d\n", hIMC, fdwConversion, fdwSentence);
+
+ if (!data)
+ return FALSE;
+
+ if ( fdwConversion != data->IMC.fdwConversion )
+ {
+ data->IMC.fdwConversion = fdwConversion;
+ bConversion = ImmNotifyIME(hIMC, NI_CONTEXTUPDATED, 0, IMC_SETCONVERSIONMODE);
+ }
+ if ( fdwSentence != data->IMC.fdwSentence )
+ {
+ data->IMC.fdwSentence = fdwSentence;
+ bSentence = ImmNotifyIME(hIMC, NI_CONTEXTUPDATED, 0, IMC_SETSENTENCEMODE);
+ }
+
+ return ( bConversion && bSentence );
}
/***********************************************************************