diff --git a/dlls/mshtml/htmlanchor.c b/dlls/mshtml/htmlanchor.c
index 72cd10641e2..1fe43d011da 100644
--- a/dlls/mshtml/htmlanchor.c
+++ b/dlls/mshtml/htmlanchor.c
@@ -49,31 +49,8 @@ static HRESULT WINAPI HTMLAnchorElement_QueryInterface(IHTMLAnchorElement *iface
REFIID riid, void **ppv)
{
HTMLAnchorElement *This = HTMLANCHOR_THIS(iface);
- HRESULT hres;
- *ppv = NULL;
-
- if(IsEqualGUID(&IID_IUnknown, riid)) {
- TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
- *ppv = HTMLANCHOR(This);
- }else if(IsEqualGUID(&IID_IDispatch, riid)) {
- TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
- *ppv = HTMLANCHOR(This);
- }else if(IsEqualGUID(&IID_IHTMLAnchorElement, riid)) {
- TRACE("(%p)->(IID_IHTMLAnchorElement %p)\n", This, ppv);
- *ppv = HTMLANCHOR(This);
- }
-
- if(*ppv) {
- IUnknown_AddRef((IUnknown*)*ppv);
- return S_OK;
- }
-
- hres = HTMLElement_QI(&This->element, riid, ppv);
- if(FAILED(hres))
- WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
-
- return hres;
+ return IHTMLDOMNode_QueryInterface(HTMLDOMNODE(&This->element.node), riid, ppv);
}
static ULONG WINAPI HTMLAnchorElement_AddRef(IHTMLAnchorElement *iface)
@@ -412,6 +389,8 @@ static HRESULT WINAPI HTMLAnchorElement_blur(IHTMLAnchorElement *iface)
return E_NOTIMPL;
}
+#undef HTMLANCHOR_THIS
+
static const IHTMLAnchorElementVtbl HTMLAnchorElementVtbl = {
HTMLAnchorElement_QueryInterface,
HTMLAnchorElement_AddRef,
@@ -465,6 +444,31 @@ static const IHTMLAnchorElementVtbl HTMLAnchorElementVtbl = {
#define HTMLANCHOR_NODE_THIS(iface) DEFINE_THIS2(HTMLAnchorElement, element.node, iface)
+static HRESULT HTMLAnchorElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
+{
+ HTMLAnchorElement *This = HTMLANCHOR_NODE_THIS(iface);
+
+ *ppv = NULL;
+
+ if(IsEqualGUID(&IID_IUnknown, riid)) {
+ TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
+ *ppv = HTMLANCHOR(This);
+ }else if(IsEqualGUID(&IID_IDispatch, riid)) {
+ TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
+ *ppv = HTMLANCHOR(This);
+ }else if(IsEqualGUID(&IID_IHTMLAnchorElement, riid)) {
+ TRACE("(%p)->(IID_IHTMLAnchorElement %p)\n", This, ppv);
+ *ppv = HTMLANCHOR(This);
+ }
+
+ if(*ppv) {
+ IUnknown_AddRef((IUnknown*)*ppv);
+ return S_OK;
+ }
+
+ return HTMLElement_QI(&This->element.node, riid, ppv);
+}
+
static void HTMLAnchorElement_destructor(HTMLDOMNode *iface)
{
HTMLAnchorElement *This = HTMLANCHOR_NODE_THIS(iface);
@@ -474,6 +478,7 @@ static void HTMLAnchorElement_destructor(HTMLDOMNode *iface)
#undef HTMLANCHOR_NODE_THIS
static const NodeImplVtbl HTMLAnchorElementImplVtbl = {
+ HTMLAnchorElement_QI,
HTMLAnchorElement_destructor
};
@@ -484,7 +489,5 @@ HTMLElement *HTMLAnchorElement_Create(nsIDOMHTMLElement *nselem)
ret->lpHTMLAnchorElementVtbl = &HTMLAnchorElementVtbl;
ret->element.node.vtbl = &HTMLAnchorElementImplVtbl;
- ret->element.impl = (IUnknown*)HTMLANCHOR(ret);
-
return &ret->element;
}
diff --git a/dlls/mshtml/htmlbody.c b/dlls/mshtml/htmlbody.c
index b3712b75e52..e475d5d1679 100644
--- a/dlls/mshtml/htmlbody.c
+++ b/dlls/mshtml/htmlbody.c
@@ -55,37 +55,8 @@ static HRESULT WINAPI HTMLBodyElement_QueryInterface(IHTMLBodyElement *iface,
REFIID riid, void **ppv)
{
HTMLBodyElement *This = HTMLBODY_THIS(iface);
- HRESULT hres;
- *ppv = NULL;
-
- if(IsEqualGUID(&IID_IUnknown, riid)) {
- TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
- *ppv = HTMLBODY(This);
- }else if(IsEqualGUID(&IID_IDispatch, riid)) {
- TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
- *ppv = HTMLBODY(This);
- }else if(IsEqualGUID(&IID_IHTMLBodyElement, riid)) {
- TRACE("(%p)->(IID_IHTMLBodyElement %p)\n", This, ppv);
- *ppv = HTMLBODY(This);
- }else if(IsEqualGUID(&IID_IHTMLTextContainer, riid)) {
- TRACE("(%p)->(IID_IHTMLTextContainer %p)\n", &This->textcont, ppv);
- *ppv = HTMLTEXTCONT(&This->textcont);
- }else if(IsEqualGUID(&IID_IConnectionPointContainer, riid)) {
- TRACE("(%p)->(IID_IConnectionPointContainer %p)\n", This, ppv);
- *ppv = CONPTCONT(&This->cp_container);
- }
-
- if(*ppv) {
- IUnknown_AddRef((IUnknown*)*ppv);
- return S_OK;
- }
-
- hres = HTMLElement_QI(&This->textcont.element, riid, ppv);
- if(FAILED(hres))
- WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
-
- return hres;
+ return IHTMLDOMNode_QueryInterface(HTMLDOMNODE(&This->textcont.element.node), riid, ppv);
}
static ULONG WINAPI HTMLBodyElement_AddRef(IHTMLBodyElement *iface)
@@ -475,6 +446,37 @@ static const IHTMLBodyElementVtbl HTMLBodyElementVtbl = {
#define HTMLBODY_NODE_THIS(iface) DEFINE_THIS2(HTMLBodyElement, textcont.element.node, iface)
+static HRESULT HTMLBodyElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
+{
+ HTMLBodyElement *This = HTMLBODY_NODE_THIS(iface);
+
+ *ppv = NULL;
+
+ if(IsEqualGUID(&IID_IUnknown, riid)) {
+ TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
+ *ppv = HTMLBODY(This);
+ }else if(IsEqualGUID(&IID_IDispatch, riid)) {
+ TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
+ *ppv = HTMLBODY(This);
+ }else if(IsEqualGUID(&IID_IHTMLBodyElement, riid)) {
+ TRACE("(%p)->(IID_IHTMLBodyElement %p)\n", This, ppv);
+ *ppv = HTMLBODY(This);
+ }else if(IsEqualGUID(&IID_IHTMLTextContainer, riid)) {
+ TRACE("(%p)->(IID_IHTMLTextContainer %p)\n", &This->textcont, ppv);
+ *ppv = HTMLTEXTCONT(&This->textcont);
+ }else if(IsEqualGUID(&IID_IConnectionPointContainer, riid)) {
+ TRACE("(%p)->(IID_IConnectionPointContainer %p)\n", This, ppv);
+ *ppv = CONPTCONT(&This->cp_container);
+ }
+
+ if(*ppv) {
+ IUnknown_AddRef((IUnknown*)*ppv);
+ return S_OK;
+ }
+
+ return HTMLElement_QI(&This->textcont.element.node, riid, ppv);
+}
+
static void HTMLBodyElement_destructor(HTMLDOMNode *iface)
{
HTMLBodyElement *This = HTMLBODY_NODE_THIS(iface);
@@ -488,6 +490,7 @@ static void HTMLBodyElement_destructor(HTMLDOMNode *iface)
#undef HTMLBODY_NODE_THIS
static const NodeImplVtbl HTMLBodyElementImplVtbl = {
+ HTMLBodyElement_QI,
HTMLBodyElement_destructor
};
@@ -514,7 +517,5 @@ HTMLElement *HTMLBodyElement_Create(nsIDOMHTMLElement *nselem)
if(NS_FAILED(nsres))
ERR("Could not get nsDOMHTMLBodyElement: %08x\n", nsres);
- ret->textcont.element.impl = (IUnknown*)HTMLBODY(ret);
-
return &ret->textcont.element;
}
diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c
index 8bf2e54656f..36a26537fdb 100644
--- a/dlls/mshtml/htmlelem.c
+++ b/dlls/mshtml/htmlelem.c
@@ -64,16 +64,8 @@ static HRESULT WINAPI HTMLElement_QueryInterface(IHTMLElement *iface,
REFIID riid, void **ppv)
{
HTMLElement *This = HTMLELEM_THIS(iface);
- HRESULT hres;
- if(This->impl)
- return IUnknown_QueryInterface(This->impl, riid, ppv);
-
- hres = HTMLElement_QI(This, riid, ppv);
- if(FAILED(hres))
- WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
-
- return hres;
+ return IHTMLDOMNode_QueryInterface(HTMLDOMNODE(&This->node), riid, ppv);
}
static ULONG WINAPI HTMLElement_AddRef(IHTMLElement *iface)
@@ -1239,8 +1231,10 @@ static const IHTMLElementVtbl HTMLElementVtbl = {
HTMLElement_get_all
};
-HRESULT HTMLElement_QI(HTMLElement *This, REFIID riid, void **ppv)
+HRESULT HTMLElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
{
+ HTMLElement *This = HTMLELEM_NODE_THIS(iface);
+
*ppv = NULL;
if(IsEqualGUID(&IID_IUnknown, riid)) {
@@ -1276,6 +1270,7 @@ void HTMLElement_destructor(HTMLDOMNode *iface)
}
static const NodeImplVtbl HTMLElementImplVtbl = {
+ HTMLElement_QI,
HTMLElement_destructor
};
@@ -1316,8 +1311,6 @@ HTMLElement *HTMLElement_Create(nsIDOMNode *nsnode)
if(!ret) {
ret = mshtml_alloc(sizeof(HTMLElement));
ret->node.vtbl = &HTMLElementImplVtbl;
-
- ret->impl = NULL;
}
nsAString_Finish(&class_name_str);
@@ -1327,8 +1320,6 @@ HTMLElement *HTMLElement_Create(nsIDOMNode *nsnode)
HTMLElement2_Init(ret);
- ret->node.impl.elem = HTMLELEM(ret);
-
return ret;
}
diff --git a/dlls/mshtml/htmlinput.c b/dlls/mshtml/htmlinput.c
index 0991fd87225..d62184c2aa5 100644
--- a/dlls/mshtml/htmlinput.c
+++ b/dlls/mshtml/htmlinput.c
@@ -51,31 +51,8 @@ static HRESULT WINAPI HTMLInputElement_QueryInterface(IHTMLInputElement *iface,
REFIID riid, void **ppv)
{
HTMLInputElement *This = HTMLINPUT_THIS(iface);
- HRESULT hres;
- *ppv = NULL;
-
- if(IsEqualGUID(&IID_IUnknown, riid)) {
- TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
- *ppv = HTMLINPUT(This);
- }else if(IsEqualGUID(&IID_IDispatch, riid)) {
- TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
- *ppv = HTMLINPUT(This);
- }else if(IsEqualGUID(&IID_IHTMLInputElement, riid)) {
- TRACE("(%p)->(IID_IHTMLInputElement %p)\n", This, ppv);
- *ppv = HTMLINPUT(This);
- }
-
- if(*ppv) {
- IUnknown_AddRef((IUnknown*)*ppv);
- return S_OK;
- }
-
- hres = HTMLElement_QI(&This->element, riid, ppv);
- if(FAILED(hres))
- WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
-
- return hres;
+ return IHTMLDOMNode_QueryInterface(HTMLDOMNODE(&This->element.node), riid, ppv);
}
static ULONG WINAPI HTMLInputElement_AddRef(IHTMLInputElement *iface)
@@ -728,6 +705,31 @@ static const IHTMLInputElementVtbl HTMLInputElementVtbl = {
#define HTMLINPUT_NODE_THIS(iface) DEFINE_THIS2(HTMLInputElement, element.node, iface)
+static HRESULT HTMLInputElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
+{
+ HTMLInputElement *This = HTMLINPUT_NODE_THIS(iface);
+
+ *ppv = NULL;
+
+ if(IsEqualGUID(&IID_IUnknown, riid)) {
+ TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
+ *ppv = HTMLINPUT(This);
+ }else if(IsEqualGUID(&IID_IDispatch, riid)) {
+ TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
+ *ppv = HTMLINPUT(This);
+ }else if(IsEqualGUID(&IID_IHTMLInputElement, riid)) {
+ TRACE("(%p)->(IID_IHTMLInputElement %p)\n", This, ppv);
+ *ppv = HTMLINPUT(This);
+ }
+
+ if(*ppv) {
+ IUnknown_AddRef((IUnknown*)*ppv);
+ return S_OK;
+ }
+
+ return HTMLElement_QI(&This->element.node, riid, ppv);
+}
+
static void HTMLInputElement_destructor(HTMLDOMNode *iface)
{
HTMLInputElement *This = HTMLINPUT_NODE_THIS(iface);
@@ -740,6 +742,7 @@ static void HTMLInputElement_destructor(HTMLDOMNode *iface)
#undef HTMLINPUT_NODE_THIS
static const NodeImplVtbl HTMLInputElementImplVtbl = {
+ HTMLInputElement_QI,
HTMLInputElement_destructor
};
@@ -756,7 +759,5 @@ HTMLElement *HTMLInputElement_Create(nsIDOMHTMLElement *nselem)
if(NS_FAILED(nsres))
ERR("Could not get nsIDOMHTMLInputElement interface: %08x\n", nsres);
- ret->element.impl = (IUnknown*)HTMLINPUT(ret);
-
return &ret->element;
}
diff --git a/dlls/mshtml/htmlnode.c b/dlls/mshtml/htmlnode.c
index d93d0ac35e4..82e38c44303 100644
--- a/dlls/mshtml/htmlnode.c
+++ b/dlls/mshtml/htmlnode.c
@@ -43,16 +43,8 @@ static HRESULT WINAPI HTMLDOMNode_QueryInterface(IHTMLDOMNode *iface,
REFIID riid, void **ppv)
{
HTMLDOMNode *This = HTMLDOMNODE_THIS(iface);
- HRESULT hres;
- if(This->impl.unk)
- return IUnknown_QueryInterface(This->impl.unk, riid, ppv);
-
- hres = HTMLDOMNode_QI(This, riid, ppv);
- if(FAILED(hres))
- WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
-
- return hres;
+ return This->vtbl->qi(This, riid, ppv);
}
static ULONG WINAPI HTMLDOMNode_AddRef(IHTMLDOMNode *iface)
@@ -328,6 +320,7 @@ HRESULT HTMLDOMNode_QI(HTMLDOMNode *This, REFIID riid, void **ppv)
return S_OK;
}
+ WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
return E_NOINTERFACE;
}
@@ -338,6 +331,7 @@ void HTMLDOMNode_destructor(HTMLDOMNode *This)
}
static const NodeImplVtbl HTMLDOMNodeImplVtbl = {
+ HTMLDOMNode_QI,
HTMLDOMNode_destructor
};
@@ -355,7 +349,6 @@ static HTMLDOMNode *create_node(HTMLDocument *doc, nsIDOMNode *nsnode)
default:
ret = mshtml_alloc(sizeof(HTMLDOMNode));
ret->vtbl = &HTMLDOMNodeImplVtbl;
- ret->impl.unk = NULL;
}
ret->lpHTMLDOMNodeVtbl = &HTMLDOMNodeVtbl;
diff --git a/dlls/mshtml/htmlselect.c b/dlls/mshtml/htmlselect.c
index 4fc6d5791de..920de1bfe63 100644
--- a/dlls/mshtml/htmlselect.c
+++ b/dlls/mshtml/htmlselect.c
@@ -51,31 +51,8 @@ static HRESULT WINAPI HTMLSelectElement_QueryInterface(IHTMLSelectElement *iface
REFIID riid, void **ppv)
{
HTMLSelectElement *This = HTMLSELECT_THIS(iface);
- HRESULT hres;
- *ppv = NULL;
-
- if(IsEqualGUID(&IID_IUnknown, riid)) {
- TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
- *ppv = HTMLSELECT(This);
- }else if(IsEqualGUID(&IID_IDispatch, riid)) {
- TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
- *ppv = HTMLSELECT(This);
- }else if(IsEqualGUID(&IID_IHTMLSelectElement, riid)) {
- TRACE("(%p)->(IID_IHTMLSelectElement %p)\n", This, ppv);
- *ppv = HTMLSELECT(This);
- }
-
- if(*ppv) {
- IUnknown_AddRef((IUnknown*)*ppv);
- return S_OK;
- }
-
- hres = HTMLElement_QI(&This->element, riid, ppv);
- if(FAILED(hres))
- WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
-
- return hres;
+ return IHTMLDOMNode_QueryInterface(HTMLDOMNODE(&This->element.node), riid, ppv);
}
static ULONG WINAPI HTMLSelectElement_AddRef(IHTMLSelectElement *iface)
@@ -379,6 +356,31 @@ static const IHTMLSelectElementVtbl HTMLSelectElementVtbl = {
#define HTMLSELECT_NODE_THIS(iface) DEFINE_THIS2(HTMLSelectElement, element.node, iface)
+static HRESULT HTMLSelectElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
+{
+ HTMLSelectElement *This = HTMLSELECT_NODE_THIS(iface);
+
+ *ppv = NULL;
+
+ if(IsEqualGUID(&IID_IUnknown, riid)) {
+ TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
+ *ppv = HTMLSELECT(This);
+ }else if(IsEqualGUID(&IID_IDispatch, riid)) {
+ TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
+ *ppv = HTMLSELECT(This);
+ }else if(IsEqualGUID(&IID_IHTMLSelectElement, riid)) {
+ TRACE("(%p)->(IID_IHTMLSelectElement %p)\n", This, ppv);
+ *ppv = HTMLSELECT(This);
+ }
+
+ if(*ppv) {
+ IUnknown_AddRef((IUnknown*)*ppv);
+ return S_OK;
+ }
+
+ return HTMLElement_QI(&This->element.node, riid, ppv);
+}
+
static void HTMLSelectElement_destructor(HTMLDOMNode *iface)
{
HTMLSelectElement *This = HTMLSELECT_NODE_THIS(iface);
@@ -391,6 +393,7 @@ static void HTMLSelectElement_destructor(HTMLDOMNode *iface)
#undef HTMLSELECT_NODE_THIS
static const NodeImplVtbl HTMLSelectElementImplVtbl = {
+ HTMLSelectElement_QI,
HTMLSelectElement_destructor
};
@@ -407,7 +410,5 @@ HTMLElement *HTMLSelectElement_Create(nsIDOMHTMLElement *nselem)
if(NS_FAILED(nsres))
ERR("Could not get nsIDOMHTMLSelectElement interfce: %08x\n", nsres);
- ret->element.impl = (IUnknown*)HTMLSELECT(ret);
-
return &ret->element;
}
diff --git a/dlls/mshtml/htmltextarea.c b/dlls/mshtml/htmltextarea.c
index 38206c291a2..c5d828727f8 100644
--- a/dlls/mshtml/htmltextarea.c
+++ b/dlls/mshtml/htmltextarea.c
@@ -51,31 +51,8 @@ static HRESULT WINAPI HTMLTextAreaElement_QueryInterface(IHTMLTextAreaElement *i
REFIID riid, void **ppv)
{
HTMLTextAreaElement *This = HTMLTXTAREA_THIS(iface);
- HRESULT hres;
- *ppv = NULL;
-
- if(IsEqualGUID(&IID_IUnknown, riid)) {
- TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
- *ppv = HTMLTXTAREA(This);
- }else if(IsEqualGUID(&IID_IDispatch, riid)) {
- TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
- *ppv = HTMLTXTAREA(This);
- }else if(IsEqualGUID(&IID_IHTMLTextAreaElement, riid)) {
- TRACE("(%p)->(IID_IHTMLTextAreaElement %p)\n", This, ppv);
- *ppv = HTMLTXTAREA(This);
- }
-
- if(*ppv) {
- IUnknown_AddRef((IUnknown*)*ppv);
- return S_OK;
- }
-
- hres = HTMLElement_QI(&This->element, riid, ppv);
- if(FAILED(hres))
- WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
-
- return hres;
+ return IHTMLDOMNode_QueryInterface(HTMLDOMNODE(&This->element.node), riid, ppv);
}
static ULONG WINAPI HTMLTextAreaElement_AddRef(IHTMLTextAreaElement *iface)
@@ -386,6 +363,31 @@ static const IHTMLTextAreaElementVtbl HTMLTextAreaElementVtbl = {
#define HTMLTXTAREA_NODE_THIS(iface) DEFINE_THIS2(HTMLTextAreaElement, element.node, iface)
+static HRESULT HTMLTextAreaElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
+{
+ HTMLTextAreaElement *This = HTMLTXTAREA_NODE_THIS(iface);
+
+ *ppv = NULL;
+
+ if(IsEqualGUID(&IID_IUnknown, riid)) {
+ TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
+ *ppv = HTMLTXTAREA(This);
+ }else if(IsEqualGUID(&IID_IDispatch, riid)) {
+ TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
+ *ppv = HTMLTXTAREA(This);
+ }else if(IsEqualGUID(&IID_IHTMLTextAreaElement, riid)) {
+ TRACE("(%p)->(IID_IHTMLTextAreaElement %p)\n", This, ppv);
+ *ppv = HTMLTXTAREA(This);
+ }
+
+ if(*ppv) {
+ IUnknown_AddRef((IUnknown*)*ppv);
+ return S_OK;
+ }
+
+ return HTMLElement_QI(&This->element.node, riid, ppv);
+}
+
static void HTMLTextAreaElement_destructor(HTMLDOMNode *iface)
{
HTMLTextAreaElement *This = HTMLTXTAREA_NODE_THIS(iface);
@@ -398,6 +400,7 @@ static void HTMLTextAreaElement_destructor(HTMLDOMNode *iface)
#undef HTMLTXTAREA_NODE_THIS
static const NodeImplVtbl HTMLTextAreaElementImplVtbl = {
+ HTMLTextAreaElement_QI,
HTMLTextAreaElement_destructor
};
@@ -414,7 +417,5 @@ HTMLElement *HTMLTextAreaElement_Create(nsIDOMHTMLElement *nselem)
if(NS_FAILED(nsres))
ERR("Could not get nsDOMHTMLInputElement: %08x\n", nsres);
- ret->element.impl = (IUnknown*)HTMLTXTAREA(ret);
-
return &ret->element;
}
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h
index 8cb11e773f9..b0ac4542b52 100644
--- a/dlls/mshtml/mshtml_private.h
+++ b/dlls/mshtml/mshtml_private.h
@@ -251,6 +251,7 @@ struct BSCallback {
};
typedef struct {
+ HRESULT (*qi)(HTMLDOMNode*,REFIID,void**);
void (*destructor)(HTMLDOMNode*);
} NodeImplVtbl;
@@ -258,11 +259,6 @@ struct HTMLDOMNode {
const IHTMLDOMNodeVtbl *lpHTMLDOMNodeVtbl;
const NodeImplVtbl *vtbl;
- union {
- IUnknown *unk;
- IHTMLElement *elem;
- } impl;
-
nsIDOMNode *nsnode;
HTMLDocument *doc;
@@ -276,8 +272,6 @@ typedef struct {
const IHTMLElement2Vtbl *lpHTMLElement2Vtbl;
nsIDOMHTMLElement *nselem;
-
- IUnknown *impl;
} HTMLElement;
typedef struct {
@@ -430,7 +424,7 @@ void HTMLTextContainer_Init(HTMLTextContainer*);
HRESULT HTMLDOMNode_QI(HTMLDOMNode*,REFIID,void**);
void HTMLDOMNode_destructor(HTMLDOMNode*);
-HRESULT HTMLElement_QI(HTMLElement*,REFIID,void**);
+HRESULT HTMLElement_QI(HTMLDOMNode*,REFIID,void**);
void HTMLElement_destructor(HTMLDOMNode*);
HTMLDOMNode *get_node(HTMLDocument*,nsIDOMNode*);