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