imm: Implement GetCompositionFont.
authorAric Stewart <aric@codeweavers.com>
Tue, 1 Apr 2008 16:13:36 +0000 (11:13 -0500)
committerAlexandre Julliard <julliard@winehq.org>
Tue, 1 Apr 2008 21:38:28 +0000 (23:38 +0200)
dlls/imm32/imm.c

index 866c3e3486ac14e48998ff695a6b9326a9aae937..ab57bcea4b1c2c5323404ae2329d3ba07ad6c07c 100644 (file)
@@ -917,9 +917,19 @@ BOOL WINAPI ImmGetCandidateWindow(
  */
 BOOL WINAPI ImmGetCompositionFontA(HIMC hIMC, LPLOGFONTA lplf)
 {
-  FIXME("(%p, %p): stub\n", hIMC, lplf);
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return FALSE;
+    LOGFONTW lfW;
+    BOOL rc;
+
+    TRACE("(%p, %p):\n", hIMC, lplf);
+
+    rc = ImmGetCompositionFontW(hIMC,&lfW);
+    if (rc)
+    {
+        memcpy(lplf,&lfW,sizeof(LOGFONTA));
+        WideCharToMultiByte(CP_ACP, 0, lfW.lfFaceName, -1, lplf->lfFaceName,
+                        LF_FACESIZE, NULL, NULL);
+    }
+    return rc;
 }
 
 /***********************************************************************
@@ -927,9 +937,16 @@ BOOL WINAPI ImmGetCompositionFontA(HIMC hIMC, LPLOGFONTA lplf)
  */
 BOOL WINAPI ImmGetCompositionFontW(HIMC hIMC, LPLOGFONTW lplf)
 {
-  FIXME("(%p, %p): stub\n", hIMC, lplf);
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return FALSE;
+    InputContextData *data = (InputContextData*)hIMC;
+
+    TRACE("(%p, %p):\n", hIMC, lplf);
+
+    if (!data)
+        return FALSE;
+
+    *lplf = data->IMC.lfFont.W;
+
+    return TRUE;
 }
 
 /***********************************************************************