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 );
 }
 
 /***********************************************************************


Reply via email to