Aric Stewart : msctf: Use ITfCategoryMgr:: FindClosestCategory to set catid when enuming language profiles.
Alexandre Julliard
julliard at winehq.org
Fri Feb 27 10:02:48 CST 2009
Module: wine
Branch: master
Commit: 4fb6c01453494122671df56a2d48ad9b9722b4be
URL: http://source.winehq.org/git/wine.git/?a=commit;h=4fb6c01453494122671df56a2d48ad9b9722b4be
Author: Aric Stewart <aric at codeweavers.com>
Date: Mon Feb 23 14:22:38 2009 -0600
msctf: Use ITfCategoryMgr::FindClosestCategory to set catid when enuming language profiles.
---
dlls/msctf/inputprocessor.c | 18 +++++++++++++++++-
dlls/msctf/tests/inputprocessor.c | 2 +-
2 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/dlls/msctf/inputprocessor.c b/dlls/msctf/inputprocessor.c
index de39af9..7df5575 100644
--- a/dlls/msctf/inputprocessor.c
+++ b/dlls/msctf/inputprocessor.c
@@ -72,6 +72,7 @@ typedef struct tagEnumTfLanguageProfiles {
DWORD lang_index;
LANGID langid;
+ ITfCategoryMgr *catmgr;
} EnumTfLanguageProfiles;
static HRESULT ProfilesEnumGuid_Constructor(IEnumGUID **ppOut);
@@ -670,6 +671,7 @@ static void EnumTfLanguageProfiles_Destructor(EnumTfLanguageProfiles *This)
RegCloseKey(This->tipkey);
if (This->langkey)
RegCloseKey(This->langkey);
+ ITfCategoryMgr_Release(This->catmgr);
HeapFree(GetProcessHeap(),0,This);
}
@@ -746,6 +748,9 @@ static INT next_LanguageProfile(EnumTfLanguageProfiles *This, CLSID clsid, TF_LA
if (tflp)
{
+ static const GUID * tipcats[3] = { &GUID_TFCAT_TIP_KEYBOARD,
+ &GUID_TFCAT_TIP_SPEECH,
+ &GUID_TFCAT_TIP_HANDWRITING };
res = CLSIDFromString(profileid, &profile);
if (FAILED(res)) return 0;
@@ -754,7 +759,10 @@ static INT next_LanguageProfile(EnumTfLanguageProfiles *This, CLSID clsid, TF_LA
/* FIXME */
tflp->fActive = FALSE;
tflp->guidProfile = profile;
- /* FIXME set catid */
+ if (ITfCategoryMgr_FindClosestCategory(This->catmgr, &clsid,
+ &tflp->catid, tipcats, 3) != S_OK)
+ ITfCategoryMgr_FindClosestCategory(This->catmgr, &clsid,
+ &tflp->catid, NULL, 0);
}
return 1;
@@ -865,6 +873,7 @@ static const IEnumTfLanguageProfilesVtbl IEnumTfLanguageProfiles_Vtbl ={
static HRESULT EnumTfLanguageProfiles_Constructor(LANGID langid, IEnumTfLanguageProfiles **ppOut)
{
+ HRESULT hr;
EnumTfLanguageProfiles *This;
This = HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(EnumTfLanguageProfiles));
@@ -875,6 +884,13 @@ static HRESULT EnumTfLanguageProfiles_Constructor(LANGID langid, IEnumTfLanguage
This->refCount = 1;
This->langid = langid;
+ hr = CategoryMgr_Constructor(NULL,(IUnknown**)&This->catmgr);
+ if (FAILED(hr))
+ {
+ HeapFree(GetProcessHeap(),0,This);
+ return hr;
+ }
+
if (RegCreateKeyExW(HKEY_LOCAL_MACHINE, szwSystemTIPKey, 0, NULL, 0,
KEY_READ | KEY_WRITE, NULL, &This->tipkey, NULL) != ERROR_SUCCESS)
return E_FAIL;
diff --git a/dlls/msctf/tests/inputprocessor.c b/dlls/msctf/tests/inputprocessor.c
index 2d32413..d689034 100644
--- a/dlls/msctf/tests/inputprocessor.c
+++ b/dlls/msctf/tests/inputprocessor.c
@@ -115,7 +115,7 @@ static void test_EnumLanguageProfiles(void)
{
found = TRUE;
ok(profile.langid == gLangid, "LangId Incorrect\n");
- todo_wine ok(IsEqualGUID(&profile.catid,&GUID_TFCAT_TIP_KEYBOARD), "CatId Incorrect\n");
+ ok(IsEqualGUID(&profile.catid,&GUID_TFCAT_TIP_KEYBOARD), "CatId Incorrect\n");
ok(IsEqualGUID(&profile.guidProfile,&CLSID_FakeService), "guidProfile Incorrect\n");
}
}
More information about the wine-cvs
mailing list