2 * Copyright 2006-2010 Jacek Caban for CodeWeavers
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
29 #include "wine/debug.h"
30 #include "wine/unicode.h"
32 #include "mshtml_private.h"
33 #include "htmlevent.h"
35 WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
39 IHTMLRect IHTMLRect_iface;
43 nsIDOMClientRect *nsrect;
46 static inline HTMLRect *impl_from_IHTMLRect(IHTMLRect *iface)
48 return CONTAINING_RECORD(iface, HTMLRect, IHTMLRect_iface);
51 static HRESULT WINAPI HTMLRect_QueryInterface(IHTMLRect *iface, REFIID riid, void **ppv)
53 HTMLRect *This = impl_from_IHTMLRect(iface);
55 if(IsEqualGUID(&IID_IUnknown, riid)) {
56 TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
57 *ppv = &This->IHTMLRect_iface;
58 }else if(IsEqualGUID(&IID_IHTMLRect, riid)) {
59 TRACE("(%p)->(IID_IHTMLRect %p)\n", This, ppv);
60 *ppv = &This->IHTMLRect_iface;
61 }else if(dispex_query_interface(&This->dispex, riid, ppv)) {
62 return *ppv ? S_OK : E_NOINTERFACE;
64 FIXME("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
69 IUnknown_AddRef((IUnknown*)*ppv);
73 static ULONG WINAPI HTMLRect_AddRef(IHTMLRect *iface)
75 HTMLRect *This = impl_from_IHTMLRect(iface);
76 LONG ref = InterlockedIncrement(&This->ref);
78 TRACE("(%p) ref=%d\n", This, ref);
83 static ULONG WINAPI HTMLRect_Release(IHTMLRect *iface)
85 HTMLRect *This = impl_from_IHTMLRect(iface);
86 LONG ref = InterlockedDecrement(&This->ref);
88 TRACE("(%p) ref=%d\n", This, ref);
92 nsIDOMClientRect_Release(This->nsrect);
99 static HRESULT WINAPI HTMLRect_GetTypeInfoCount(IHTMLRect *iface, UINT *pctinfo)
101 HTMLRect *This = impl_from_IHTMLRect(iface);
102 FIXME("(%p)->(%p)\n", This, pctinfo);
106 static HRESULT WINAPI HTMLRect_GetTypeInfo(IHTMLRect *iface, UINT iTInfo,
107 LCID lcid, ITypeInfo **ppTInfo)
109 HTMLRect *This = impl_from_IHTMLRect(iface);
111 return IDispatchEx_GetTypeInfo(DISPATCHEX(&This->dispex), iTInfo, lcid, ppTInfo);
114 static HRESULT WINAPI HTMLRect_GetIDsOfNames(IHTMLRect *iface, REFIID riid,
115 LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
117 HTMLRect *This = impl_from_IHTMLRect(iface);
119 return IDispatchEx_GetIDsOfNames(DISPATCHEX(&This->dispex), riid, rgszNames, cNames, lcid, rgDispId);
122 static HRESULT WINAPI HTMLRect_Invoke(IHTMLRect *iface, DISPID dispIdMember,
123 REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
124 VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
126 HTMLRect *This = impl_from_IHTMLRect(iface);
128 return IDispatchEx_Invoke(DISPATCHEX(&This->dispex), dispIdMember, riid, lcid, wFlags, pDispParams,
129 pVarResult, pExcepInfo, puArgErr);
132 static HRESULT WINAPI HTMLRect_put_left(IHTMLRect *iface, LONG v)
134 HTMLRect *This = impl_from_IHTMLRect(iface);
135 FIXME("(%p)->(%d)\n", This, v);
139 static HRESULT WINAPI HTMLRect_get_left(IHTMLRect *iface, LONG *p)
141 HTMLRect *This = impl_from_IHTMLRect(iface);
145 TRACE("(%p)->(%p)\n", This, p);
147 nsres = nsIDOMClientRect_GetLeft(This->nsrect, &left);
148 if(NS_FAILED(nsres)) {
149 ERR("GetLeft failed: %08x\n", nsres);
153 *p = floor(left+0.5);
157 static HRESULT WINAPI HTMLRect_put_top(IHTMLRect *iface, LONG v)
159 HTMLRect *This = impl_from_IHTMLRect(iface);
160 FIXME("(%p)->(%d)\n", This, v);
164 static HRESULT WINAPI HTMLRect_get_top(IHTMLRect *iface, LONG *p)
166 HTMLRect *This = impl_from_IHTMLRect(iface);
170 TRACE("(%p)->(%p)\n", This, p);
172 nsres = nsIDOMClientRect_GetTop(This->nsrect, &top);
173 if(NS_FAILED(nsres)) {
174 ERR("GetTop failed: %08x\n", nsres);
182 static HRESULT WINAPI HTMLRect_put_right(IHTMLRect *iface, LONG v)
184 HTMLRect *This = impl_from_IHTMLRect(iface);
185 FIXME("(%p)->(%d)\n", This, v);
189 static HRESULT WINAPI HTMLRect_get_right(IHTMLRect *iface, LONG *p)
191 HTMLRect *This = impl_from_IHTMLRect(iface);
195 TRACE("(%p)->(%p)\n", This, p);
197 nsres = nsIDOMClientRect_GetRight(This->nsrect, &right);
198 if(NS_FAILED(nsres)) {
199 ERR("GetRight failed: %08x\n", nsres);
203 *p = floor(right+0.5);
207 static HRESULT WINAPI HTMLRect_put_bottom(IHTMLRect *iface, LONG v)
209 HTMLRect *This = impl_from_IHTMLRect(iface);
210 FIXME("(%p)->(%d)\n", This, v);
214 static HRESULT WINAPI HTMLRect_get_bottom(IHTMLRect *iface, LONG *p)
216 HTMLRect *This = impl_from_IHTMLRect(iface);
220 TRACE("(%p)->(%p)\n", This, p);
222 nsres = nsIDOMClientRect_GetBottom(This->nsrect, &bottom);
223 if(NS_FAILED(nsres)) {
224 ERR("GetBottom failed: %08x\n", nsres);
228 *p = floor(bottom+0.5);
232 static const IHTMLRectVtbl HTMLRectVtbl = {
233 HTMLRect_QueryInterface,
236 HTMLRect_GetTypeInfoCount,
237 HTMLRect_GetTypeInfo,
238 HTMLRect_GetIDsOfNames,
250 static const tid_t HTMLRect_iface_tids[] = {
254 static dispex_static_data_t HTMLRect_dispex = {
261 static HRESULT create_html_rect(nsIDOMClientRect *nsrect, IHTMLRect **ret)
265 rect = heap_alloc_zero(sizeof(HTMLRect));
267 return E_OUTOFMEMORY;
269 rect->IHTMLRect_iface.lpVtbl = &HTMLRectVtbl;
272 init_dispex(&rect->dispex, (IUnknown*)&rect->IHTMLRect_iface, &HTMLRect_dispex);
274 nsIDOMClientRect_AddRef(nsrect);
275 rect->nsrect = nsrect;
277 *ret = &rect->IHTMLRect_iface;
281 #define HTMLELEM2_THIS(iface) DEFINE_THIS(HTMLElement, HTMLElement2, iface)
283 static HRESULT WINAPI HTMLElement2_QueryInterface(IHTMLElement2 *iface,
284 REFIID riid, void **ppv)
286 HTMLElement *This = HTMLELEM2_THIS(iface);
287 return IHTMLElement_QueryInterface(HTMLELEM(This), riid, ppv);
290 static ULONG WINAPI HTMLElement2_AddRef(IHTMLElement2 *iface)
292 HTMLElement *This = HTMLELEM2_THIS(iface);
293 return IHTMLElement_AddRef(HTMLELEM(This));
296 static ULONG WINAPI HTMLElement2_Release(IHTMLElement2 *iface)
298 HTMLElement *This = HTMLELEM2_THIS(iface);
299 return IHTMLElement_Release(HTMLELEM(This));
302 static HRESULT WINAPI HTMLElement2_GetTypeInfoCount(IHTMLElement2 *iface, UINT *pctinfo)
304 HTMLElement *This = HTMLELEM2_THIS(iface);
305 return IDispatchEx_GetTypeInfoCount(DISPATCHEX(&This->node.dispex), pctinfo);
308 static HRESULT WINAPI HTMLElement2_GetTypeInfo(IHTMLElement2 *iface, UINT iTInfo,
309 LCID lcid, ITypeInfo **ppTInfo)
311 HTMLElement *This = HTMLELEM2_THIS(iface);
312 return IDispatchEx_GetTypeInfo(DISPATCHEX(&This->node.dispex), iTInfo, lcid, ppTInfo);
315 static HRESULT WINAPI HTMLElement2_GetIDsOfNames(IHTMLElement2 *iface, REFIID riid,
316 LPOLESTR *rgszNames, UINT cNames,
317 LCID lcid, DISPID *rgDispId)
319 HTMLElement *This = HTMLELEM2_THIS(iface);
320 return IDispatchEx_GetIDsOfNames(DISPATCHEX(&This->node.dispex), riid, rgszNames, cNames, lcid, rgDispId);
323 static HRESULT WINAPI HTMLElement2_Invoke(IHTMLElement2 *iface, DISPID dispIdMember,
324 REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
325 VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
327 HTMLElement *This = HTMLELEM2_THIS(iface);
328 return IDispatchEx_Invoke(DISPATCHEX(&This->node.dispex), dispIdMember, riid, lcid,
329 wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
332 static HRESULT WINAPI HTMLElement2_get_scopeName(IHTMLElement2 *iface, BSTR *p)
334 HTMLElement *This = HTMLELEM2_THIS(iface);
335 FIXME("(%p)->(%p)\n", This, p);
339 static HRESULT WINAPI HTMLElement2_setCapture(IHTMLElement2 *iface, VARIANT_BOOL containerCapture)
341 HTMLElement *This = HTMLELEM2_THIS(iface);
342 FIXME("(%p)->(%x)\n", This, containerCapture);
346 static HRESULT WINAPI HTMLElement2_releaseCapture(IHTMLElement2 *iface)
348 HTMLElement *This = HTMLELEM2_THIS(iface);
349 FIXME("(%p)\n", This);
353 static HRESULT WINAPI HTMLElement2_put_onlosecapture(IHTMLElement2 *iface, VARIANT v)
355 HTMLElement *This = HTMLELEM2_THIS(iface);
356 FIXME("(%p)->()\n", This);
360 static HRESULT WINAPI HTMLElement2_get_onlosecapture(IHTMLElement2 *iface, VARIANT *p)
362 HTMLElement *This = HTMLELEM2_THIS(iface);
363 FIXME("(%p)->(%p)\n", This, p);
367 static HRESULT WINAPI HTMLElement2_componentFromPoint(IHTMLElement2 *iface,
368 LONG x, LONG y, BSTR *component)
370 HTMLElement *This = HTMLELEM2_THIS(iface);
371 FIXME("(%p)->(%d %d %p)\n", This, x, y, component);
375 static HRESULT WINAPI HTMLElement2_doScroll(IHTMLElement2 *iface, VARIANT component)
377 HTMLElement *This = HTMLELEM2_THIS(iface);
379 TRACE("(%p)->(%s)\n", This, debugstr_variant(&component));
381 if(!This->node.doc->content_ready
382 || !This->node.doc->basedoc.doc_obj->in_place_active)
389 static HRESULT WINAPI HTMLElement2_put_onscroll(IHTMLElement2 *iface, VARIANT v)
391 HTMLElement *This = HTMLELEM2_THIS(iface);
392 FIXME("(%p)->()\n", This);
396 static HRESULT WINAPI HTMLElement2_get_onscroll(IHTMLElement2 *iface, VARIANT *p)
398 HTMLElement *This = HTMLELEM2_THIS(iface);
399 FIXME("(%p)->(%p)\n", This, p);
403 static HRESULT WINAPI HTMLElement2_put_ondrag(IHTMLElement2 *iface, VARIANT v)
405 HTMLElement *This = HTMLELEM2_THIS(iface);
407 TRACE("(%p)->(%s)\n", This, debugstr_variant(&v));
409 return set_node_event(&This->node, EVENTID_DRAG, &v);
412 static HRESULT WINAPI HTMLElement2_get_ondrag(IHTMLElement2 *iface, VARIANT *p)
414 HTMLElement *This = HTMLELEM2_THIS(iface);
416 TRACE("(%p)->(%p)\n", This, p);
418 return get_node_event(&This->node, EVENTID_DRAG, p);
421 static HRESULT WINAPI HTMLElement2_put_ondragend(IHTMLElement2 *iface, VARIANT v)
423 HTMLElement *This = HTMLELEM2_THIS(iface);
424 FIXME("(%p)->()\n", This);
428 static HRESULT WINAPI HTMLElement2_get_ondragend(IHTMLElement2 *iface, VARIANT *p)
430 HTMLElement *This = HTMLELEM2_THIS(iface);
431 FIXME("(%p)->(%p)\n", This, p);
435 static HRESULT WINAPI HTMLElement2_put_ondragenter(IHTMLElement2 *iface, VARIANT v)
437 HTMLElement *This = HTMLELEM2_THIS(iface);
438 FIXME("(%p)->()\n", This);
442 static HRESULT WINAPI HTMLElement2_get_ondragenter(IHTMLElement2 *iface, VARIANT *p)
444 HTMLElement *This = HTMLELEM2_THIS(iface);
445 FIXME("(%p)->(%p)\n", This, p);
449 static HRESULT WINAPI HTMLElement2_put_ondragover(IHTMLElement2 *iface, VARIANT v)
451 HTMLElement *This = HTMLELEM2_THIS(iface);
452 FIXME("(%p)->()\n", This);
456 static HRESULT WINAPI HTMLElement2_get_ondragover(IHTMLElement2 *iface, VARIANT *p)
458 HTMLElement *This = HTMLELEM2_THIS(iface);
459 FIXME("(%p)->(%p)\n", This, p);
463 static HRESULT WINAPI HTMLElement2_put_ondragleave(IHTMLElement2 *iface, VARIANT v)
465 HTMLElement *This = HTMLELEM2_THIS(iface);
466 FIXME("(%p)->()\n", This);
470 static HRESULT WINAPI HTMLElement2_get_ondragleave(IHTMLElement2 *iface, VARIANT *p)
472 HTMLElement *This = HTMLELEM2_THIS(iface);
473 FIXME("(%p)->(%p)\n", This, p);
477 static HRESULT WINAPI HTMLElement2_put_ondrop(IHTMLElement2 *iface, VARIANT v)
479 HTMLElement *This = HTMLELEM2_THIS(iface);
480 FIXME("(%p)->()\n", This);
484 static HRESULT WINAPI HTMLElement2_get_ondrop(IHTMLElement2 *iface, VARIANT *p)
486 HTMLElement *This = HTMLELEM2_THIS(iface);
487 FIXME("(%p)->(%p)\n", This, p);
491 static HRESULT WINAPI HTMLElement2_put_onbeforecut(IHTMLElement2 *iface, VARIANT v)
493 HTMLElement *This = HTMLELEM2_THIS(iface);
494 FIXME("(%p)->()\n", This);
498 static HRESULT WINAPI HTMLElement2_get_onbeforecut(IHTMLElement2 *iface, VARIANT *p)
500 HTMLElement *This = HTMLELEM2_THIS(iface);
501 FIXME("(%p)->(%p)\n", This, p);
505 static HRESULT WINAPI HTMLElement2_put_oncut(IHTMLElement2 *iface, VARIANT v)
507 HTMLElement *This = HTMLELEM2_THIS(iface);
508 FIXME("(%p)->()\n", This);
512 static HRESULT WINAPI HTMLElement2_get_oncut(IHTMLElement2 *iface, VARIANT *p)
514 HTMLElement *This = HTMLELEM2_THIS(iface);
515 FIXME("(%p)->(%p)\n", This, p);
519 static HRESULT WINAPI HTMLElement2_put_onbeforecopy(IHTMLElement2 *iface, VARIANT v)
521 HTMLElement *This = HTMLELEM2_THIS(iface);
522 FIXME("(%p)->()\n", This);
526 static HRESULT WINAPI HTMLElement2_get_onbeforecopy(IHTMLElement2 *iface, VARIANT *p)
528 HTMLElement *This = HTMLELEM2_THIS(iface);
529 FIXME("(%p)->(%p)\n", This, p);
533 static HRESULT WINAPI HTMLElement2_put_oncopy(IHTMLElement2 *iface, VARIANT v)
535 HTMLElement *This = HTMLELEM2_THIS(iface);
536 FIXME("(%p)->()\n", This);
540 static HRESULT WINAPI HTMLElement2_get_oncopy(IHTMLElement2 *iface, VARIANT *p)
542 HTMLElement *This = HTMLELEM2_THIS(iface);
543 FIXME("(%p)->(%p)\n", This, p);
547 static HRESULT WINAPI HTMLElement2_put_onbeforepaste(IHTMLElement2 *iface, VARIANT v)
549 HTMLElement *This = HTMLELEM2_THIS(iface);
550 FIXME("(%p)->()\n", This);
554 static HRESULT WINAPI HTMLElement2_get_onbeforepaste(IHTMLElement2 *iface, VARIANT *p)
556 HTMLElement *This = HTMLELEM2_THIS(iface);
557 FIXME("(%p)->(%p)\n", This, p);
561 static HRESULT WINAPI HTMLElement2_put_onpaste(IHTMLElement2 *iface, VARIANT v)
563 HTMLElement *This = HTMLELEM2_THIS(iface);
565 TRACE("(%p)->(%s)\n", This, debugstr_variant(&v));
567 return set_node_event(&This->node, EVENTID_PASTE, &v);
570 static HRESULT WINAPI HTMLElement2_get_onpaste(IHTMLElement2 *iface, VARIANT *p)
572 HTMLElement *This = HTMLELEM2_THIS(iface);
574 TRACE("(%p)->(%p)\n", This, p);
576 return get_node_event(&This->node, EVENTID_PASTE, p);
579 static HRESULT WINAPI HTMLElement2_get_currentStyle(IHTMLElement2 *iface, IHTMLCurrentStyle **p)
581 HTMLElement *This = HTMLELEM2_THIS(iface);
583 TRACE("(%p)->(%p)\n", This, p);
585 return HTMLCurrentStyle_Create(This, p);
588 static HRESULT WINAPI HTMLElement2_put_onpropertychange(IHTMLElement2 *iface, VARIANT v)
590 HTMLElement *This = HTMLELEM2_THIS(iface);
591 FIXME("(%p)->()\n", This);
595 static HRESULT WINAPI HTMLElement2_get_onpropertychange(IHTMLElement2 *iface, VARIANT *p)
597 HTMLElement *This = HTMLELEM2_THIS(iface);
598 FIXME("(%p)->(%p)\n", This, p);
602 static HRESULT WINAPI HTMLElement2_getClientRects(IHTMLElement2 *iface, IHTMLRectCollection **pRectCol)
604 HTMLElement *This = HTMLELEM2_THIS(iface);
605 FIXME("(%p)->(%p)\n", This, pRectCol);
609 static HRESULT WINAPI HTMLElement2_getBoundingClientRect(IHTMLElement2 *iface, IHTMLRect **pRect)
611 HTMLElement *This = HTMLELEM2_THIS(iface);
612 nsIDOMNSElement *nselem;
613 nsIDOMClientRect *nsrect;
617 TRACE("(%p)->(%p)\n", This, pRect);
619 nsres = nsIDOMHTMLElement_QueryInterface(This->node.nsnode, &IID_nsIDOMNSElement,
621 if(NS_FAILED(nsres)) {
622 ERR("Could not get nsIDOMNSElement iface: %08x\n", nsres);
626 nsres = nsIDOMNSElement_GetBoundingClientRect(nselem, &nsrect);
627 nsIDOMNSElement_Release(nselem);
628 if(NS_FAILED(nsres) || !nsrect) {
629 ERR("GetBoindingClientRect failed: %08x\n", nsres);
633 hres = create_html_rect(nsrect, pRect);
635 nsIDOMClientRect_Release(nsrect);
639 static HRESULT WINAPI HTMLElement2_setExpression(IHTMLElement2 *iface, BSTR propname,
640 BSTR expression, BSTR language)
642 HTMLElement *This = HTMLELEM2_THIS(iface);
643 FIXME("(%p)->(%s %s %s)\n", This, debugstr_w(propname), debugstr_w(expression),
644 debugstr_w(language));
648 static HRESULT WINAPI HTMLElement2_getExpression(IHTMLElement2 *iface, BSTR propname,
651 HTMLElement *This = HTMLELEM2_THIS(iface);
652 FIXME("(%p)->(%s %p)\n", This, debugstr_w(propname), expression);
656 static HRESULT WINAPI HTMLElement2_removeExpression(IHTMLElement2 *iface, BSTR propname,
657 VARIANT_BOOL *pfSuccess)
659 HTMLElement *This = HTMLELEM2_THIS(iface);
660 FIXME("(%p)->(%s %p)\n", This, debugstr_w(propname), pfSuccess);
664 static HRESULT WINAPI HTMLElement2_put_tabIndex(IHTMLElement2 *iface, short v)
666 HTMLElement *This = HTMLELEM2_THIS(iface);
667 nsIDOMNSHTMLElement *nselem;
670 TRACE("(%p)->(%d)\n", This, v);
672 nsres = nsIDOMHTMLElement_QueryInterface(This->nselem, &IID_nsIDOMNSHTMLElement, (void**)&nselem);
673 if(NS_FAILED(nsres)) {
674 ERR("Could not get nsIDOMHTMLNSElement: %08x\n", nsres);
678 nsres = nsIDOMNSHTMLElement_SetTabIndex(nselem, v);
679 nsIDOMNSHTMLElement_Release(nselem);
681 ERR("GetTabIndex failed: %08x\n", nsres);
686 static HRESULT WINAPI HTMLElement2_get_tabIndex(IHTMLElement2 *iface, short *p)
688 HTMLElement *This = HTMLELEM2_THIS(iface);
689 nsIDOMNSHTMLElement *nselem;
693 TRACE("(%p)->(%p)\n", This, p);
695 nsres = nsIDOMHTMLElement_QueryInterface(This->nselem, &IID_nsIDOMNSHTMLElement, (void**)&nselem);
696 if(NS_FAILED(nsres)) {
697 ERR("Could not get nsIDOMHTMLNSElement: %08x\n", nsres);
701 nsres = nsIDOMNSHTMLElement_GetTabIndex(nselem, &index);
702 nsIDOMNSHTMLElement_Release(nselem);
703 if(NS_FAILED(nsres)) {
704 ERR("GetTabIndex failed: %08x\n", nsres);
712 static HRESULT WINAPI HTMLElement2_focus(IHTMLElement2 *iface)
714 HTMLElement *This = HTMLELEM2_THIS(iface);
715 nsIDOMNSHTMLElement *nselem;
718 TRACE("(%p)\n", This);
720 nsres = nsIDOMHTMLElement_QueryInterface(This->nselem, &IID_nsIDOMNSHTMLElement, (void**)&nselem);
721 if(NS_SUCCEEDED(nsres)) {
722 nsIDOMNSHTMLElement_Focus(nselem);
723 nsIDOMNSHTMLElement_Release(nselem);
725 ERR("Could not get nsIDOMHTMLNSElement: %08x\n", nsres);
731 static HRESULT WINAPI HTMLElement2_put_accessKey(IHTMLElement2 *iface, BSTR v)
733 HTMLElement *This = HTMLELEM2_THIS(iface);
736 static WCHAR accessKeyW[] = {'a','c','c','e','s','s','K','e','y',0};
738 TRACE("(%p)->(%s)\n", This, debugstr_w(v));
740 V_VT(&var) = VT_BSTR;
742 return IHTMLElement_setAttribute(HTMLELEM(This), accessKeyW, var, 0);
745 static HRESULT WINAPI HTMLElement2_get_accessKey(IHTMLElement2 *iface, BSTR *p)
747 HTMLElement *This = HTMLELEM2_THIS(iface);
748 FIXME("(%p)->(%p)\n", This, p);
752 static HRESULT WINAPI HTMLElement2_put_onblur(IHTMLElement2 *iface, VARIANT v)
754 HTMLElement *This = HTMLELEM2_THIS(iface);
756 TRACE("(%p)->(%s)\n", This, debugstr_variant(&v));
758 return set_node_event(&This->node, EVENTID_BLUR, &v);
761 static HRESULT WINAPI HTMLElement2_get_onblur(IHTMLElement2 *iface, VARIANT *p)
763 HTMLElement *This = HTMLELEM2_THIS(iface);
765 TRACE("(%p)->(%p)\n", This, p);
767 return get_node_event(&This->node, EVENTID_BLUR, p);
770 static HRESULT WINAPI HTMLElement2_put_onfocus(IHTMLElement2 *iface, VARIANT v)
772 HTMLElement *This = HTMLELEM2_THIS(iface);
774 TRACE("(%p)->(%s)\n", This, debugstr_variant(&v));
776 return set_node_event(&This->node, EVENTID_FOCUS, &v);
779 static HRESULT WINAPI HTMLElement2_get_onfocus(IHTMLElement2 *iface, VARIANT *p)
781 HTMLElement *This = HTMLELEM2_THIS(iface);
783 TRACE("(%p)->(%p)\n", This, p);
785 return get_node_event(&This->node, EVENTID_FOCUS, p);
788 static HRESULT WINAPI HTMLElement2_put_onresize(IHTMLElement2 *iface, VARIANT v)
790 HTMLElement *This = HTMLELEM2_THIS(iface);
791 FIXME("(%p)->()\n", This);
795 static HRESULT WINAPI HTMLElement2_get_onresize(IHTMLElement2 *iface, VARIANT *p)
797 HTMLElement *This = HTMLELEM2_THIS(iface);
798 FIXME("(%p)->(%p)\n", This, p);
802 static HRESULT WINAPI HTMLElement2_blur(IHTMLElement2 *iface)
804 HTMLElement *This = HTMLELEM2_THIS(iface);
805 FIXME("(%p)\n", This);
809 static HRESULT WINAPI HTMLElement2_addFilter(IHTMLElement2 *iface, IUnknown *pUnk)
811 HTMLElement *This = HTMLELEM2_THIS(iface);
812 FIXME("(%p)->(%p)\n", This, pUnk);
816 static HRESULT WINAPI HTMLElement2_removeFilter(IHTMLElement2 *iface, IUnknown *pUnk)
818 HTMLElement *This = HTMLELEM2_THIS(iface);
819 FIXME("(%p)->(%p)\n", This, pUnk);
823 static HRESULT WINAPI HTMLElement2_get_clientHeight(IHTMLElement2 *iface, LONG *p)
825 HTMLElement *This = HTMLELEM2_THIS(iface);
826 nsIDOMNSElement *nselem;
830 TRACE("(%p)->(%p)\n", This, p);
832 nsres = nsIDOMHTMLElement_QueryInterface(This->nselem, &IID_nsIDOMNSElement, (void**)&nselem);
833 if(NS_SUCCEEDED(nsres)) {
834 nsIDOMNSElement_GetClientHeight(nselem, &height);
835 nsIDOMNSElement_Release(nselem);
837 ERR("Could not get nsIDOMNSElement: %08x\n", nsres);
844 static HRESULT WINAPI HTMLElement2_get_clientWidth(IHTMLElement2 *iface, LONG *p)
846 HTMLElement *This = HTMLELEM2_THIS(iface);
847 nsIDOMNSElement *nselem;
851 TRACE("(%p)->(%p)\n", This, p);
853 nsres = nsIDOMHTMLElement_QueryInterface(This->nselem, &IID_nsIDOMNSElement, (void**)&nselem);
854 if(NS_SUCCEEDED(nsres)) {
855 nsIDOMNSElement_GetClientWidth(nselem, &width);
856 nsIDOMNSElement_Release(nselem);
858 ERR("Could not get nsIDOMNSElement: %08x\n", nsres);
865 static HRESULT WINAPI HTMLElement2_get_clientTop(IHTMLElement2 *iface, LONG *p)
867 HTMLElement *This = HTMLELEM2_THIS(iface);
868 nsIDOMNSElement *nselem;
869 PRInt32 client_top = 0;
872 TRACE("(%p)->(%p)\n", This, p);
874 nsres = nsIDOMElement_QueryInterface(This->nselem, &IID_nsIDOMNSElement, (void**)&nselem);
875 if(NS_SUCCEEDED(nsres)) {
876 nsres = nsIDOMNSElement_GetClientTop(nselem, &client_top);
877 nsIDOMNSElement_Release(nselem);
879 ERR("GetScrollHeight failed: %08x\n", nsres);
881 ERR("Could not get nsIDOMNSElement interface: %08x\n", nsres);
885 TRACE("*p = %d\n", *p);
889 static HRESULT WINAPI HTMLElement2_get_clientLeft(IHTMLElement2 *iface, LONG *p)
891 HTMLElement *This = HTMLELEM2_THIS(iface);
892 nsIDOMNSElement *nselem;
893 PRInt32 client_left = 0;
896 TRACE("(%p)->(%p)\n", This, p);
898 nsres = nsIDOMElement_QueryInterface(This->nselem, &IID_nsIDOMNSElement, (void**)&nselem);
899 if(NS_SUCCEEDED(nsres)) {
900 nsres = nsIDOMNSElement_GetClientLeft(nselem, &client_left);
901 nsIDOMNSElement_Release(nselem);
903 ERR("GetScrollHeight failed: %08x\n", nsres);
905 ERR("Could not get nsIDOMNSElement interface: %08x\n", nsres);
909 TRACE("*p = %d\n", *p);
913 static HRESULT WINAPI HTMLElement2_attachEvent(IHTMLElement2 *iface, BSTR event,
914 IDispatch *pDisp, VARIANT_BOOL *pfResult)
916 HTMLElement *This = HTMLELEM2_THIS(iface);
918 TRACE("(%p)->(%s %p %p)\n", This, debugstr_w(event), pDisp, pfResult);
920 return attach_event(get_node_event_target(&This->node), This->node.nsnode, &This->node.doc->basedoc, event, pDisp, pfResult);
923 static HRESULT WINAPI HTMLElement2_detachEvent(IHTMLElement2 *iface, BSTR event, IDispatch *pDisp)
925 HTMLElement *This = HTMLELEM2_THIS(iface);
927 TRACE("(%p)->(%s %p)\n", This, debugstr_w(event), pDisp);
929 return detach_event(*get_node_event_target(&This->node), &This->node.doc->basedoc, event, pDisp);
932 static HRESULT WINAPI HTMLElement2_get_readyState(IHTMLElement2 *iface, VARIANT *p)
934 HTMLElement *This = HTMLELEM2_THIS(iface);
937 TRACE("(%p)->(%p)\n", This, p);
939 if(This->node.vtbl->get_readystate) {
942 hres = This->node.vtbl->get_readystate(&This->node, &str);
946 static const WCHAR completeW[] = {'c','o','m','p','l','e','t','e',0};
948 str = SysAllocString(completeW);
950 return E_OUTOFMEMORY;
958 static HRESULT WINAPI HTMLElement2_put_onreadystatechange(IHTMLElement2 *iface, VARIANT v)
960 HTMLElement *This = HTMLELEM2_THIS(iface);
962 TRACE("(%p)->(%s)\n", This, debugstr_variant(&v));
964 return set_node_event(&This->node, EVENTID_READYSTATECHANGE, &v);
967 static HRESULT WINAPI HTMLElement2_get_onreadystatechange(IHTMLElement2 *iface, VARIANT *p)
969 HTMLElement *This = HTMLELEM2_THIS(iface);
971 TRACE("(%p)->(%p)\n", This, p);
973 return get_node_event(&This->node, EVENTID_READYSTATECHANGE, p);
976 static HRESULT WINAPI HTMLElement2_put_onrowsdelete(IHTMLElement2 *iface, VARIANT v)
978 HTMLElement *This = HTMLELEM2_THIS(iface);
979 FIXME("(%p)->()\n", This);
983 static HRESULT WINAPI HTMLElement2_get_onrowsdelete(IHTMLElement2 *iface, VARIANT *p)
985 HTMLElement *This = HTMLELEM2_THIS(iface);
986 FIXME("(%p)->(%p)\n", This, p);
990 static HRESULT WINAPI HTMLElement2_put_onrowsinserted(IHTMLElement2 *iface, VARIANT v)
992 HTMLElement *This = HTMLELEM2_THIS(iface);
993 FIXME("(%p)->()\n", This);
997 static HRESULT WINAPI HTMLElement2_get_onrowsinserted(IHTMLElement2 *iface, VARIANT *p)
999 HTMLElement *This = HTMLELEM2_THIS(iface);
1000 FIXME("(%p)->(%p)\n", This, p);
1004 static HRESULT WINAPI HTMLElement2_put_oncellchange(IHTMLElement2 *iface, VARIANT v)
1006 HTMLElement *This = HTMLELEM2_THIS(iface);
1007 FIXME("(%p)->()\n", This);
1011 static HRESULT WINAPI HTMLElement2_get_oncellchange(IHTMLElement2 *iface, VARIANT *p)
1013 HTMLElement *This = HTMLELEM2_THIS(iface);
1014 FIXME("(%p)->(%p)\n", This, p);
1018 static HRESULT WINAPI HTMLElement2_put_dir(IHTMLElement2 *iface, BSTR v)
1020 HTMLElement *This = HTMLELEM2_THIS(iface);
1021 FIXME("(%p)->(%s)\n", This, debugstr_w(v));
1025 static HRESULT WINAPI HTMLElement2_get_dir(IHTMLElement2 *iface, BSTR *p)
1027 HTMLElement *This = HTMLELEM2_THIS(iface);
1029 TRACE("(%p)->(%p)\n", This, p);
1037 nsAString_Init(&dir_str, NULL);
1039 nsres = nsIDOMHTMLElement_GetDir(This->nselem, &dir_str);
1040 if(NS_SUCCEEDED(nsres)) {
1041 const PRUnichar *dir;
1042 nsAString_GetData(&dir_str, &dir);
1044 *p = SysAllocString(dir);
1046 ERR("GetDir failed: %08x\n", nsres);
1049 nsAString_Finish(&dir_str);
1052 TRACE("ret %s\n", debugstr_w(*p));
1056 static HRESULT WINAPI HTMLElement2_createControlRange(IHTMLElement2 *iface, IDispatch **range)
1058 HTMLElement *This = HTMLELEM2_THIS(iface);
1059 FIXME("(%p)->(%p)\n", This, range);
1063 static HRESULT WINAPI HTMLElement2_get_scrollHeight(IHTMLElement2 *iface, LONG *p)
1065 HTMLElement *This = HTMLELEM2_THIS(iface);
1066 nsIDOMNSElement *nselem;
1070 TRACE("(%p)->(%p)\n", This, p);
1072 nsres = nsIDOMElement_QueryInterface(This->nselem, &IID_nsIDOMNSElement, (void**)&nselem);
1073 if(NS_SUCCEEDED(nsres)) {
1074 nsres = nsIDOMNSElement_GetScrollHeight(nselem, &height);
1075 nsIDOMNSElement_Release(nselem);
1076 if(NS_FAILED(nsres))
1077 ERR("GetScrollHeight failed: %08x\n", nsres);
1079 ERR("Could not get nsIDOMNSElement interface: %08x\n", nsres);
1083 TRACE("*p = %d\n", *p);
1088 static HRESULT WINAPI HTMLElement2_get_scrollWidth(IHTMLElement2 *iface, LONG *p)
1090 HTMLElement *This = HTMLELEM2_THIS(iface);
1091 nsIDOMNSElement *nselem;
1095 TRACE("(%p)->(%p)\n", This, p);
1097 nsres = nsIDOMElement_QueryInterface(This->nselem, &IID_nsIDOMNSElement, (void**)&nselem);
1098 if(NS_SUCCEEDED(nsres)) {
1099 nsres = nsIDOMNSElement_GetScrollWidth(nselem, &width);
1100 nsIDOMNSElement_Release(nselem);
1101 if(NS_FAILED(nsres))
1102 ERR("GetScrollWidth failed: %08x\n", nsres);
1104 ERR("Could not get nsIDOMNSElement interface: %08x\n", nsres);
1108 TRACE("*p = %d\n", *p);
1113 static HRESULT WINAPI HTMLElement2_put_scrollTop(IHTMLElement2 *iface, LONG v)
1115 HTMLElement *This = HTMLELEM2_THIS(iface);
1116 nsIDOMNSElement *nselem;
1119 TRACE("(%p)->(%d)\n", This, v);
1122 FIXME("NULL nselem\n");
1126 nsres = nsIDOMHTMLElement_QueryInterface(This->nselem, &IID_nsIDOMNSElement, (void**)&nselem);
1127 if(NS_SUCCEEDED(nsres)) {
1128 nsIDOMNSElement_SetScrollTop(nselem, v);
1129 nsIDOMNSElement_Release(nselem);
1131 ERR("Could not get nsIDOMNSElement interface: %08x\n", nsres);
1137 static HRESULT WINAPI HTMLElement2_get_scrollTop(IHTMLElement2 *iface, LONG *p)
1139 HTMLElement *This = HTMLELEM2_THIS(iface);
1140 nsIDOMNSElement *nselem;
1144 TRACE("(%p)->(%p)\n", This, p);
1146 nsres = nsIDOMElement_QueryInterface(This->nselem, &IID_nsIDOMNSElement, (void**)&nselem);
1147 if(NS_SUCCEEDED(nsres)) {
1148 nsres = nsIDOMNSElement_GetScrollTop(nselem, &top);
1149 nsIDOMNSElement_Release(nselem);
1150 if(NS_FAILED(nsres))
1151 ERR("GetScrollTop failed: %08x\n", nsres);
1153 ERR("Could not get nsIDOMNSElement interface: %08x\n", nsres);
1157 TRACE("*p = %d\n", *p);
1162 static HRESULT WINAPI HTMLElement2_put_scrollLeft(IHTMLElement2 *iface, LONG v)
1164 HTMLElement *This = HTMLELEM2_THIS(iface);
1165 nsIDOMNSElement *nselem;
1168 TRACE("(%p)->(%d)\n", This, v);
1171 FIXME("NULL nselem\n");
1175 nsres = nsIDOMElement_QueryInterface(This->nselem, &IID_nsIDOMNSElement, (void**)&nselem);
1176 if(NS_SUCCEEDED(nsres)) {
1177 nsIDOMNSElement_SetScrollLeft(nselem, v);
1178 nsIDOMNSElement_Release(nselem);
1180 ERR("Could not get nsIDOMNSElement interface: %08x\n", nsres);
1186 static HRESULT WINAPI HTMLElement2_get_scrollLeft(IHTMLElement2 *iface, LONG *p)
1188 HTMLElement *This = HTMLELEM2_THIS(iface);
1189 nsIDOMNSElement *nselem;
1193 TRACE("(%p)->(%p)\n", This, p);
1196 return E_INVALIDARG;
1200 FIXME("NULL nselem\n");
1204 nsres = nsIDOMHTMLElement_QueryInterface(This->nselem, &IID_nsIDOMNSElement, (void**)&nselem);
1205 if(NS_SUCCEEDED(nsres))
1207 nsres = nsIDOMNSElement_GetScrollLeft(nselem, &left);
1208 nsIDOMNSElement_Release(nselem);
1209 if(NS_FAILED(nsres))
1214 TRACE("*p = %d\n", *p);
1219 static HRESULT WINAPI HTMLElement2_clearAttributes(IHTMLElement2 *iface)
1221 HTMLElement *This = HTMLELEM2_THIS(iface);
1222 FIXME("(%p)\n", This);
1226 static HRESULT WINAPI HTMLElement2_mergeAttributes(IHTMLElement2 *iface, IHTMLElement *mergeThis)
1228 HTMLElement *This = HTMLELEM2_THIS(iface);
1229 FIXME("(%p)->(%p)\n", This, mergeThis);
1233 static HRESULT WINAPI HTMLElement2_put_oncontextmenu(IHTMLElement2 *iface, VARIANT v)
1235 HTMLElement *This = HTMLELEM2_THIS(iface);
1236 FIXME("(%p)->()\n", This);
1240 static HRESULT WINAPI HTMLElement2_get_oncontextmenu(IHTMLElement2 *iface, VARIANT *p)
1242 HTMLElement *This = HTMLELEM2_THIS(iface);
1243 FIXME("(%p)->(%p)\n", This, p);
1247 static HRESULT WINAPI HTMLElement2_insertAdjecentElement(IHTMLElement2 *iface, BSTR where,
1248 IHTMLElement *insertedElement, IHTMLElement **inserted)
1250 HTMLElement *This = HTMLELEM2_THIS(iface);
1251 FIXME("(%p)->(%s %p %p)\n", This, debugstr_w(where), insertedElement, inserted);
1255 static HRESULT WINAPI HTMLElement2_applyElement(IHTMLElement2 *iface, IHTMLElement *apply,
1256 BSTR where, IHTMLElement **applied)
1258 HTMLElement *This = HTMLELEM2_THIS(iface);
1259 FIXME("(%p)->(%p %s %p)\n", This, apply, debugstr_w(where), applied);
1263 static HRESULT WINAPI HTMLElement2_getAdjecentText(IHTMLElement2 *iface, BSTR where, BSTR *text)
1265 HTMLElement *This = HTMLELEM2_THIS(iface);
1266 FIXME("(%p)->(%s %p)\n", This, debugstr_w(where), text);
1270 static HRESULT WINAPI HTMLElement2_replaceAdjecentText(IHTMLElement2 *iface, BSTR where,
1271 BSTR newText, BSTR *oldText)
1273 HTMLElement *This = HTMLELEM2_THIS(iface);
1274 FIXME("(%p)->(%s %s %p)\n", This, debugstr_w(where), debugstr_w(newText), oldText);
1278 static HRESULT WINAPI HTMLElement2_get_canHandleChildren(IHTMLElement2 *iface, VARIANT_BOOL *p)
1280 HTMLElement *This = HTMLELEM2_THIS(iface);
1281 FIXME("(%p)->(%p)\n", This, p);
1285 static HRESULT WINAPI HTMLElement2_addBehavior(IHTMLElement2 *iface, BSTR bstrUrl,
1286 VARIANT *pvarFactory, LONG *pCookie)
1288 HTMLElement *This = HTMLELEM2_THIS(iface);
1289 FIXME("(%p)->(%s %p %p)\n", This, debugstr_w(bstrUrl), pvarFactory, pCookie);
1293 static HRESULT WINAPI HTMLElement2_removeBehavior(IHTMLElement2 *iface, LONG cookie,
1294 VARIANT_BOOL *pfResult)
1296 HTMLElement *This = HTMLELEM2_THIS(iface);
1297 FIXME("(%p)->(%d %p)\n", This, cookie, pfResult);
1301 static HRESULT WINAPI HTMLElement2_get_runtimeStyle(IHTMLElement2 *iface, IHTMLStyle **p)
1303 HTMLElement *This = HTMLELEM2_THIS(iface);
1304 FIXME("(%p)->(%p)\n", This, p);
1308 static HRESULT WINAPI HTMLElement2_get_behaviorUrns(IHTMLElement2 *iface, IDispatch **p)
1310 HTMLElement *This = HTMLELEM2_THIS(iface);
1311 FIXME("(%p)->(%p)\n", This, p);
1315 static HRESULT WINAPI HTMLElement2_put_tagUrn(IHTMLElement2 *iface, BSTR v)
1317 HTMLElement *This = HTMLELEM2_THIS(iface);
1318 FIXME("(%p)->(%s)\n", This, debugstr_w(v));
1322 static HRESULT WINAPI HTMLElement2_get_tagUrn(IHTMLElement2 *iface, BSTR *p)
1324 HTMLElement *This = HTMLELEM2_THIS(iface);
1325 FIXME("(%p)->(%p)\n", This, p);
1329 static HRESULT WINAPI HTMLElement2_put_onbeforeeditfocus(IHTMLElement2 *iface, VARIANT vv)
1331 HTMLElement *This = HTMLELEM2_THIS(iface);
1332 FIXME("(%p)->()\n", This);
1336 static HRESULT WINAPI HTMLElement2_get_onbeforeeditfocus(IHTMLElement2 *iface, VARIANT *p)
1338 HTMLElement *This = HTMLELEM2_THIS(iface);
1339 FIXME("(%p)->(%p)\n", This, p);
1343 static HRESULT WINAPI HTMLElement2_get_readyStateValue(IHTMLElement2 *iface, LONG *p)
1345 HTMLElement *This = HTMLELEM2_THIS(iface);
1346 FIXME("(%p)->(%p)\n", This, p);
1350 static HRESULT WINAPI HTMLElement2_getElementsByTagName(IHTMLElement2 *iface, BSTR v,
1351 IHTMLElementCollection **pelColl)
1353 HTMLElement *This = HTMLELEM2_THIS(iface);
1354 nsIDOMNodeList *nslist;
1358 TRACE("(%p)->(%s %p)\n", This, debugstr_w(v), pelColl);
1360 nsAString_InitDepend(&tag_str, v);
1361 nsres = nsIDOMHTMLElement_GetElementsByTagName(This->nselem, &tag_str, &nslist);
1362 nsAString_Finish(&tag_str);
1363 if(NS_FAILED(nsres)) {
1364 ERR("GetElementByTagName failed: %08x\n", nsres);
1368 *pelColl = create_collection_from_nodelist(This->node.doc, (IUnknown*)HTMLELEM(This), nslist);
1369 nsIDOMNodeList_Release(nslist);
1373 #undef HTMLELEM2_THIS
1375 static const IHTMLElement2Vtbl HTMLElement2Vtbl = {
1376 HTMLElement2_QueryInterface,
1377 HTMLElement2_AddRef,
1378 HTMLElement2_Release,
1379 HTMLElement2_GetTypeInfoCount,
1380 HTMLElement2_GetTypeInfo,
1381 HTMLElement2_GetIDsOfNames,
1382 HTMLElement2_Invoke,
1383 HTMLElement2_get_scopeName,
1384 HTMLElement2_setCapture,
1385 HTMLElement2_releaseCapture,
1386 HTMLElement2_put_onlosecapture,
1387 HTMLElement2_get_onlosecapture,
1388 HTMLElement2_componentFromPoint,
1389 HTMLElement2_doScroll,
1390 HTMLElement2_put_onscroll,
1391 HTMLElement2_get_onscroll,
1392 HTMLElement2_put_ondrag,
1393 HTMLElement2_get_ondrag,
1394 HTMLElement2_put_ondragend,
1395 HTMLElement2_get_ondragend,
1396 HTMLElement2_put_ondragenter,
1397 HTMLElement2_get_ondragenter,
1398 HTMLElement2_put_ondragover,
1399 HTMLElement2_get_ondragover,
1400 HTMLElement2_put_ondragleave,
1401 HTMLElement2_get_ondragleave,
1402 HTMLElement2_put_ondrop,
1403 HTMLElement2_get_ondrop,
1404 HTMLElement2_put_onbeforecut,
1405 HTMLElement2_get_onbeforecut,
1406 HTMLElement2_put_oncut,
1407 HTMLElement2_get_oncut,
1408 HTMLElement2_put_onbeforecopy,
1409 HTMLElement2_get_onbeforecopy,
1410 HTMLElement2_put_oncopy,
1411 HTMLElement2_get_oncopy,
1412 HTMLElement2_put_onbeforepaste,
1413 HTMLElement2_get_onbeforepaste,
1414 HTMLElement2_put_onpaste,
1415 HTMLElement2_get_onpaste,
1416 HTMLElement2_get_currentStyle,
1417 HTMLElement2_put_onpropertychange,
1418 HTMLElement2_get_onpropertychange,
1419 HTMLElement2_getClientRects,
1420 HTMLElement2_getBoundingClientRect,
1421 HTMLElement2_setExpression,
1422 HTMLElement2_getExpression,
1423 HTMLElement2_removeExpression,
1424 HTMLElement2_put_tabIndex,
1425 HTMLElement2_get_tabIndex,
1427 HTMLElement2_put_accessKey,
1428 HTMLElement2_get_accessKey,
1429 HTMLElement2_put_onblur,
1430 HTMLElement2_get_onblur,
1431 HTMLElement2_put_onfocus,
1432 HTMLElement2_get_onfocus,
1433 HTMLElement2_put_onresize,
1434 HTMLElement2_get_onresize,
1436 HTMLElement2_addFilter,
1437 HTMLElement2_removeFilter,
1438 HTMLElement2_get_clientHeight,
1439 HTMLElement2_get_clientWidth,
1440 HTMLElement2_get_clientTop,
1441 HTMLElement2_get_clientLeft,
1442 HTMLElement2_attachEvent,
1443 HTMLElement2_detachEvent,
1444 HTMLElement2_get_readyState,
1445 HTMLElement2_put_onreadystatechange,
1446 HTMLElement2_get_onreadystatechange,
1447 HTMLElement2_put_onrowsdelete,
1448 HTMLElement2_get_onrowsdelete,
1449 HTMLElement2_put_onrowsinserted,
1450 HTMLElement2_get_onrowsinserted,
1451 HTMLElement2_put_oncellchange,
1452 HTMLElement2_get_oncellchange,
1453 HTMLElement2_put_dir,
1454 HTMLElement2_get_dir,
1455 HTMLElement2_createControlRange,
1456 HTMLElement2_get_scrollHeight,
1457 HTMLElement2_get_scrollWidth,
1458 HTMLElement2_put_scrollTop,
1459 HTMLElement2_get_scrollTop,
1460 HTMLElement2_put_scrollLeft,
1461 HTMLElement2_get_scrollLeft,
1462 HTMLElement2_clearAttributes,
1463 HTMLElement2_mergeAttributes,
1464 HTMLElement2_put_oncontextmenu,
1465 HTMLElement2_get_oncontextmenu,
1466 HTMLElement2_insertAdjecentElement,
1467 HTMLElement2_applyElement,
1468 HTMLElement2_getAdjecentText,
1469 HTMLElement2_replaceAdjecentText,
1470 HTMLElement2_get_canHandleChildren,
1471 HTMLElement2_addBehavior,
1472 HTMLElement2_removeBehavior,
1473 HTMLElement2_get_runtimeStyle,
1474 HTMLElement2_get_behaviorUrns,
1475 HTMLElement2_put_tagUrn,
1476 HTMLElement2_get_tagUrn,
1477 HTMLElement2_put_onbeforeeditfocus,
1478 HTMLElement2_get_onbeforeeditfocus,
1479 HTMLElement2_get_readyStateValue,
1480 HTMLElement2_getElementsByTagName,
1483 void HTMLElement2_Init(HTMLElement *This)
1485 This->lpHTMLElement2Vtbl = &HTMLElement2Vtbl;