Aric Stewart : msctf: Implement ITfDocumentMgr::Pop.

Alexandre Julliard julliard at winehq.org
Tue Feb 3 09:13:24 CST 2009


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

Author: Aric Stewart <aric at codeweavers.com>
Date:   Mon Feb  2 10:25:16 2009 -0600

msctf: Implement ITfDocumentMgr::Pop.

---

 dlls/msctf/documentmgr.c |   25 +++++++++++++++++++++++--
 1 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/dlls/msctf/documentmgr.c b/dlls/msctf/documentmgr.c
index eb6e4d2..040db7b 100644
--- a/dlls/msctf/documentmgr.c
+++ b/dlls/msctf/documentmgr.c
@@ -129,8 +129,29 @@ static HRESULT WINAPI DocumentMgr_Push(ITfDocumentMgr *iface, ITfContext *pic)
 static HRESULT WINAPI DocumentMgr_Pop(ITfDocumentMgr *iface, DWORD dwFlags)
 {
     DocumentMgr *This = (DocumentMgr *)iface;
-    FIXME("STUB:(%p)\n",This);
-    return E_NOTIMPL;
+    TRACE("(%p) 0x%x\n",This,dwFlags);
+
+    if (dwFlags == TF_POPF_ALL)
+    {
+        if (This->contextStack[0])
+            ITfContext_Release(This->contextStack[0]);
+        if (This->contextStack[1])
+            ITfContext_Release(This->contextStack[1]);
+        This->contextStack[0] = This->contextStack[1] = NULL;
+        return S_OK;
+    }
+
+    if (dwFlags)
+        return E_INVALIDARG;
+
+    if (This->contextStack[0] == NULL) /* Cannot pop last context */
+        return E_FAIL;
+
+    ITfContext_Release(This->contextStack[0]);
+    This->contextStack[0] = This->contextStack[1];
+    This->contextStack[1] = NULL;
+
+    return S_OK;
 }
 
 static HRESULT WINAPI DocumentMgr_GetTop(ITfDocumentMgr *iface, ITfContext **ppic)




More information about the wine-cvs mailing list