Aric Stewart : msctf: Implement ITfKeystrokeMgr::IsPreservedKey.

Alexandre Julliard julliard at winehq.org
Thu May 7 09:25:38 CDT 2009


Module: wine
Branch: master
Commit: 32828799acfd8cffd9f0d3094071acdfd4f9c84a
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=32828799acfd8cffd9f0d3094071acdfd4f9c84a

Author: Aric Stewart <aric at codeweavers.com>
Date:   Thu May  7 08:31:45 2009 -0500

msctf: Implement ITfKeystrokeMgr::IsPreservedKey.

---

 dlls/msctf/tests/inputprocessor.c |    6 +++---
 dlls/msctf/threadmgr.c            |   21 +++++++++++++++++++--
 2 files changed, 22 insertions(+), 5 deletions(-)

diff --git a/dlls/msctf/tests/inputprocessor.c b/dlls/msctf/tests/inputprocessor.c
index 4cc71ef..2477ad8 100644
--- a/dlls/msctf/tests/inputprocessor.c
+++ b/dlls/msctf/tests/inputprocessor.c
@@ -420,14 +420,14 @@ static void test_KeystrokeMgr(void)
     preserved = FALSE;
     hr = ITfKeystrokeMgr_IsPreservedKey(keymgr, &CLSID_PreservedKey, &tfpk, &preserved);
     todo_wine ok(hr == S_OK, "ITfKeystrokeMgr_IsPreservedKey failed\n");
-    if (hr == S_OK) todo_wine ok(preserved == TRUE,"misreporting preserved key\n");
+    if (hr == S_OK) ok(preserved == TRUE,"misreporting preserved key\n");
 
     hr = ITfKeystrokeMgr_UnpreserveKey(keymgr, &CLSID_PreservedKey,&tfpk);
     todo_wine ok(SUCCEEDED(hr),"ITfKeystrokeMgr_UnpreserveKey failed\n");
 
     hr = ITfKeystrokeMgr_IsPreservedKey(keymgr, &CLSID_PreservedKey, &tfpk, &preserved);
-    todo_wine ok(hr == S_FALSE, "ITfKeystrokeMgr_IsPreservedKey failed\n");
-    if (hr == S_FALSE) todo_wine ok(preserved == FALSE,"misreporting preserved key\n");
+    ok(hr == S_FALSE, "ITfKeystrokeMgr_IsPreservedKey failed\n");
+    if (hr == S_FALSE) ok(preserved == FALSE,"misreporting preserved key\n");
 
     hr = ITfKeystrokeMgr_UnpreserveKey(keymgr, &CLSID_PreservedKey,&tfpk);
     ok(hr==CONNECT_E_NOCONNECTION,"ITfKeystrokeMgr_UnpreserveKey inproperly succeeded\n");
diff --git a/dlls/msctf/threadmgr.c b/dlls/msctf/threadmgr.c
index 976fcbc..f0c76b1 100644
--- a/dlls/msctf/threadmgr.c
+++ b/dlls/msctf/threadmgr.c
@@ -547,8 +547,25 @@ static HRESULT WINAPI KeystrokeMgr_IsPreservedKey(ITfKeystrokeMgr *iface,
         REFGUID rguid, const TF_PRESERVEDKEY *pprekey, BOOL *pfRegistered)
 {
     ThreadMgr *This = impl_from_ITfKeystrokeMgrVtbl(iface);
-    FIXME("STUB:(%p)\n",This);
-    return E_NOTIMPL;
+    struct list *cursor;
+
+    TRACE("(%p) %s (%x %x) %p\n",This,debugstr_guid(rguid), (pprekey)?pprekey->uVKey:0, (pprekey)?pprekey->uModifiers:0, pfRegistered);
+
+    if (!rguid || !pprekey || !pfRegistered)
+        return E_INVALIDARG;
+
+    LIST_FOR_EACH(cursor, &This->CurrentPreservedKeys)
+    {
+        PreservedKey* key = LIST_ENTRY(cursor,PreservedKey,entry);
+        if (IsEqualGUID(rguid,&key->guid) && pprekey->uVKey == key->prekey.uVKey && pprekey->uModifiers == key->prekey.uModifiers)
+        {
+            *pfRegistered = TRUE;
+            return S_OK;
+        }
+    }
+
+    *pfRegistered = FALSE;
+    return S_FALSE;
 }
 
 static HRESULT WINAPI KeystrokeMgr_PreserveKey(ITfKeystrokeMgr *iface,




More information about the wine-cvs mailing list