Module: wine Branch: master Commit: c0233cbc887e4e83d185df68e491463cad74957b URL: http://source.winehq.org/git/wine.git/?a=commit;h=c0233cbc887e4e83d185df68e4...
Author: Aric Stewart aric@codeweavers.com Date: Thu May 7 14:27:41 2009 -0500
msctf: Implement ITfInputProcessorProfiles::ActivateLanguageProfile.
---
dlls/msctf/inputprocessor.c | 34 ++++++++++++++++++++++++++++++---- dlls/msctf/tests/inputprocessor.c | 2 +- 2 files changed, 31 insertions(+), 5 deletions(-)
diff --git a/dlls/msctf/inputprocessor.c b/dlls/msctf/inputprocessor.c index 7df5575..c32fcb3 100644 --- a/dlls/msctf/inputprocessor.c +++ b/dlls/msctf/inputprocessor.c @@ -288,9 +288,36 @@ static HRESULT WINAPI InputProcessorProfiles_ActivateLanguageProfile( ITfInputProcessorProfiles *iface, REFCLSID rclsid, LANGID langid, REFGUID guidProfiles) { + HRESULT hr; + BOOL enabled; + TF_LANGUAGEPROFILE LanguageProfile; InputProcessorProfiles *This = (InputProcessorProfiles*)iface; - FIXME("STUB:(%p)\n",This); - return E_NOTIMPL; + + TRACE("(%p) %s %x %s\n",This,debugstr_guid(rclsid),langid,debugstr_guid(guidProfiles)); + + if (langid != This->currentLanguage) return E_INVALIDARG; + + if (get_active_textservice(rclsid,NULL)) + { + TRACE("Already Active\n"); + return E_FAIL; + } + + hr = ITfInputProcessorProfiles_IsEnabledLanguageProfile(iface, rclsid, + langid, guidProfiles, &enabled); + if (FAILED(hr) || !enabled) + { + TRACE("Not Enabled\n"); + return E_FAIL; + } + + LanguageProfile.clsid = *rclsid; + LanguageProfile.langid = langid; + LanguageProfile.guidProfile = *guidProfiles; + + hr = add_active_textservice(&LanguageProfile); + + return hr; }
static HRESULT WINAPI InputProcessorProfiles_GetActiveLanguageProfile( @@ -756,8 +783,7 @@ static INT next_LanguageProfile(EnumTfLanguageProfiles *This, CLSID clsid, TF_LA
tflp->clsid = clsid; tflp->langid = This->langid; - /* FIXME */ - tflp->fActive = FALSE; + tflp->fActive = get_active_textservice(&clsid, NULL); tflp->guidProfile = profile; if (ITfCategoryMgr_FindClosestCategory(This->catmgr, &clsid, &tflp->catid, tipcats, 3) != S_OK) diff --git a/dlls/msctf/tests/inputprocessor.c b/dlls/msctf/tests/inputprocessor.c index 2477ad8..39f58e6 100644 --- a/dlls/msctf/tests/inputprocessor.c +++ b/dlls/msctf/tests/inputprocessor.c @@ -444,7 +444,7 @@ static void test_Activate(void) HRESULT hr;
hr = ITfInputProcessorProfiles_ActivateLanguageProfile(g_ipp,&CLSID_FakeService,gLangid,&CLSID_FakeService); - todo_wine ok(SUCCEEDED(hr),"Failed to Activate text service\n"); + ok(SUCCEEDED(hr),"Failed to Activate text service\n"); }
static inline int check_context_refcount(ITfContext *iface)