static HRESULT WINAPI HTMLEventObj_get_shiftKey(IHTMLEventObj *iface, VARIANT_BOOL *p) { HTMLEventObj *This = impl_from_IHTMLEventObj(iface); cpp_bool ret = FALSE; TRACE("(%p)->(%p)\n", This, p); if(This->nsevent) { nsIDOMKeyEvent *key_event; nsresult nsres; nsres = nsIDOMEvent_QueryInterface(This->nsevent, &IID_nsIDOMKeyEvent, (void**)&key_event); if(NS_SUCCEEDED(nsres)) { nsIDOMKeyEvent_GetShiftKey(key_event, &ret); nsIDOMKeyEvent_Release(key_event); }else { nsIDOMMouseEvent *mouse_event; nsres = nsIDOMEvent_QueryInterface(This->nsevent, &IID_nsIDOMMouseEvent, (void**)&mouse_event); if(NS_SUCCEEDED(nsres)) { nsIDOMMouseEvent_GetShiftKey(mouse_event, &ret); nsIDOMMouseEvent_Release(mouse_event); } } } *p = ret ? VARIANT_TRUE : VARIANT_FALSE; return S_OK; }
static HRESULT WINAPI HTMLEventObj_Invoke(IHTMLEventObj *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr) { HTMLEventObj *This = impl_from_IHTMLEventObj(iface); return IDispatchEx_Invoke(&This->dispex.IDispatchEx_iface, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); }
static HRESULT WINAPI HTMLEventObj_GetIDsOfNames(IHTMLEventObj *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId) { HTMLEventObj *This = impl_from_IHTMLEventObj(iface); return IDispatchEx_GetIDsOfNames(&This->dispex.IDispatchEx_iface, riid, rgszNames, cNames, lcid, rgDispId); }
static HRESULT WINAPI HTMLEventObj_get_returnValue(IHTMLEventObj *iface, VARIANT *p) { HTMLEventObj *This = impl_from_IHTMLEventObj(iface); FIXME("(%p)->(%p)\n", This, p); V_VT(p) = VT_EMPTY; return S_OK; }
static HRESULT WINAPI HTMLEventObj_get_srcElement(IHTMLEventObj *iface, IHTMLElement **p) { HTMLEventObj *This = impl_from_IHTMLEventObj(iface); TRACE("(%p)->(%p)\n", This, p); return IHTMLDOMNode_QueryInterface(&This->target->IHTMLDOMNode_iface, &IID_IHTMLElement, (void**)p); }
static HRESULT WINAPI HTMLEventObj_get_cancelBubble(IHTMLEventObj *iface, VARIANT_BOOL *p) { HTMLEventObj *This = impl_from_IHTMLEventObj(iface); TRACE("(%p)->(%p)\n", This, p); *p = This->cancel_bubble ? VARIANT_TRUE : VARIANT_FALSE; return S_OK; }
static ULONG WINAPI HTMLEventObj_AddRef(IHTMLEventObj *iface) { HTMLEventObj *This = impl_from_IHTMLEventObj(iface); LONG ref = InterlockedIncrement(&This->ref); TRACE("(%p) ref=%d\n", This, ref); return ref; }
static HRESULT WINAPI HTMLEventObj_get_toElement(IHTMLEventObj *iface, IHTMLElement **p) { HTMLEventObj *This = impl_from_IHTMLEventObj(iface); FIXME("(%p)->(%p)\n", This, p); *p = NULL; return S_OK; }
static HRESULT WINAPI HTMLEventObj_get_returnValue(IHTMLEventObj *iface, VARIANT *p) { HTMLEventObj *This = impl_from_IHTMLEventObj(iface); TRACE("(%p)->(%p)\n", This, p); V_VT(p) = VT_EMPTY; return VariantCopy(p, &This->return_value); }
static HRESULT WINAPI HTMLEventObj_get_qualifier(IHTMLEventObj *iface, BSTR *p) { HTMLEventObj *This = impl_from_IHTMLEventObj(iface); FIXME("(%p)->(%p)\n", This, p); *p = NULL; return S_OK; }
static HRESULT WINAPI HTMLEventObj_get_type(IHTMLEventObj *iface, BSTR *p) { HTMLEventObj *This = impl_from_IHTMLEventObj(iface); TRACE("(%p)->(%p)\n", This, p); *p = SysAllocString(This->type->name); return *p ? S_OK : E_OUTOFMEMORY; }
static HRESULT WINAPI HTMLEventObj_get_offsetY(IHTMLEventObj *iface, LONG *p) { HTMLEventObj *This = impl_from_IHTMLEventObj(iface); FIXME("(%p)->(%p)\n", This, p); *p = 0; return S_OK; }
static HRESULT WINAPI HTMLEventObj_get_srcFilter(IHTMLEventObj *iface, IDispatch **p) { HTMLEventObj *This = impl_from_IHTMLEventObj(iface); FIXME("(%p)->(%p)\n", This, p); *p = NULL; return S_OK; }
static HRESULT WINAPI HTMLEventObj_put_cancelBubble(IHTMLEventObj *iface, VARIANT_BOOL v) { HTMLEventObj *This = impl_from_IHTMLEventObj(iface); TRACE("(%p)->(%x)\n", This, v); This->cancel_bubble = !!v; return S_OK; }
static HRESULT WINAPI HTMLEventObj_put_returnValue(IHTMLEventObj *iface, VARIANT v) { HTMLEventObj *This = impl_from_IHTMLEventObj(iface); TRACE("(%p)->(%s)\n", This, debugstr_variant(&v)); if(V_VT(&v) != VT_BOOL) { FIXME("unsupported value %s\n", debugstr_variant(&v)); return DISP_E_BADVARTYPE; } if(!V_BOOL(&v)) This->prevent_default = TRUE; return S_OK; }
static ULONG WINAPI HTMLEventObj_Release(IHTMLEventObj *iface) { HTMLEventObj *This = impl_from_IHTMLEventObj(iface); LONG ref = InterlockedDecrement(&This->ref); TRACE("(%p) ref=%d\n", This, ref); if(!ref) { if(This->nsevent) nsIDOMEvent_Release(This->nsevent); release_dispex(&This->dispex); heap_free(This); } return ref; }
static HRESULT WINAPI HTMLEventObj_get_screenY(IHTMLEventObj *iface, LONG *p) { HTMLEventObj *This = impl_from_IHTMLEventObj(iface); LONG y = 0; TRACE("(%p)->(%p)\n", This, p); if(This->nsevent) { nsIDOMMouseEvent *mouse_event; nsresult nsres; nsres = nsIDOMEvent_QueryInterface(This->nsevent, &IID_nsIDOMMouseEvent, (void**)&mouse_event); if(NS_SUCCEEDED(nsres)) { nsIDOMMouseEvent_GetScreenY(mouse_event, &y); nsIDOMMouseEvent_Release(mouse_event); } } *p = y; return S_OK; }
static HRESULT WINAPI HTMLEventObj_QueryInterface(IHTMLEventObj *iface, REFIID riid, void **ppv) { HTMLEventObj *This = impl_from_IHTMLEventObj(iface); TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); if(IsEqualGUID(&IID_IUnknown, riid)) { *ppv = &This->IHTMLEventObj_iface; }else if(IsEqualGUID(&IID_IHTMLEventObj, riid)) { *ppv = &This->IHTMLEventObj_iface; }else if(dispex_query_interface(&This->dispex, riid, ppv)) { return *ppv ? S_OK : E_NOINTERFACE; }else { *ppv = NULL; WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); return E_NOINTERFACE; } IUnknown_AddRef((IUnknown*)*ppv); return S_OK; }
static HRESULT WINAPI HTMLEventObj_get_keyCode(IHTMLEventObj *iface, LONG *p) { HTMLEventObj *This = impl_from_IHTMLEventObj(iface); UINT32 key_code = 0; TRACE("(%p)->(%p)\n", This, p); if(This->nsevent) { nsIDOMKeyEvent *key_event; nsresult nsres; nsres = nsIDOMEvent_QueryInterface(This->nsevent, &IID_nsIDOMKeyEvent, (void**)&key_event); if(NS_SUCCEEDED(nsres)) { nsIDOMKeyEvent_GetKeyCode(key_event, &key_code); nsIDOMKeyEvent_Release(key_event); } } *p = key_code; return S_OK; }
static HRESULT WINAPI HTMLEventObj_get_y(IHTMLEventObj *iface, LONG *p) { HTMLEventObj *This = impl_from_IHTMLEventObj(iface); LONG y = 0; TRACE("(%p)->(%p)\n", This, p); if(This->nsevent) { nsIDOMUIEvent *ui_event; nsresult nsres; nsres = nsIDOMEvent_QueryInterface(This->nsevent, &IID_nsIDOMUIEvent, (void**)&ui_event); if(NS_SUCCEEDED(nsres)) { /* NOTE: pageY is not exactly right here. */ nsres = nsIDOMUIEvent_GetPageY(ui_event, &y); assert(nsres == NS_OK); nsIDOMUIEvent_Release(ui_event); } } *p = y; return S_OK; }
static inline HTMLEventObj *unsafe_impl_from_IHTMLEventObj(IHTMLEventObj *iface) { return iface->lpVtbl == &HTMLEventObjVtbl ? impl_from_IHTMLEventObj(iface) : NULL; }
static HRESULT WINAPI HTMLEventObj_put_returnValue(IHTMLEventObj *iface, VARIANT v) { HTMLEventObj *This = impl_from_IHTMLEventObj(iface); FIXME("(%p)->()\n", This); return E_NOTIMPL; }
static HRESULT WINAPI HTMLEventObj_put_cancelBubble(IHTMLEventObj *iface, VARIANT_BOOL v) { HTMLEventObj *This = impl_from_IHTMLEventObj(iface); FIXME("(%p)->(%x)\n", This, v); return E_NOTIMPL; }
static HRESULT WINAPI HTMLEventObj_put_keyCode(IHTMLEventObj *iface, LONG v) { HTMLEventObj *This = impl_from_IHTMLEventObj(iface); FIXME("(%p)->(%d)\n", This, v); return E_NOTIMPL; }
static HRESULT WINAPI HTMLEventObj_GetTypeInfoCount(IHTMLEventObj *iface, UINT *pctinfo) { HTMLEventObj *This = impl_from_IHTMLEventObj(iface); return IDispatchEx_GetTypeInfoCount(&This->dispex.IDispatchEx_iface, pctinfo); }
static HRESULT WINAPI HTMLEventObj_GetTypeInfo(IHTMLEventObj *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo) { HTMLEventObj *This = impl_from_IHTMLEventObj(iface); return IDispatchEx_GetTypeInfo(&This->dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo); }