[PATCH 4/4] mshtml: Add IHTMLControlRange interface stub.
Dmitry Timoshkov
dmitry at baikal.ru
Tue Jun 18 01:10:32 CDT 2019
Signed-off-by: Dmitry Timoshkov <dmitry at baikal.ru>
---
dlls/mshtml/main.c | 1 +
dlls/mshtml/txtrange.c | 196 +++++++++++++++++++++++++++++++++++++++++
include/mshtmdid.h | 17 ++++
include/mshtml.idl | 57 ++++++++++++
4 files changed, 271 insertions(+)
diff --git a/dlls/mshtml/main.c b/dlls/mshtml/main.c
index 8ce7f8680c..b3c6cf80d4 100644
--- a/dlls/mshtml/main.c
+++ b/dlls/mshtml/main.c
@@ -711,6 +711,7 @@ const char *debugstr_mshtml_guid(const GUID *iid)
X(IID_IEnumVARIANT);
X(IID_IHlinkTarget);
X(IID_IHTMLBlockElement);
+ X(IID_IHTMLControlRange);
X(IID_IHTMLDocument6);
X(IID_IHTMLDocument7);
X(IID_IHTMLEditServices);
diff --git a/dlls/mshtml/txtrange.c b/dlls/mshtml/txtrange.c
index c6a6ed096b..ab83009a09 100644
--- a/dlls/mshtml/txtrange.c
+++ b/dlls/mshtml/txtrange.c
@@ -39,6 +39,7 @@ static const WCHAR hrW[] = {'h','r',0};
typedef struct {
DispatchEx dispex;
IHTMLTxtRange IHTMLTxtRange_iface;
+ IHTMLControlRange IHTMLControlRange_iface;
IOleCommandTarget IOleCommandTarget_iface;
LONG ref;
@@ -69,6 +70,198 @@ typedef enum {
RU_TEXTEDIT
} range_unit_t;
+static inline HTMLTxtRange *impl_from_IHTMLControlRange(IHTMLControlRange *iface)
+{
+ return CONTAINING_RECORD(iface, HTMLTxtRange, IHTMLControlRange_iface);
+}
+
+static HRESULT WINAPI HTMLControlRange_QueryInterface(IHTMLControlRange *iface, REFIID riid, void **ppv)
+{
+ HTMLTxtRange *This = impl_from_IHTMLControlRange(iface);
+ return IHTMLTxtRange_QueryInterface(&This->IHTMLTxtRange_iface, riid, ppv);
+}
+
+static ULONG WINAPI HTMLControlRange_AddRef(IHTMLControlRange *iface)
+{
+ HTMLTxtRange *This = impl_from_IHTMLControlRange(iface);
+ return IHTMLTxtRange_AddRef(&This->IHTMLTxtRange_iface);
+}
+
+static ULONG WINAPI HTMLControlRange_Release(IHTMLControlRange *iface)
+{
+ HTMLTxtRange *This = impl_from_IHTMLControlRange(iface);
+ return IHTMLTxtRange_Release(&This->IHTMLTxtRange_iface);
+}
+
+static HRESULT WINAPI HTMLControlRange_GetTypeInfoCount(IHTMLControlRange *iface, UINT *pctinfo)
+{
+ HTMLTxtRange *This = impl_from_IHTMLControlRange(iface);
+ return IDispatchEx_GetTypeInfoCount(&This->dispex.IDispatchEx_iface, pctinfo);
+}
+
+static HRESULT WINAPI HTMLControlRange_GetTypeInfo(IHTMLControlRange *iface, UINT iTInfo,
+ LCID lcid, ITypeInfo **ppTInfo)
+{
+ HTMLTxtRange *This = impl_from_IHTMLControlRange(iface);
+ return IDispatchEx_GetTypeInfo(&This->dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
+}
+
+static HRESULT WINAPI HTMLControlRange_GetIDsOfNames(IHTMLControlRange *iface, REFIID riid,
+ LPOLESTR *rgszNames, UINT cNames,
+ LCID lcid, DISPID *rgDispId)
+{
+ HTMLTxtRange *This = impl_from_IHTMLControlRange(iface);
+ return IDispatchEx_GetIDsOfNames(&This->dispex.IDispatchEx_iface, riid, rgszNames,
+ cNames, lcid, rgDispId);
+}
+
+static HRESULT WINAPI HTMLControlRange_Invoke(IHTMLControlRange *iface, DISPID dispIdMember,
+ REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
+ VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
+{
+ HTMLTxtRange *This = impl_from_IHTMLControlRange(iface);
+ return IDispatchEx_Invoke(&This->dispex.IDispatchEx_iface, dispIdMember, riid,
+ lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
+}
+
+static HRESULT WINAPI HTMLControlRange_select(IHTMLControlRange *iface)
+{
+ HTMLTxtRange *This = impl_from_IHTMLControlRange(iface);
+ FIXME("(%p): stub\n", This);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLControlRange_add(IHTMLControlRange *iface, IHTMLControlElement *item)
+{
+ HTMLTxtRange *This = impl_from_IHTMLControlRange(iface);
+ FIXME("(%p): stub\n", This);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLControlRange_remove(IHTMLControlRange *iface, LONG index)
+{
+ HTMLTxtRange *This = impl_from_IHTMLControlRange(iface);
+ FIXME("(%p): stub\n", This);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLControlRange_item(IHTMLControlRange *iface, LONG index, IHTMLElement **pdisp)
+{
+ HTMLTxtRange *This = impl_from_IHTMLControlRange(iface);
+ FIXME("(%p): stub\n", This);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLControlRange_scrollIntoView(IHTMLControlRange *iface, VARIANT varargStart)
+{
+ HTMLTxtRange *This = impl_from_IHTMLControlRange(iface);
+ FIXME("(%p): stub\n", This);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLControlRange_queryCommandSupported(IHTMLControlRange *iface,
+ BSTR cmdID, VARIANT_BOOL *pfRet)
+{
+ HTMLTxtRange *This = impl_from_IHTMLControlRange(iface);
+ FIXME("(%p): stub\n", This);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLControlRange_queryCommandEnabled(IHTMLControlRange *iface,
+ BSTR cmdID, VARIANT_BOOL *pfRet)
+{
+ HTMLTxtRange *This = impl_from_IHTMLControlRange(iface);
+ FIXME("(%p): stub\n", This);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLControlRange_queryCommandState(IHTMLControlRange *iface,
+ BSTR cmdID, VARIANT_BOOL *pfRet)
+{
+ HTMLTxtRange *This = impl_from_IHTMLControlRange(iface);
+ FIXME("(%p): stub\n", This);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLControlRange_queryCommandIndeterm(IHTMLControlRange *iface,
+ BSTR cmdID, VARIANT_BOOL *pfRet)
+{
+ HTMLTxtRange *This = impl_from_IHTMLControlRange(iface);
+ FIXME("(%p): stub\n", This);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLControlRange_queryCommandText(IHTMLControlRange *iface,
+ BSTR cmdID, BSTR *pcmdText)
+{
+ HTMLTxtRange *This = impl_from_IHTMLControlRange(iface);
+ FIXME("(%p): stub\n", This);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLControlRange_queryCommandValue(IHTMLControlRange *iface,
+ BSTR cmdID, VARIANT *pcmdValue)
+{
+ HTMLTxtRange *This = impl_from_IHTMLControlRange(iface);
+ FIXME("(%p): stub\n", This);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLControlRange_execCommand(IHTMLControlRange *iface,
+ BSTR cmdID, VARIANT_BOOL showUI, VARIANT value, VARIANT_BOOL *pfRet)
+{
+ HTMLTxtRange *This = impl_from_IHTMLControlRange(iface);
+ FIXME("(%p): stub\n", This);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLControlRange_execCommandShowHelp(IHTMLControlRange *iface,
+ BSTR cmdID, VARIANT_BOOL *pfRet)
+{
+ HTMLTxtRange *This = impl_from_IHTMLControlRange(iface);
+ FIXME("(%p): stub\n", This);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLControlRange_commonParentElement(IHTMLControlRange *iface, IHTMLElement **parent)
+{
+ HTMLTxtRange *This = impl_from_IHTMLControlRange(iface);
+ FIXME("(%p): stub\n", This);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLControlRange_get_length(IHTMLControlRange *iface, LONG *p)
+{
+ HTMLTxtRange *This = impl_from_IHTMLControlRange(iface);
+ FIXME("(%p): stub\n", This);
+ return E_NOTIMPL;
+}
+
+static const IHTMLControlRangeVtbl HTMLControlRangeVtbl = {
+ HTMLControlRange_QueryInterface,
+ HTMLControlRange_AddRef,
+ HTMLControlRange_Release,
+ HTMLControlRange_GetTypeInfoCount,
+ HTMLControlRange_GetTypeInfo,
+ HTMLControlRange_GetIDsOfNames,
+ HTMLControlRange_Invoke,
+ HTMLControlRange_select,
+ HTMLControlRange_add,
+ HTMLControlRange_remove,
+ HTMLControlRange_item,
+ HTMLControlRange_scrollIntoView,
+ HTMLControlRange_queryCommandSupported,
+ HTMLControlRange_queryCommandEnabled,
+ HTMLControlRange_queryCommandState,
+ HTMLControlRange_queryCommandIndeterm,
+ HTMLControlRange_queryCommandText,
+ HTMLControlRange_queryCommandValue,
+ HTMLControlRange_execCommand,
+ HTMLControlRange_execCommandShowHelp,
+ HTMLControlRange_commonParentElement,
+ HTMLControlRange_get_length
+};
+
static HTMLTxtRange *get_range_object(HTMLDocumentNode *doc, IHTMLTxtRange *iface)
{
HTMLTxtRange *iter;
@@ -831,6 +1024,8 @@ static HRESULT WINAPI HTMLTxtRange_QueryInterface(IHTMLTxtRange *iface, REFIID r
*ppv = &This->IHTMLTxtRange_iface;
}else if(IsEqualGUID(&IID_IHTMLTxtRange, riid)) {
*ppv = &This->IHTMLTxtRange_iface;
+ }else if(IsEqualGUID(&IID_IHTMLControlRange, riid)) {
+ *ppv = &This->IHTMLControlRange_iface;
}else if(IsEqualGUID(&IID_IOleCommandTarget, riid)) {
*ppv = &This->IOleCommandTarget_iface;
}else if(dispex_query_interface(&This->dispex, riid, ppv)) {
@@ -1744,6 +1939,7 @@ HRESULT HTMLTxtRange_Create(HTMLDocumentNode *doc, nsIDOMRange *nsrange, IHTMLTx
init_dispex(&ret->dispex, (IUnknown*)&ret->IHTMLTxtRange_iface, &HTMLTxtRange_dispex);
ret->IHTMLTxtRange_iface.lpVtbl = &HTMLTxtRangeVtbl;
+ ret->IHTMLControlRange_iface.lpVtbl = &HTMLControlRangeVtbl;
ret->IOleCommandTarget_iface.lpVtbl = &OleCommandTargetVtbl;
ret->ref = 1;
diff --git a/include/mshtmdid.h b/include/mshtmdid.h
index a58b3f9247..8544d4be2a 100644
--- a/include/mshtmdid.h
+++ b/include/mshtmdid.h
@@ -4208,6 +4208,23 @@
#define DISPID_IHTMLTEXTCONTAINER_SCROLLLEFT DISPID_TEXTSITE+5
#define DISPID_IHTMLTEXTCONTAINER_ONSCROLL DISPID_EVPROP_ONSCROLL
+/* IHTMLControlRange */
+#define DISPID_IHTMLCONTROLRANGE_SELECT DISPID_RANGE+2
+#define DISPID_IHTMLCONTROLRANGE_ADD DISPID_RANGE+3
+#define DISPID_IHTMLCONTROLRANGE_REMOVE DISPID_RANGE+4
+#define DISPID_IHTMLCONTROLRANGE_ITEM DISPID_VALUE
+#define DISPID_IHTMLCONTROLRANGE_SCROLLINTOVIEW DISPID_RANGE+6
+#define DISPID_IHTMLCONTROLRANGE_QUERYCOMMANDSUPPORTED DISPID_RANGE+7
+#define DISPID_IHTMLCONTROLRANGE_QUERYCOMMANDENABLED DISPID_RANGE+8
+#define DISPID_IHTMLCONTROLRANGE_QUERYCOMMANDSTATE DISPID_RANGE+9
+#define DISPID_IHTMLCONTROLRANGE_QUERYCOMMANDINDETERM DISPID_RANGE+10
+#define DISPID_IHTMLCONTROLRANGE_QUERYCOMMANDTEXT DISPID_RANGE+11
+#define DISPID_IHTMLCONTROLRANGE_QUERYCOMMANDVALUE DISPID_RANGE+12
+#define DISPID_IHTMLCONTROLRANGE_EXECCOMMAND DISPID_RANGE+13
+#define DISPID_IHTMLCONTROLRANGE_EXECCOMMANDSHOWHELP DISPID_RANGE+14
+#define DISPID_IHTMLCONTROLRANGE_COMMONPARENTELEMENT DISPID_RANGE+15
+#define DISPID_IHTMLCONTROLRANGE_LENGTH DISPID_RANGE+5
+
/* IHTMLTableCaption */
#define DISPID_IHTMLTABLECAPTION_ALIGN STDPROPID_XOBJ_BLOCKALIGN
#define DISPID_IHTMLTABLECAPTION_VALIGN DISPID_A_TABLEVALIGN
diff --git a/include/mshtml.idl b/include/mshtml.idl
index e90e0018a8..a666c628ae 100644
--- a/include/mshtml.idl
+++ b/include/mshtml.idl
@@ -16262,6 +16262,63 @@ coclass HTMLUnknownElement
/* interface IHTMLUnknownElement; */
}
+/*****************************************************************************
+ * IHTMLControlRange interface
+ */
+[
+ odl,
+ oleautomation,
+ dual,
+ uuid(3050f29c-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLControlRange : IDispatch
+{
+ [id(DISPID_IHTMLCONTROLRANGE_SELECT)]
+ HRESULT select();
+
+ [id(DISPID_IHTMLCONTROLRANGE_ADD)]
+ HRESULT add([in] IHTMLControlElement *item);
+
+ [id(DISPID_IHTMLCONTROLRANGE_REMOVE)]
+ HRESULT remove([in] long index);
+
+ [id(DISPID_IHTMLCONTROLRANGE_ITEM)]
+ HRESULT item([in] long index,[retval, out] IHTMLElement **pdisp);
+
+ [id(DISPID_IHTMLCONTROLRANGE_SCROLLINTOVIEW)]
+ HRESULT scrollIntoView([optional, in] VARIANT varargStart);
+
+ [id(DISPID_IHTMLCONTROLRANGE_QUERYCOMMANDSUPPORTED)]
+ HRESULT queryCommandSupported([in] BSTR cmdID,[retval, out] VARIANT_BOOL *pfRet);
+
+ [id(DISPID_IHTMLCONTROLRANGE_QUERYCOMMANDENABLED)]
+ HRESULT queryCommandEnabled([in] BSTR cmdID,[retval, out] VARIANT_BOOL *pfRet);
+
+ [id(DISPID_IHTMLCONTROLRANGE_QUERYCOMMANDSTATE)]
+ HRESULT queryCommandState([in] BSTR cmdID,[retval, out] VARIANT_BOOL *pfRet);
+
+ [id(DISPID_IHTMLCONTROLRANGE_QUERYCOMMANDINDETERM)]
+ HRESULT queryCommandIndeterm([in] BSTR cmdID,[retval, out] VARIANT_BOOL *pfRet);
+
+ [id(DISPID_IHTMLCONTROLRANGE_QUERYCOMMANDTEXT)]
+ HRESULT queryCommandText([in] BSTR cmdID,[retval, out] BSTR* pcmdText);
+
+ [id(DISPID_IHTMLCONTROLRANGE_QUERYCOMMANDVALUE)]
+ HRESULT queryCommandValue([in] BSTR cmdID,[retval, out] VARIANT *pcmdValue);
+
+ [id(DISPID_IHTMLCONTROLRANGE_EXECCOMMAND)]
+ HRESULT execCommand([in] BSTR cmdID,[defaultvalue(0), in] VARIANT_BOOL showUI,[optional, in] VARIANT value,[retval, out] VARIANT_BOOL *pfRet);
+
+ [id(DISPID_IHTMLCONTROLRANGE_EXECCOMMANDSHOWHELP)]
+ HRESULT execCommandShowHelp([in] BSTR cmdID,[retval, out] VARIANT_BOOL *pfRet);
+
+ [id(DISPID_IHTMLCONTROLRANGE_COMMONPARENTELEMENT)]
+ HRESULT commonParentElement([retval, out] IHTMLElement **parent);
+
+ [propget, id(DISPID_IHTMLCONTROLRANGE_LENGTH)]
+ HRESULT length([retval, out] long *p);
+};
+
/*****************************************************************************
* ISVGAnimatedEnumeration interface
*/
--
2.20.1
More information about the wine-devel
mailing list