Jacek Caban : mshtml: Added IOleCommandTarget implementation to HTMLTxtRange.

Alexandre Julliard julliard at winehq.org
Mon Nov 26 08:16:20 CST 2007


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Sun Nov 25 19:16:04 2007 +0100

mshtml: Added IOleCommandTarget implementation to HTMLTxtRange.

---

 dlls/mshtml/txtrange.c |   59 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 59 insertions(+), 0 deletions(-)

diff --git a/dlls/mshtml/txtrange.c b/dlls/mshtml/txtrange.c
index 0ad3621..1d8d2cb 100644
--- a/dlls/mshtml/txtrange.c
+++ b/dlls/mshtml/txtrange.c
@@ -40,6 +40,7 @@ static const WCHAR brW[] = {'b','r',0};
 
 typedef struct {
     const IHTMLTxtRangeVtbl *lpHTMLTxtRangeVtbl;
+    const IOleCommandTargetVtbl *lpOleCommandTargetVtbl;
 
     LONG ref;
 
@@ -942,6 +943,9 @@ static HRESULT WINAPI HTMLTxtRange_QueryInterface(IHTMLTxtRange *iface, REFIID r
     }else if(IsEqualGUID(&IID_IHTMLTxtRange, riid)) {
         TRACE("(%p)->(IID_IHTMLTxtRange %p)\n", This, ppv);
         *ppv = HTMLTXTRANGE(This);
+    }else if(IsEqualGUID(&IID_IOleCommandTarget, riid)) {
+        TRACE("(%p)->(IID_IOleCommandTarget %p)\n", This, ppv);
+        *ppv = CMDTARGET(This);
     }
 
     if(*ppv) {
@@ -1697,11 +1701,66 @@ static const IHTMLTxtRangeVtbl HTMLTxtRangeVtbl = {
     HTMLTxtRange_execCommandShowHelp
 };
 
+#define OLECMDTRG_THIS(iface) DEFINE_THIS(HTMLTxtRange, OleCommandTarget, iface)
+
+static HRESULT WINAPI RangeCommandTarget_QueryInterface(IOleCommandTarget *iface, REFIID riid, void **ppv)
+{
+    HTMLTxtRange *This = OLECMDTRG_THIS(iface);
+    return IHTMLTxtRange_QueryInterface(HTMLTXTRANGE(This), riid, ppv);
+}
+
+static ULONG WINAPI RangeCommandTarget_AddRef(IOleCommandTarget *iface)
+{
+    HTMLTxtRange *This = OLECMDTRG_THIS(iface);
+    return IHTMLTxtRange_AddRef(HTMLTXTRANGE(This));
+}
+
+static ULONG WINAPI RangeCommandTarget_Release(IOleCommandTarget *iface)
+{
+    HTMLTxtRange *This = OLECMDTRG_THIS(iface);
+    return IHTMLTxtRange_Release(HTMLTXTRANGE(This));
+}
+
+static HRESULT WINAPI RangeCommandTarget_QueryStatus(IOleCommandTarget *iface, const GUID *pguidCmdGroup,
+        ULONG cCmds, OLECMD prgCmds[], OLECMDTEXT *pCmdText)
+{
+    HTMLTxtRange *This = OLECMDTRG_THIS(iface);
+    FIXME("(%p)->(%s %d %p %p)\n", This, debugstr_guid(pguidCmdGroup), cCmds, prgCmds, pCmdText);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI RangeCommandTarget_Exec(IOleCommandTarget *iface, const GUID *pguidCmdGroup,
+        DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
+{
+    HTMLTxtRange *This = OLECMDTRG_THIS(iface);
+    TRACE("(%p)->(%s %d %x %p %p)\n", This, debugstr_guid(pguidCmdGroup), nCmdID,
+          nCmdexecopt, pvaIn, pvaOut);
+
+    if(pguidCmdGroup && IsEqualGUID(&CGID_MSHTML, pguidCmdGroup)) {
+        FIXME("Unsupported cmdid %d of CGID_MSHTML\n", nCmdID);
+    }else {
+        FIXME("Unsupported cmd %d of group %s\n", nCmdID, debugstr_guid(pguidCmdGroup));
+    }
+
+    return E_NOTIMPL;
+}
+
+#undef OLECMDTRG_THIS
+
+static const IOleCommandTargetVtbl OleCommandTargetVtbl = {
+    RangeCommandTarget_QueryInterface,
+    RangeCommandTarget_AddRef,
+    RangeCommandTarget_Release,
+    RangeCommandTarget_QueryStatus,
+    RangeCommandTarget_Exec
+};
+
 IHTMLTxtRange *HTMLTxtRange_Create(HTMLDocument *doc, nsIDOMRange *nsrange)
 {
     HTMLTxtRange *ret = mshtml_alloc(sizeof(HTMLTxtRange));
 
     ret->lpHTMLTxtRangeVtbl = &HTMLTxtRangeVtbl;
+    ret->lpOleCommandTargetVtbl = &OleCommandTargetVtbl;
     ret->ref = 1;
 
     if(nsrange)




More information about the wine-cvs mailing list