* Sync with Wine 1.7.27.
CORE-8540

svn path=/trunk/; revision=64458
This commit is contained in:
Amine Khaldi 2014-10-02 09:51:19 +00:00
parent 183ee0a9d0
commit a197629da8
73 changed files with 2231 additions and 961 deletions

View file

@ -16,6 +16,8 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#pragma once
typedef struct nsWineURI nsWineURI;
/* Keep sync with request_method_strings in nsio.c */

View file

@ -18,23 +18,120 @@
#include "mshtml_private.h"
static const char *debugstr_cp_guid(REFIID riid)
typedef struct {
IEnumConnections IEnumConnections_iface;
LONG ref;
unsigned iter;
ConnectionPoint *cp;
} EnumConnections;
static inline EnumConnections *impl_from_IEnumConnections(IEnumConnections *iface)
{
#define X(x) \
if(IsEqualGUID(riid, &x)) \
return #x
X(IID_IPropertyNotifySink);
X(DIID_HTMLDocumentEvents);
X(DIID_HTMLDocumentEvents2);
X(DIID_HTMLTableEvents);
X(DIID_HTMLTextContainerEvents);
#undef X
return debugstr_guid(riid);
return CONTAINING_RECORD(iface, EnumConnections, IEnumConnections_iface);
}
static HRESULT WINAPI EnumConnections_QueryInterface(IEnumConnections *iface, REFIID riid, void **ppv)
{
EnumConnections *This = impl_from_IEnumConnections(iface);
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
if(IsEqualGUID(riid, &IID_IUnknown)) {
*ppv = &This->IEnumConnections_iface;
}else if(IsEqualGUID(riid, &IID_IEnumConnections)) {
*ppv = &This->IEnumConnections_iface;
}else {
WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
*ppv = NULL;
return E_NOINTERFACE;
}
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
static ULONG WINAPI EnumConnections_AddRef(IEnumConnections *iface)
{
EnumConnections *This = impl_from_IEnumConnections(iface);
ULONG ref = InterlockedIncrement(&This->ref);
TRACE("(%p) ref=%d\n", This, ref);
return ref;
}
static ULONG WINAPI EnumConnections_Release(IEnumConnections *iface)
{
EnumConnections *This = impl_from_IEnumConnections(iface);
ULONG ref = InterlockedDecrement(&This->ref);
TRACE("(%p) ref=%d\n", This, ref);
if(!ref) {
IConnectionPoint_Release(&This->cp->IConnectionPoint_iface);
heap_free(This);
}
return ref;
}
static HRESULT WINAPI EnumConnections_Next(IEnumConnections *iface, ULONG cConnections, CONNECTDATA *rgcd, ULONG *pcFetched)
{
EnumConnections *This = impl_from_IEnumConnections(iface);
ULONG fetched = 0;
TRACE("(%p)->(%d %p %p)\n", This, cConnections, rgcd, pcFetched);
while(fetched < cConnections && This->iter < This->cp->sinks_size) {
if(!This->cp->sinks[This->iter].unk) {
This->iter++;
continue;
}
rgcd[fetched].pUnk = This->cp->sinks[This->iter].unk;
rgcd[fetched].dwCookie = ++This->iter;
IUnknown_AddRef(rgcd[fetched].pUnk);
fetched++;
}
if(pcFetched)
*pcFetched = fetched;
return fetched == cConnections ? S_OK : S_FALSE;
}
static HRESULT WINAPI EnumConnections_Skip(IEnumConnections *iface, ULONG cConnections)
{
EnumConnections *This = impl_from_IEnumConnections(iface);
FIXME("(%p)->(%d)\n", This, cConnections);
return E_NOTIMPL;
}
static HRESULT WINAPI EnumConnections_Reset(IEnumConnections *iface)
{
EnumConnections *This = impl_from_IEnumConnections(iface);
FIXME("(%p)\n", This);
return E_NOTIMPL;
}
static HRESULT WINAPI EnumConnections_Clone(IEnumConnections *iface, IEnumConnections **ppEnum)
{
EnumConnections *This = impl_from_IEnumConnections(iface);
FIXME("(%p)->(%p)\n", This, ppEnum);
return E_NOTIMPL;
}
static const IEnumConnectionsVtbl EnumConnectionsVtbl = {
EnumConnections_QueryInterface,
EnumConnections_AddRef,
EnumConnections_Release,
EnumConnections_Next,
EnumConnections_Skip,
EnumConnections_Reset,
EnumConnections_Clone
};
static inline ConnectionPoint *impl_from_IConnectionPoint(IConnectionPoint *iface)
{
return CONTAINING_RECORD(iface, ConnectionPoint, IConnectionPoint_iface);
@ -45,23 +142,20 @@ static HRESULT WINAPI ConnectionPoint_QueryInterface(IConnectionPoint *iface,
{
ConnectionPoint *This = impl_from_IConnectionPoint(iface);
*ppv = NULL;
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
if(IsEqualGUID(&IID_IUnknown, riid)) {
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
*ppv = &This->IConnectionPoint_iface;
}else if(IsEqualGUID(&IID_IConnectionPoint, riid)) {
TRACE("(%p)->(IID_IConnectionPoint %p)\n", This, ppv);
*ppv = &This->IConnectionPoint_iface;
}else {
*ppv = NULL;
WARN("Unsupported interface %s\n", debugstr_mshtml_guid(riid));
return E_NOINTERFACE;
}
if(*ppv) {
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
WARN("Unsupported interface %s\n", debugstr_guid(riid));
return E_NOINTERFACE;
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
static ULONG WINAPI ConnectionPoint_AddRef(IConnectionPoint *iface)
@ -162,8 +256,23 @@ static HRESULT WINAPI ConnectionPoint_EnumConnections(IConnectionPoint *iface,
IEnumConnections **ppEnum)
{
ConnectionPoint *This = impl_from_IConnectionPoint(iface);
FIXME("(%p)->(%p)\n", This, ppEnum);
return E_NOTIMPL;
EnumConnections *ret;
TRACE("(%p)->(%p)\n", This, ppEnum);
ret = heap_alloc(sizeof(*ret));
if(!ret)
return E_OUTOFMEMORY;
ret->IEnumConnections_iface.lpVtbl = &EnumConnectionsVtbl;
ret->ref = 1;
ret->iter = 0;
IConnectionPoint_AddRef(&This->IConnectionPoint_iface);
ret->cp = This;
*ppEnum = &ret->IEnumConnections_iface;
return S_OK;
}
static const IConnectionPointVtbl ConnectionPointVtbl =
@ -283,7 +392,7 @@ static HRESULT WINAPI ConnectionPointContainer_FindConnectionPoint(IConnectionPo
ConnectionPointContainer *This = impl_from_IConnectionPointContainer(iface);
ConnectionPoint *cp;
TRACE("(%p)->(%s %p)\n", This, debugstr_cp_guid(riid), ppCP);
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppCP);
if(This->forward_container)
return IConnectionPointContainer_FindConnectionPoint(&This->forward_container->IConnectionPointContainer_iface,
@ -291,7 +400,7 @@ static HRESULT WINAPI ConnectionPointContainer_FindConnectionPoint(IConnectionPo
cp = get_cp(This, riid, TRUE);
if(!cp) {
FIXME("unsupported riid %s\n", debugstr_cp_guid(riid));
FIXME("unsupported riid %s\n", debugstr_mshtml_guid(riid));
*ppCP = NULL;
return CONNECT_E_NOCONNECTION;
}

View file

@ -129,7 +129,7 @@ static HRESULT get_typeinfo(tid_t tid, ITypeInfo **typeinfo)
hres = ITypeLib_GetTypeInfoOfGuid(typelib, tid_ids[tid], &ti);
if(FAILED(hres)) {
ERR("GetTypeInfoOfGuid(%s) failed: %08x\n", debugstr_guid(tid_ids[tid]), hres);
ERR("GetTypeInfoOfGuid(%s) failed: %08x\n", debugstr_mshtml_guid(tid_ids[tid]), hres);
return hres;
}
@ -616,7 +616,7 @@ static HRESULT typeinfo_invoke(DispatchEx *This, func_info_t *func, WORD flags,
hres = IUnknown_QueryInterface(This->outer, tid_ids[func->tid], (void**)&unk);
if(FAILED(hres)) {
ERR("Could not get iface %s: %08x\n", debugstr_guid(tid_ids[func->tid]), hres);
ERR("Could not get iface %s: %08x\n", debugstr_mshtml_guid(tid_ids[func->tid]), hres);
return E_FAIL;
}
@ -702,6 +702,37 @@ static HRESULT function_value(DispatchEx *dispex, LCID lcid, WORD flags, DISPPAR
return E_UNEXPECTED;
hres = typeinfo_invoke(This->obj, This->info, flags, params, res, ei);
break;
case DISPATCH_PROPERTYGET: {
unsigned name_len;
WCHAR *ptr;
BSTR str;
static const WCHAR func_prefixW[] =
{'\n','f','u','n','c','t','i','o','n',' '};
static const WCHAR func_suffixW[] =
{'(',')',' ','{','\n',' ',' ',' ',' ','[','n','a','t','i','v','e',' ','c','o','d','e',']','\n','}','\n'};
/* FIXME: This probably should be more generic. Also we should try to get IID_IActiveScriptSite and SID_GetCaller. */
if(!caller)
return E_ACCESSDENIED;
name_len = SysStringLen(This->info->name);
ptr = str = SysAllocStringLen(NULL, name_len + (sizeof(func_prefixW)+sizeof(func_suffixW))/sizeof(WCHAR));
if(!str)
return E_OUTOFMEMORY;
memcpy(ptr, func_prefixW, sizeof(func_prefixW));
ptr += sizeof(func_prefixW)/sizeof(WCHAR);
memcpy(ptr, This->info->name, name_len*sizeof(WCHAR));
ptr += name_len;
memcpy(ptr, func_suffixW, sizeof(func_suffixW));
V_VT(res) = VT_BSTR;
V_BSTR(res) = str;
return S_OK;
}
default:
FIXME("Unimplemented flags %x\n", flags);
hres = E_NOTIMPL;
@ -1184,6 +1215,7 @@ static HRESULT invoke_builtin_prop(DispatchEx *This, DISPID id, LCID lcid, WORD
switch(flags) {
case DISPATCH_PROPERTYPUT:
case DISPATCH_PROPERTYPUT | DISPATCH_PROPERTYPUTREF:
if(res)
V_VT(res) = VT_EMPTY;
hres = builtin_propput(This, func, dp, caller);
@ -1203,7 +1235,7 @@ static HRESULT invoke_builtin_prop(DispatchEx *This, DISPID id, LCID lcid, WORD
if(flags != (DISPATCH_PROPERTYGET|DISPATCH_METHOD) || dp->cArgs) {
if(V_VT(&v) != VT_DISPATCH) {
FIXME("Not a function %s\n", debugstr_variant(&v));
FIXME("Not a function %s flags %08x\n", debugstr_variant(&v), flags);
VariantClear(&v);
return E_FAIL;
}

View file

@ -246,7 +246,7 @@ static void remove_child_attr(nsIDOMElement *elem, LPCWSTR tag, nsAString *attr_
static void get_font_size(HTMLDocument *This, WCHAR *ret)
{
nsISelection *nsselection = get_ns_selection(This);
nsIDOMElement *elem = NULL;
nsIDOMHTMLElement *elem = NULL;
nsIDOMNode *node = NULL, *tmp_node;
nsAString tag_str;
LPCWSTR tag;
@ -267,36 +267,29 @@ static void get_font_size(HTMLDocument *This, WCHAR *ret)
break;
if(node_type == ELEMENT_NODE) {
nsIDOMNode_QueryInterface(node, &IID_nsIDOMElement, (void**)&elem);
nsIDOMNode_QueryInterface(node, &IID_nsIDOMHTMLElement, (void**)&elem);
nsAString_Init(&tag_str, NULL);
nsIDOMElement_GetTagName(elem, &tag_str);
nsIDOMHTMLElement_GetTagName(elem, &tag_str);
nsAString_GetData(&tag_str, &tag);
if(!strcmpiW(tag, fontW)) {
nsAString size_str, val_str;
LPCWSTR val;
nsAString val_str;
const PRUnichar *val;
TRACE("found font tag %p\n", elem);
nsAString_InitDepend(&size_str, sizeW);
nsAString_Init(&val_str, NULL);
nsIDOMElement_GetAttribute(elem, &size_str, &val_str);
nsAString_GetData(&val_str, &val);
get_elem_attr_value(elem, sizeW, &val_str, &val);
if(*val) {
TRACE("found size %s\n", debugstr_w(val));
strcpyW(ret, val);
}
nsAString_Finish(&size_str);
nsAString_Finish(&val_str);
}
nsAString_Finish(&tag_str);
nsIDOMElement_Release(elem);
nsIDOMHTMLElement_Release(elem);
}
if(*ret)

View file

@ -81,8 +81,9 @@ HTMLOuterWindow *get_target_window(HTMLOuterWindow *window, nsAString *target_st
if(!strcmpiW(target, _parentW)) {
if(!window->parent) {
WARN("Window has no parent\n");
return NULL;
WARN("Window has no parent, treat as self\n");
IHTMLWindow2_AddRef(&window->base.IHTMLWindow2_iface);
return window;
}
IHTMLWindow2_AddRef(&window->parent->base.IHTMLWindow2_iface);

View file

@ -28,16 +28,16 @@ static HRESULT WINAPI HTMLDOMAttribute_QueryInterface(IHTMLDOMAttribute *iface,
{
HTMLDOMAttribute *This = impl_from_IHTMLDOMAttribute(iface);
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
if(IsEqualGUID(&IID_IUnknown, riid)) {
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
*ppv = &This->IHTMLDOMAttribute_iface;
}else if(IsEqualGUID(&IID_IHTMLDOMAttribute, riid)) {
TRACE("(%p)->(IID_IHTMLDOMAttribute %p)\n", This, ppv);
*ppv = &This->IHTMLDOMAttribute_iface;
}else if(dispex_query_interface(&This->dispex, riid, ppv)) {
return *ppv ? S_OK : E_NOINTERFACE;
}else {
WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
WARN("%s not supported\n", debugstr_mshtml_guid(riid));
*ppv = NULL;
return E_NOINTERFACE;
}
@ -123,11 +123,25 @@ static HRESULT WINAPI HTMLDOMAttribute_get_nodeName(IHTMLDOMAttribute *iface, BS
return IDispatchEx_GetMemberName(&This->elem->node.dispex.IDispatchEx_iface, This->dispid, p);
}
static HRESULT WINAPI HTMLDOMAttribute_put_nodeName(IHTMLDOMAttribute *iface, VARIANT v)
static HRESULT WINAPI HTMLDOMAttribute_put_nodeValue(IHTMLDOMAttribute *iface, VARIANT v)
{
HTMLDOMAttribute *This = impl_from_IHTMLDOMAttribute(iface);
FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
return E_NOTIMPL;
DISPID dispidNamed = DISPID_PROPERTYPUT;
DISPPARAMS dp = {&v, &dispidNamed, 1, 1};
EXCEPINFO ei;
VARIANT ret;
TRACE("(%p)->(%s)\n", This, debugstr_variant(&v));
if(!This->elem) {
FIXME("NULL This->elem\n");
return E_UNEXPECTED;
}
memset(&ei, 0, sizeof(ei));
return IDispatchEx_InvokeEx(&This->elem->node.dispex.IDispatchEx_iface, This->dispid, LOCALE_SYSTEM_DEFAULT,
DISPATCH_PROPERTYPUT, &dp, &ret, &ei, NULL);
}
static HRESULT WINAPI HTMLDOMAttribute_get_nodeValue(IHTMLDOMAttribute *iface, VARIANT *p)
@ -201,7 +215,7 @@ static const IHTMLDOMAttributeVtbl HTMLDOMAttributeVtbl = {
HTMLDOMAttribute_GetIDsOfNames,
HTMLDOMAttribute_Invoke,
HTMLDOMAttribute_get_nodeName,
HTMLDOMAttribute_put_nodeName,
HTMLDOMAttribute_put_nodeValue,
HTMLDOMAttribute_get_nodeValue,
HTMLDOMAttribute_get_specified
};

View file

@ -55,34 +55,28 @@ static HRESULT WINAPI HTMLCurrentStyle_QueryInterface(IHTMLCurrentStyle *iface,
{
HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
*ppv = NULL;
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
if(IsEqualGUID(&IID_IUnknown, riid)) {
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
*ppv = &This->IHTMLCurrentStyle_iface;
}else if(IsEqualGUID(&IID_IHTMLCurrentStyle, riid)) {
TRACE("(%p)->(IID_IHTMLCurrentStyle %p)\n", This, ppv);
*ppv = &This->IHTMLCurrentStyle_iface;
}else if(IsEqualGUID(&IID_IHTMLCurrentStyle2, riid)) {
TRACE("(%p)->(IID_IHTMLCurrentStyle2 %p)\n", This, ppv);
*ppv = &This->IHTMLCurrentStyle2_iface;
}else if(IsEqualGUID(&IID_IHTMLCurrentStyle3, riid)) {
TRACE("(%p)->(IID_IHTMLCurrentStyle3 %p)\n", This, ppv);
*ppv = &This->IHTMLCurrentStyle3_iface;
}else if(IsEqualGUID(&IID_IHTMLCurrentStyle4, riid)) {
TRACE("(%p)->(IID_IHTMLCurrentStyle4 %p)\n", This, ppv);
*ppv = &This->IHTMLCurrentStyle4_iface;
}else if(dispex_query_interface(&This->dispex, riid, ppv)) {
return *ppv ? S_OK : E_NOINTERFACE;
}else {
*ppv = NULL;
WARN("unsupported %s\n", debugstr_mshtml_guid(riid));
return E_NOINTERFACE;
}
if(*ppv) {
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
WARN("unsupported %s\n", debugstr_guid(riid));
return E_NOINTERFACE;
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
static ULONG WINAPI HTMLCurrentStyle_AddRef(IHTMLCurrentStyle *iface)
@ -785,8 +779,8 @@ static HRESULT WINAPI HTMLCurrentStyle_get_overflowY(IHTMLCurrentStyle *iface, B
static HRESULT WINAPI HTMLCurrentStyle_get_textTransform(IHTMLCurrentStyle *iface, BSTR *p)
{
HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
TRACE("(%p)->(%p)\n", This, p);
return get_nsstyle_attr(This->nsstyle, STYLEID_TEXT_TRANSFORM, p, 0);
}
static const IHTMLCurrentStyleVtbl HTMLCurrentStyleVtbl = {

View file

@ -1555,8 +1555,17 @@ static HRESULT WINAPI HTMLDocument_get_onerrorupdate(IHTMLDocument2 *iface, VARI
static HRESULT WINAPI HTMLDocument_toString(IHTMLDocument2 *iface, BSTR *String)
{
HTMLDocument *This = impl_from_IHTMLDocument2(iface);
FIXME("(%p)->(%p)\n", This, String);
return E_NOTIMPL;
static const WCHAR objectW[] = {'[','o','b','j','e','c','t',']',0};
TRACE("(%p)->(%p)\n", This, String);
if(!String)
return E_INVALIDARG;
*String = SysAllocString(objectW);
return *String ? S_OK : E_OUTOFMEMORY;
}
static HRESULT WINAPI HTMLDocument_createStyleSheet(IHTMLDocument2 *iface, BSTR bstrHref,
@ -2585,8 +2594,21 @@ static HRESULT WINAPI HTMLDocument5_get_doctype(IHTMLDocument5 *iface, IHTMLDOMN
static HRESULT WINAPI HTMLDocument5_get_implementation(IHTMLDocument5 *iface, IHTMLDOMImplementation **p)
{
HTMLDocument *This = impl_from_IHTMLDocument5(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
HTMLDocumentNode *doc_node = This->doc_node;
TRACE("(%p)->(%p)\n", This, p);
if(!doc_node->dom_implementation) {
HRESULT hres;
hres = create_dom_implementation(&doc_node->dom_implementation);
if(FAILED(hres))
return hres;
}
IHTMLDOMImplementation_AddRef(doc_node->dom_implementation);
*p = doc_node->dom_implementation;
return S_OK;
}
static HRESULT WINAPI HTMLDocument5_createAttribute(IHTMLDocument5 *iface, BSTR bstrattrName,
@ -3841,7 +3863,7 @@ static ULONG WINAPI SupportErrorInfo_Release(ISupportErrorInfo *iface)
static HRESULT WINAPI SupportErrorInfo_InterfaceSupportsErrorInfo(ISupportErrorInfo *iface, REFIID riid)
{
FIXME("(%p)->(%s)\n", iface, debugstr_guid(riid));
FIXME("(%p)->(%s)\n", iface, debugstr_mshtml_guid(riid));
return S_FALSE;
}
@ -4113,106 +4135,81 @@ static BOOL htmldoc_qi(HTMLDocument *This, REFIID riid, void **ppv)
{
*ppv = NULL;
if(IsEqualGUID(&IID_IUnknown, riid)) {
TRACE("(%p)->(IID_IUnknown, %p)\n", This, ppv);
if(IsEqualGUID(&IID_IUnknown, riid))
*ppv = &This->IHTMLDocument2_iface;
}else if(IsEqualGUID(&IID_IDispatch, riid)) {
TRACE("(%p)->(IID_IDispatch, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IDispatch, riid))
*ppv = &This->IDispatchEx_iface;
}else if(IsEqualGUID(&IID_IDispatchEx, riid)) {
TRACE("(%p)->(IID_IDispatchEx, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IDispatchEx, riid))
*ppv = &This->IDispatchEx_iface;
}else if(IsEqualGUID(&IID_IHTMLDocument, riid)) {
TRACE("(%p)->(IID_IHTMLDocument, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IHTMLDocument, riid))
*ppv = &This->IHTMLDocument2_iface;
}else if(IsEqualGUID(&IID_IHTMLDocument2, riid)) {
TRACE("(%p)->(IID_IHTMLDocument2, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IHTMLDocument2, riid))
*ppv = &This->IHTMLDocument2_iface;
}else if(IsEqualGUID(&IID_IHTMLDocument3, riid)) {
TRACE("(%p)->(IID_IHTMLDocument3, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IHTMLDocument3, riid))
*ppv = &This->IHTMLDocument3_iface;
}else if(IsEqualGUID(&IID_IHTMLDocument4, riid)) {
TRACE("(%p)->(IID_IHTMLDocument4, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IHTMLDocument4, riid))
*ppv = &This->IHTMLDocument4_iface;
}else if(IsEqualGUID(&IID_IHTMLDocument5, riid)) {
TRACE("(%p)->(IID_IHTMLDocument5, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IHTMLDocument5, riid))
*ppv = &This->IHTMLDocument5_iface;
}else if(IsEqualGUID(&IID_IHTMLDocument6, riid)) {
TRACE("(%p)->(IID_IHTMLDocument6, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IHTMLDocument6, riid))
*ppv = &This->IHTMLDocument6_iface;
}else if(IsEqualGUID(&IID_IHTMLDocument7, riid)) {
TRACE("(%p)->(IID_IHTMLDocument7, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IHTMLDocument7, riid))
*ppv = &This->IHTMLDocument7_iface;
}else if(IsEqualGUID(&IID_IPersist, riid)) {
TRACE("(%p)->(IID_IPersist, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IPersist, riid))
*ppv = &This->IPersistFile_iface;
}else if(IsEqualGUID(&IID_IPersistMoniker, riid)) {
TRACE("(%p)->(IID_IPersistMoniker, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IPersistMoniker, riid))
*ppv = &This->IPersistMoniker_iface;
}else if(IsEqualGUID(&IID_IPersistFile, riid)) {
TRACE("(%p)->(IID_IPersistFile, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IPersistFile, riid))
*ppv = &This->IPersistFile_iface;
}else if(IsEqualGUID(&IID_IMonikerProp, riid)) {
TRACE("(%p)->(IID_IMonikerProp, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IMonikerProp, riid))
*ppv = &This->IMonikerProp_iface;
}else if(IsEqualGUID(&IID_IOleObject, riid)) {
TRACE("(%p)->(IID_IOleObject, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IOleObject, riid))
*ppv = &This->IOleObject_iface;
}else if(IsEqualGUID(&IID_IOleDocument, riid)) {
TRACE("(%p)->(IID_IOleDocument, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IOleDocument, riid))
*ppv = &This->IOleDocument_iface;
}else if(IsEqualGUID(&IID_IOleDocumentView, riid)) {
TRACE("(%p)->(IID_IOleDocumentView, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IOleDocumentView, riid))
*ppv = &This->IOleDocumentView_iface;
}else if(IsEqualGUID(&IID_IOleInPlaceActiveObject, riid)) {
TRACE("(%p)->(IID_IOleInPlaceActiveObject, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IOleInPlaceActiveObject, riid))
*ppv = &This->IOleInPlaceActiveObject_iface;
}else if(IsEqualGUID(&IID_IViewObject, riid)) {
TRACE("(%p)->(IID_IViewObject, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IViewObject, riid))
*ppv = &This->IViewObjectEx_iface;
}else if(IsEqualGUID(&IID_IViewObject2, riid)) {
TRACE("(%p)->(IID_IViewObject2, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IViewObject2, riid))
*ppv = &This->IViewObjectEx_iface;
}else if(IsEqualGUID(&IID_IViewObjectEx, riid)) {
TRACE("(%p)->(IID_IViewObjectEx, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IViewObjectEx, riid))
*ppv = &This->IViewObjectEx_iface;
}else if(IsEqualGUID(&IID_IOleWindow, riid)) {
TRACE("(%p)->(IID_IOleWindow, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IOleWindow, riid))
*ppv = &This->IOleInPlaceActiveObject_iface;
}else if(IsEqualGUID(&IID_IOleInPlaceObject, riid)) {
TRACE("(%p)->(IID_IOleInPlaceObject, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IOleInPlaceObject, riid))
*ppv = &This->IOleInPlaceObjectWindowless_iface;
}else if(IsEqualGUID(&IID_IOleInPlaceObjectWindowless, riid)) {
TRACE("(%p)->(IID_IOleInPlaceObjectWindowless, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IOleInPlaceObjectWindowless, riid))
*ppv = &This->IOleInPlaceObjectWindowless_iface;
}else if(IsEqualGUID(&IID_IServiceProvider, riid)) {
TRACE("(%p)->(IID_IServiceProvider, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IServiceProvider, riid))
*ppv = &This->IServiceProvider_iface;
}else if(IsEqualGUID(&IID_IOleCommandTarget, riid)) {
TRACE("(%p)->(IID_IOleCommandTarget, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IOleCommandTarget, riid))
*ppv = &This->IOleCommandTarget_iface;
}else if(IsEqualGUID(&IID_IOleControl, riid)) {
TRACE("(%p)->(IID_IOleControl, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IOleControl, riid))
*ppv = &This->IOleControl_iface;
}else if(IsEqualGUID(&IID_IHlinkTarget, riid)) {
TRACE("(%p)->(IID_IHlinkTarget, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IHlinkTarget, riid))
*ppv = &This->IHlinkTarget_iface;
}else if(IsEqualGUID(&IID_IConnectionPointContainer, riid)) {
TRACE("(%p)->(IID_IConnectionPointContainer %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IConnectionPointContainer, riid))
*ppv = &This->cp_container.IConnectionPointContainer_iface;
}else if(IsEqualGUID(&IID_IPersistStreamInit, riid)) {
TRACE("(%p)->(IID_IPersistStreamInit %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IPersistStreamInit, riid))
*ppv = &This->IPersistStreamInit_iface;
}else if(IsEqualGUID(&DIID_DispHTMLDocument, riid)) {
TRACE("(%p)->(DIID_DispHTMLDocument %p)\n", This, ppv);
else if(IsEqualGUID(&DIID_DispHTMLDocument, riid))
*ppv = &This->IHTMLDocument2_iface;
}else if(IsEqualGUID(&IID_ISupportErrorInfo, riid)) {
TRACE("(%p)->(IID_ISupportErrorInfo %p)\n", This, ppv);
else if(IsEqualGUID(&IID_ISupportErrorInfo, riid))
*ppv = &This->ISupportErrorInfo_iface;
}else if(IsEqualGUID(&IID_IPersistHistory, riid)) {
TRACE("(%p)->(IID_IPersistHistory %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IPersistHistory, riid))
*ppv = &This->IPersistHistory_iface;
}else if(IsEqualGUID(&CLSID_CMarkup, riid)) {
else if(IsEqualGUID(&IID_IObjectWithSite, riid))
*ppv = &This->IObjectWithSite_iface;
else if(IsEqualGUID(&IID_IOleContainer, riid))
*ppv = &This->IOleContainer_iface;
else if(IsEqualGUID(&IID_IObjectSafety, riid))
*ppv = &This->IObjectSafety_iface;
else if(IsEqualGUID(&IID_IProvideClassInfo, riid))
*ppv = &This->IProvideClassInfo_iface;
else if(IsEqualGUID(&CLSID_CMarkup, riid)) {
FIXME("(%p)->(CLSID_CMarkup %p)\n", This, ppv);
*ppv = NULL;
}else if(IsEqualGUID(&IID_IRunnableObject, riid)) {
@ -4230,18 +4227,6 @@ static BOOL htmldoc_qi(HTMLDocument *This, REFIID riid, void **ppv)
}else if(IsEqualGUID(&IID_IStdMarshalInfo, riid)) {
TRACE("(%p)->(IID_IStdMarshalInfo %p) returning NULL\n", This, ppv);
*ppv = NULL;
}else if(IsEqualGUID(&IID_IObjectWithSite, riid)) {
TRACE("(%p)->(IID_IObjectWithSite %p)\n", This, ppv);
*ppv = &This->IObjectWithSite_iface;
}else if(IsEqualGUID(&IID_IOleContainer, riid)) {
TRACE("(%p)->(IID_IOleContainer %p)\n", This, ppv);
*ppv = &This->IOleContainer_iface;
}else if(IsEqualGUID(&IID_IObjectSafety, riid)) {
TRACE("(%p)->(IID_IObjectSafety %p)\n", This, ppv);
*ppv = &This->IObjectSafety_iface;
}else if(IsEqualGUID(&IID_IProvideClassInfo, riid)) {
TRACE("(%p)->(IID_IProvideClassInfo, %p)\n", This, ppv);
*ppv = &This->IProvideClassInfo_iface;
}else {
return FALSE;
}
@ -4304,15 +4289,15 @@ static HRESULT HTMLDocumentNode_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
{
HTMLDocumentNode *This = impl_from_HTMLDOMNode(iface);
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
if(htmldoc_qi(&This->basedoc, riid, ppv))
return *ppv ? S_OK : E_NOINTERFACE;
if(IsEqualGUID(&IID_IInternetHostSecurityManager, riid)) {
TRACE("(%p)->(IID_IInternetHostSecurityManager %p)\n", This, ppv);
if(IsEqualGUID(&IID_IInternetHostSecurityManager, riid))
*ppv = &This->IInternetHostSecurityManager_iface;
}else {
else
return HTMLDOMNode_QI(&This->node, riid, ppv);
}
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
@ -4344,11 +4329,7 @@ static void HTMLDocumentNode_destructor(HTMLDOMNode *iface)
This->nsnode_selector = NULL;
}
if(This->nsdoc) {
assert(!This->window);
release_document_mutation(This);
nsIDOMHTMLDocument_Release(This->nsdoc);
}else if(This->window) {
if(!This->nsdoc && This->window) {
/* document fragments own reference to inner window */
IHTMLWindow2_Release(&This->window->base.IHTMLWindow2_iface);
This->window = NULL;
@ -4595,19 +4576,19 @@ static HRESULT WINAPI CustomDoc_QueryInterface(ICustomDoc *iface, REFIID riid, v
{
HTMLDocumentObj *This = impl_from_ICustomDoc(iface);
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
if(htmldoc_qi(&This->basedoc, riid, ppv))
return *ppv ? S_OK : E_NOINTERFACE;
if(IsEqualGUID(&IID_ICustomDoc, riid)) {
TRACE("(%p)->(IID_ICustomDoc %p)\n", This, ppv);
*ppv = &This->ICustomDoc_iface;
}else if(IsEqualGUID(&IID_ITargetContainer, riid)) {
TRACE("(%p)->(IID_ITargetContainer %p)\n", This, ppv);
*ppv = &This->ITargetContainer_iface;
}else if(dispex_query_interface(&This->dispex, riid, ppv)) {
return *ppv ? S_OK : E_NOINTERFACE;
}else {
FIXME("Unimplemented interface %s\n", debugstr_guid(riid));
FIXME("Unimplemented interface %s\n", debugstr_mshtml_guid(riid));
*ppv = NULL;
return E_NOINTERFACE;
}
@ -4744,7 +4725,7 @@ HRESULT HTMLDocument_Create(IUnknown *pUnkOuter, REFIID riid, void** ppvObject)
nsresult nsres;
HRESULT hres;
TRACE("(%p %s %p)\n", pUnkOuter, debugstr_guid(riid), ppvObject);
TRACE("(%p %s %p)\n", pUnkOuter, debugstr_mshtml_guid(riid), ppvObject);
doc = heap_alloc_zero(sizeof(HTMLDocumentObj));
if(!doc)

View file

@ -138,6 +138,68 @@ HRESULT replace_node_by_html(nsIDOMHTMLDocument *nsdoc, nsIDOMNode *nsnode, cons
return hres;
}
nsresult get_elem_attr_value(nsIDOMHTMLElement *nselem, const WCHAR *name, nsAString *val_str, const PRUnichar **val)
{
nsAString name_str;
nsresult nsres;
nsAString_InitDepend(&name_str, name);
nsAString_Init(val_str, NULL);
nsres = nsIDOMHTMLElement_GetAttribute(nselem, &name_str, val_str);
nsAString_Finish(&name_str);
if(NS_FAILED(nsres)) {
ERR("GetAttribute(%s) failed: %08x\n", debugstr_w(name), nsres);
nsAString_Finish(val_str);
return nsres;
}
nsAString_GetData(val_str, val);
return NS_OK;
}
HRESULT elem_string_attr_getter(HTMLElement *elem, const WCHAR *name, BOOL use_null, BSTR *p)
{
const PRUnichar *val;
nsAString val_str;
nsresult nsres;
HRESULT hres = S_OK;
nsres = get_elem_attr_value(elem->nselem, name, &val_str, &val);
if(NS_FAILED(nsres))
return E_FAIL;
TRACE("%s: returning %s\n", debugstr_w(name), debugstr_w(val));
if(*val || !use_null) {
*p = SysAllocString(val);
if(!*p)
hres = E_OUTOFMEMORY;
}else {
*p = NULL;
}
nsAString_Finish(&val_str);
return hres;
}
HRESULT elem_string_attr_setter(HTMLElement *elem, const WCHAR *name, const WCHAR *value)
{
nsAString name_str, val_str;
nsresult nsres;
nsAString_InitDepend(&name_str, name);
nsAString_InitDepend(&val_str, value);
nsres = nsIDOMHTMLElement_SetAttribute(elem->nselem, &name_str, &val_str);
nsAString_Finish(&name_str);
nsAString_Finish(&val_str);
if(NS_FAILED(nsres)) {
WARN("SetAttribute failed: %08x\n", nsres);
return E_FAIL;
}
return S_OK;
}
typedef struct
{
DispatchEx dispex;
@ -771,30 +833,53 @@ static HRESULT WINAPI HTMLElement_get_onselectstart(IHTMLElement *iface, VARIANT
static HRESULT WINAPI HTMLElement_scrollIntoView(IHTMLElement *iface, VARIANT varargStart)
{
HTMLElement *This = impl_from_IHTMLElement(iface);
FIXME("(%p)->(%s)\n", This, debugstr_variant(&varargStart));
return E_NOTIMPL;
cpp_bool start = TRUE;
nsresult nsres;
TRACE("(%p)->(%s)\n", This, debugstr_variant(&varargStart));
switch(V_VT(&varargStart)) {
case VT_EMPTY:
case VT_ERROR:
break;
case VT_BOOL:
start = V_BOOL(&varargStart) != VARIANT_FALSE;
break;
default:
FIXME("Unsupported argument %s\n", debugstr_variant(&varargStart));
}
if(!This->nselem) {
FIXME("Unsupported for comments\n");
return E_NOTIMPL;
}
nsres = nsIDOMHTMLElement_ScrollIntoView(This->nselem, start, 1);
assert(nsres == NS_OK);
return S_OK;
}
static HRESULT WINAPI HTMLElement_contains(IHTMLElement *iface, IHTMLElement *pChild,
VARIANT_BOOL *pfResult)
{
HTMLElement *This = impl_from_IHTMLElement(iface);
HTMLElement *child;
cpp_bool result;
nsresult nsres;
cpp_bool result = FALSE;
TRACE("(%p)->(%p %p)\n", This, pChild, pfResult);
child = unsafe_impl_from_IHTMLElement(pChild);
if(!child) {
ERR("not our element\n");
return E_FAIL;
}
if(pChild) {
HTMLElement *child;
nsresult nsres;
nsres = nsIDOMNode_Contains(This->node.nsnode, child->node.nsnode, &result);
if(NS_FAILED(nsres)) {
ERR("failed\n");
return E_FAIL;
child = unsafe_impl_from_IHTMLElement(pChild);
if(!child) {
ERR("not our element\n");
return E_FAIL;
}
nsres = nsIDOMNode_Contains(This->node.nsnode, child->node.nsnode, &result);
assert(nsres == NS_OK);
}
*pfResult = result ? VARIANT_TRUE : VARIANT_FALSE;
@ -804,8 +889,10 @@ static HRESULT WINAPI HTMLElement_contains(IHTMLElement *iface, IHTMLElement *pC
static HRESULT WINAPI HTMLElement_get_sourceIndex(IHTMLElement *iface, LONG *p)
{
HTMLElement *This = impl_from_IHTMLElement(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
TRACE("(%p)->(%p)\n", This, p);
return get_elem_source_index(This, p);
}
static HRESULT WINAPI HTMLElement_get_recordNumber(IHTMLElement *iface, VARIANT *p)
@ -1547,37 +1634,26 @@ HRESULT HTMLElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
{
HTMLElement *This = impl_from_HTMLDOMNode(iface);
*ppv = NULL;
if(IsEqualGUID(&IID_IUnknown, riid)) {
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
*ppv = &This->IHTMLElement_iface;
}else if(IsEqualGUID(&IID_IDispatch, riid)) {
TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
*ppv = &This->IHTMLElement_iface;
}else if(IsEqualGUID(&IID_IHTMLElement, riid)) {
TRACE("(%p)->(IID_IHTMLElement %p)\n", This, ppv);
*ppv = &This->IHTMLElement_iface;
}else if(IsEqualGUID(&IID_IHTMLElement2, riid)) {
TRACE("(%p)->(IID_IHTMLElement2 %p)\n", This, ppv);
*ppv = &This->IHTMLElement2_iface;
}else if(IsEqualGUID(&IID_IHTMLElement3, riid)) {
TRACE("(%p)->(IID_IHTMLElement3 %p)\n", This, ppv);
*ppv = &This->IHTMLElement3_iface;
}else if(IsEqualGUID(&IID_IHTMLElement4, riid)) {
TRACE("(%p)->(IID_IHTMLElement4 %p)\n", This, ppv);
*ppv = &This->IHTMLElement4_iface;
}else if(IsEqualGUID(&IID_IConnectionPointContainer, riid)) {
TRACE("(%p)->(IID_IConnectionPointContainer %p)\n", This, ppv);
*ppv = &This->cp_container.IConnectionPointContainer_iface;
}else {
return HTMLDOMNode_QI(&This->node, riid, ppv);
}
if(*ppv) {
IHTMLElement_AddRef(&This->IHTMLElement_iface);
return S_OK;
}
return HTMLDOMNode_QI(&This->node, riid, ppv);
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
void HTMLElement_destructor(HTMLDOMNode *iface)
@ -1896,25 +1972,23 @@ static HRESULT WINAPI HTMLFiltersCollection_QueryInterface(IHTMLFiltersCollectio
{
HTMLFiltersCollection *This = impl_from_IHTMLFiltersCollection(iface);
TRACE("%p %s %p\n", This, debugstr_guid( riid ), ppv );
TRACE("%p %s %p\n", This, debugstr_mshtml_guid(riid), ppv );
if(IsEqualGUID(&IID_IUnknown, riid)) {
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
*ppv = &This->IHTMLFiltersCollection_iface;
}else if(IsEqualGUID(&IID_IHTMLFiltersCollection, riid)) {
TRACE("(%p)->(IID_IHTMLFiltersCollection %p)\n", This, ppv);
*ppv = &This->IHTMLFiltersCollection_iface;
}else if(dispex_query_interface(&This->dispex, riid, ppv)) {
return *ppv ? S_OK : E_NOINTERFACE;
}else {
*ppv = NULL;
FIXME("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
return E_NOINTERFACE;
}
if(*ppv) {
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
FIXME("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
return E_NOINTERFACE;
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
static ULONG WINAPI HTMLFiltersCollection_AddRef(IHTMLFiltersCollection *iface)
@ -2082,31 +2156,24 @@ static HRESULT WINAPI HTMLAttributeCollection_QueryInterface(IHTMLAttributeColle
{
HTMLAttributeCollection *This = impl_from_IHTMLAttributeCollection(iface);
*ppv = NULL;
if(IsEqualGUID(&IID_IUnknown, riid)) {
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
*ppv = &This->IHTMLAttributeCollection_iface;
}else if(IsEqualGUID(&IID_IHTMLAttributeCollection, riid)) {
TRACE("(%p)->(IID_IHTMLAttributeCollection %p)\n", This, ppv);
*ppv = &This->IHTMLAttributeCollection_iface;
}else if(IsEqualGUID(&IID_IHTMLAttributeCollection2, riid)) {
TRACE("(%p)->(IID_IHTMLAttributeCollection2 %p)\n", This, ppv);
*ppv = &This->IHTMLAttributeCollection2_iface;
}else if(IsEqualGUID(&IID_IHTMLAttributeCollection3, riid)) {
TRACE("(%p)->(IID_IHTMLAttributeCollection3 %p)\n", This, ppv);
*ppv = &This->IHTMLAttributeCollection3_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;
}
if(*ppv) {
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
return E_NOINTERFACE;
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
static ULONG WINAPI HTMLAttributeCollection_AddRef(IHTMLAttributeCollection *iface)

View file

@ -36,16 +36,16 @@ static HRESULT WINAPI HTMLRect_QueryInterface(IHTMLRect *iface, REFIID riid, voi
{
HTMLRect *This = impl_from_IHTMLRect(iface);
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
if(IsEqualGUID(&IID_IUnknown, riid)) {
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
*ppv = &This->IHTMLRect_iface;
}else if(IsEqualGUID(&IID_IHTMLRect, riid)) {
TRACE("(%p)->(IID_IHTMLRect %p)\n", This, ppv);
*ppv = &This->IHTMLRect_iface;
}else if(dispex_query_interface(&This->dispex, riid, ppv)) {
return *ppv ? S_OK : E_NOINTERFACE;
}else {
FIXME("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
FIXME("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
*ppv = NULL;
return E_NOINTERFACE;
}

View file

@ -160,15 +160,34 @@ static HRESULT WINAPI HTMLElement3_setActive(IHTMLElement3 *iface)
static HRESULT WINAPI HTMLElement3_put_contentEditable(IHTMLElement3 *iface, BSTR v)
{
HTMLElement *This = impl_from_IHTMLElement3(iface);
FIXME("(%p)->(%s)\n", This, debugstr_w(v));
return E_NOTIMPL;
nsresult nsres;
nsAString str;
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
nsAString_InitDepend(&str, v);
nsres = nsIDOMHTMLElement_SetContentEditable(This->nselem, &str);
nsAString_Finish(&str);
if (NS_FAILED(nsres)){
ERR("SetContentEditable(%s) failed!\n", debugstr_w(v));
return E_FAIL;
}
return S_OK;
}
static HRESULT WINAPI HTMLElement3_get_contentEditable(IHTMLElement3 *iface, BSTR *p)
{
HTMLElement *This = impl_from_IHTMLElement3(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
nsresult nsres;
nsAString str;
TRACE("(%p)->(%p)\n", This, p);
nsAString_Init(&str, NULL);
nsres = nsIDOMHTMLElement_GetContentEditable(This->nselem, &str);
return return_nsstr(nsres, &str, p);
}
static HRESULT WINAPI HTMLElement3_get_isContentEditable(IHTMLElement3 *iface, VARIANT_BOOL *p)
@ -524,15 +543,19 @@ static HRESULT WINAPI HTMLElement4_Invoke(IHTMLElement4 *iface, DISPID dispIdMem
static HRESULT WINAPI HTMLElement4_put_onmousewheel(IHTMLElement4 *iface, VARIANT v)
{
HTMLElement *This = impl_from_IHTMLElement4(iface);
FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
return E_NOTIMPL;
FIXME("(%p)->(%s) semi-stub\n", This, debugstr_variant(&v));
return set_node_event(&This->node, EVENTID_MOUSEWHEEL, &v);
}
static HRESULT WINAPI HTMLElement4_get_onmousewheel(IHTMLElement4 *iface, VARIANT *p)
{
HTMLElement *This = impl_from_IHTMLElement4(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
TRACE("(%p)->(%p)\n", This, p);
return get_node_event(&This->node, EVENTID_MOUSEWHEEL, p);
}
static HRESULT WINAPI HTMLElement4_normalize(IHTMLElement4 *iface)

View file

@ -28,6 +28,15 @@ typedef struct {
LONG ref;
} HTMLElementCollection;
typedef struct {
IEnumVARIANT IEnumVARIANT_iface;
LONG ref;
ULONG iter;
HTMLElementCollection *col;
} HTMLElementCollectionEnum;
typedef struct {
HTMLElement **buf;
DWORD len;
@ -73,6 +82,118 @@ static inline BOOL is_elem_node(nsIDOMNode *node)
return type == ELEMENT_NODE || type == COMMENT_NODE;
}
static inline HTMLElementCollectionEnum *impl_from_IEnumVARIANT(IEnumVARIANT *iface)
{
return CONTAINING_RECORD(iface, HTMLElementCollectionEnum, IEnumVARIANT_iface);
}
static HRESULT WINAPI HTMLElementCollectionEnum_QueryInterface(IEnumVARIANT *iface, REFIID riid, void **ppv)
{
HTMLElementCollectionEnum *This = impl_from_IEnumVARIANT(iface);
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
if(IsEqualGUID(riid, &IID_IUnknown)) {
*ppv = &This->IEnumVARIANT_iface;
}else if(IsEqualGUID(riid, &IID_IEnumVARIANT)) {
*ppv = &This->IEnumVARIANT_iface;
}else {
FIXME("Unsupported iface %s\n", debugstr_mshtml_guid(riid));
*ppv = NULL;
return E_NOINTERFACE;
}
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
static ULONG WINAPI HTMLElementCollectionEnum_AddRef(IEnumVARIANT *iface)
{
HTMLElementCollectionEnum *This = impl_from_IEnumVARIANT(iface);
LONG ref = InterlockedIncrement(&This->ref);
TRACE("(%p) ref=%d\n", This, ref);
return ref;
}
static ULONG WINAPI HTMLElementCollectionEnum_Release(IEnumVARIANT *iface)
{
HTMLElementCollectionEnum *This = impl_from_IEnumVARIANT(iface);
LONG ref = InterlockedDecrement(&This->ref);
TRACE("(%p) ref=%d\n", This, ref);
if(!ref) {
IHTMLElementCollection_Release(&This->col->IHTMLElementCollection_iface);
heap_free(This);
}
return ref;
}
static HRESULT WINAPI HTMLElementCollectionEnum_Next(IEnumVARIANT *iface, ULONG celt, VARIANT *rgVar, ULONG *pCeltFetched)
{
HTMLElementCollectionEnum *This = impl_from_IEnumVARIANT(iface);
ULONG fetched = 0;
TRACE("(%p)->(%d %p %p)\n", This, celt, rgVar, pCeltFetched);
while(This->iter+fetched < This->col->len && fetched < celt) {
V_VT(rgVar+fetched) = VT_DISPATCH;
V_DISPATCH(rgVar+fetched) = (IDispatch*)&This->col->elems[This->iter+fetched]->IHTMLElement_iface;
IDispatch_AddRef(V_DISPATCH(rgVar+fetched));
fetched++;
}
This->iter += fetched;
if(pCeltFetched)
*pCeltFetched = fetched;
return fetched == celt ? S_OK : S_FALSE;
}
static HRESULT WINAPI HTMLElementCollectionEnum_Skip(IEnumVARIANT *iface, ULONG celt)
{
HTMLElementCollectionEnum *This = impl_from_IEnumVARIANT(iface);
TRACE("(%p)->(%d)\n", This, celt);
if(This->iter + celt > This->col->len) {
This->iter = This->col->len;
return S_FALSE;
}
This->iter += celt;
return S_OK;
}
static HRESULT WINAPI HTMLElementCollectionEnum_Reset(IEnumVARIANT *iface)
{
HTMLElementCollectionEnum *This = impl_from_IEnumVARIANT(iface);
TRACE("(%p)->()\n", This);
This->iter = 0;
return S_OK;
}
static HRESULT WINAPI HTMLElementCollectionEnum_Clone(IEnumVARIANT *iface, IEnumVARIANT **ppEnum)
{
HTMLElementCollectionEnum *This = impl_from_IEnumVARIANT(iface);
FIXME("(%p)->(%p)\n", This, ppEnum);
return E_NOTIMPL;
}
static const IEnumVARIANTVtbl HTMLElementCollectionEnumVtbl = {
HTMLElementCollectionEnum_QueryInterface,
HTMLElementCollectionEnum_AddRef,
HTMLElementCollectionEnum_Release,
HTMLElementCollectionEnum_Next,
HTMLElementCollectionEnum_Skip,
HTMLElementCollectionEnum_Reset,
HTMLElementCollectionEnum_Clone
};
static inline HTMLElementCollection *impl_from_IHTMLElementCollection(IHTMLElementCollection *iface)
{
return CONTAINING_RECORD(iface, HTMLElementCollection, IHTMLElementCollection_iface);
@ -83,25 +204,20 @@ static HRESULT WINAPI HTMLElementCollection_QueryInterface(IHTMLElementCollectio
{
HTMLElementCollection *This = impl_from_IHTMLElementCollection(iface);
*ppv = NULL;
if(IsEqualGUID(&IID_IUnknown, riid)) {
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
*ppv = &This->IHTMLElementCollection_iface;
}else if(IsEqualGUID(&IID_IHTMLElementCollection, riid)) {
TRACE("(%p)->(IID_IHTMLElementCollection %p)\n", This, ppv);
*ppv = &This->IHTMLElementCollection_iface;
}else if(dispex_query_interface(&This->dispex, riid, ppv)) {
return *ppv ? S_OK : E_NOINTERFACE;
}else {
*ppv = NULL;
FIXME("Unsupported iface %s\n", debugstr_mshtml_guid(riid));
return E_NOINTERFACE;
}
if(*ppv) {
IHTMLElementCollection_AddRef(&This->IHTMLElementCollection_iface);
return S_OK;
}
FIXME("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
return E_NOINTERFACE;
IHTMLElementCollection_AddRef(&This->IHTMLElementCollection_iface);
return S_OK;
}
static ULONG WINAPI HTMLElementCollection_AddRef(IHTMLElementCollection *iface)
@ -197,8 +313,23 @@ static HRESULT WINAPI HTMLElementCollection_get__newEnum(IHTMLElementCollection
IUnknown **p)
{
HTMLElementCollection *This = impl_from_IHTMLElementCollection(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
HTMLElementCollectionEnum *ret;
TRACE("(%p)->(%p)\n", This, p);
ret = heap_alloc(sizeof(*ret));
if(!ret)
return E_OUTOFMEMORY;
ret->IEnumVARIANT_iface.lpVtbl = &HTMLElementCollectionEnumVtbl;
ret->ref = 1;
ret->iter = 0;
IHTMLElementCollection_AddRef(&This->IHTMLElementCollection_iface);
ret->col = This;
*p = (IUnknown*)&ret->IEnumVARIANT_iface;
return S_OK;
}
static BOOL is_elem_id(HTMLElement *elem, LPCWSTR name)
@ -224,7 +355,7 @@ static BOOL is_elem_id(HTMLElement *elem, LPCWSTR name)
static BOOL is_elem_name(HTMLElement *elem, LPCWSTR name)
{
const PRUnichar *str;
nsAString nsstr, nsname;
nsAString nsstr;
BOOL ret = FALSE;
nsresult nsres;
@ -241,15 +372,12 @@ static BOOL is_elem_name(HTMLElement *elem, LPCWSTR name)
return TRUE;
}
nsAString_InitDepend(&nsname, nameW);
nsres = nsIDOMHTMLElement_GetAttribute(elem->nselem, &nsname, &nsstr);
nsAString_Finish(&nsname);
nsres = get_elem_attr_value(elem->nselem, nameW, &nsstr, &str);
if(NS_SUCCEEDED(nsres)) {
nsAString_GetData(&nsstr, &str);
ret = !strcmpiW(str, name);
nsAString_Finish(&nsstr);
}
nsAString_Finish(&nsstr);
return ret;
}
@ -605,6 +733,75 @@ IHTMLElementCollection *create_collection_from_htmlcol(HTMLDocumentNode *doc, ns
return HTMLElementCollection_Create(buf.buf, buf.len);
}
HRESULT get_elem_source_index(HTMLElement *elem, LONG *ret)
{
elem_vector_t buf = {NULL, 0, 8};
nsIDOMNode *parent_node, *iter;
UINT16 parent_type;
HTMLDOMNode *node;
int i;
nsresult nsres;
HRESULT hres;
iter = elem->node.nsnode;
nsIDOMNode_AddRef(iter);
/* Find document or document fragment parent. */
while(1) {
nsres = nsIDOMNode_GetParentNode(iter, &parent_node);
nsIDOMNode_Release(iter);
assert(nsres == NS_OK);
if(!parent_node)
break;
nsres = nsIDOMNode_GetNodeType(parent_node, &parent_type);
assert(nsres == NS_OK);
if(parent_type != ELEMENT_NODE) {
if(parent_type != DOCUMENT_NODE && parent_type != DOCUMENT_FRAGMENT_NODE)
FIXME("Unexpected parent_type %d\n", parent_type);
break;
}
iter = parent_node;
}
if(!parent_node) {
*ret = -1;
return S_OK;
}
hres = get_node(elem->node.doc, parent_node, TRUE, &node);
nsIDOMNode_Release(parent_node);
if(FAILED(hres))
return hres;
/* Create all children collection and find the element in it.
* This could be optimized if we ever find the reason. */
buf.buf = heap_alloc(buf.size*sizeof(*buf.buf));
if(!buf.buf) {
IHTMLDOMNode_Release(&node->IHTMLDOMNode_iface);
return E_OUTOFMEMORY;
}
create_all_list(elem->node.doc, node, &buf);
for(i=0; i < buf.len; i++) {
if(buf.buf[i] == elem)
break;
}
IHTMLDOMNode_Release(&node->IHTMLDOMNode_iface);
heap_free(buf.buf);
if(i == buf.len) {
FIXME("The element is not in parent's child list?\n");
return E_UNEXPECTED;
}
*ret = i;
return S_OK;
}
static IHTMLElementCollection *HTMLElementCollection_Create(HTMLElement **elems, DWORD len)
{
HTMLElementCollection *ret = heap_alloc_zero(sizeof(HTMLElementCollection));

View file

@ -94,6 +94,9 @@ static const WCHAR onmouseoverW[] = {'o','n','m','o','u','s','e','o','v','e','r'
static const WCHAR mouseupW[] = {'m','o','u','s','e','u','p',0};
static const WCHAR onmouseupW[] = {'o','n','m','o','u','s','e','u','p',0};
static const WCHAR mousewheelW[] = {'m','o','u','s','e','w','h','e','e','l',0};
static const WCHAR onmousewheelW[] = {'o','n','m','o','u','s','e','w','h','e','e','l',0};
static const WCHAR pasteW[] = {'p','a','s','t','e',0};
static const WCHAR onpasteW[] = {'o','n','p','a','s','t','e',0};
@ -190,6 +193,8 @@ static const event_info_t event_info[] = {
EVENT_DEFAULTLISTENER|EVENT_BUBBLE},
{mouseupW, onmouseupW, EVENTT_MOUSE, DISPID_EVMETH_ONMOUSEUP,
EVENT_DEFAULTLISTENER|EVENT_BUBBLE},
{mousewheelW, onmousewheelW, EVENTT_MOUSE, DISPID_EVMETH_ONMOUSEWHEEL,
0},
{pasteW, onpasteW, EVENTT_NONE, DISPID_EVMETH_ONPASTE,
EVENT_CANCELABLE},
{readystatechangeW, onreadystatechangeW, EVENTT_NONE, DISPID_EVMETH_ONREADYSTATECHANGE,
@ -201,7 +206,7 @@ static const event_info_t event_info[] = {
{selectstartW, onselectstartW, EVENTT_MOUSE, DISPID_EVMETH_ONSELECTSTART,
EVENT_CANCELABLE},
{submitW, onsubmitW, EVENTT_HTML, DISPID_EVMETH_ONSUBMIT,
EVENT_DEFAULTLISTENER|EVENT_BUBBLE|EVENT_CANCELABLE}
EVENT_DEFAULTLISTENER|EVENT_BUBBLE|EVENT_CANCELABLE|EVENT_HASDEFAULTHANDLERS}
};
eventid_t str_to_eid(LPCWSTR str)
@ -251,25 +256,22 @@ static HRESULT WINAPI HTMLEventObj_QueryInterface(IHTMLEventObj *iface, REFIID r
{
HTMLEventObj *This = impl_from_IHTMLEventObj(iface);
*ppv = NULL;
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
if(IsEqualGUID(&IID_IUnknown, riid)) {
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
*ppv = &This->IHTMLEventObj_iface;
}else if(IsEqualGUID(&IID_IHTMLEventObj, riid)) {
TRACE("(%p)->(IID_IHTMLEventObj %p)\n", This, ppv);
*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;
}
if(*ppv) {
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
return E_NOINTERFACE;
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
static ULONG WINAPI HTMLEventObj_AddRef(IHTMLEventObj *iface)
@ -1314,16 +1316,8 @@ static HRESULT ensure_nsevent_handler(HTMLDocumentNode *doc, event_target_t *eve
return S_OK;
if(event_info[eid].flags & EVENT_BIND_TO_BODY) {
nsIDOMHTMLElement *nsbody;
nsresult nsres;
nsres = nsIDOMHTMLDocument_GetBody(doc->nsdoc, &nsbody);
if(NS_SUCCEEDED(nsres) && nsbody) {
nsnode = (nsIDOMNode*)nsbody;
}else {
ERR("GetBody failed: %08x\n", nsres);
return E_UNEXPECTED;
}
nsnode = doc->node.nsnode;
nsIDOMNode_AddRef(nsnode);
}
doc->event_vector[eid] = TRUE;
@ -1509,24 +1503,19 @@ void update_cp_events(HTMLInnerWindow *window, event_target_t **event_target_ptr
}
}
void check_event_attr(HTMLDocumentNode *doc, nsIDOMElement *nselem)
void check_event_attr(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem)
{
const PRUnichar *attr_value;
nsAString attr_name_str, attr_value_str;
nsAString attr_value_str;
IDispatch *disp;
HTMLDOMNode *node;
int i;
nsresult nsres;
HRESULT hres;
nsAString_Init(&attr_value_str, NULL);
nsAString_Init(&attr_name_str, NULL);
for(i=0; i < EVENTID_LAST; i++) {
nsAString_SetData(&attr_name_str, event_info[i].attr_name);
nsres = nsIDOMElement_GetAttribute(nselem, &attr_name_str, &attr_value_str);
nsres = get_elem_attr_value(nselem, event_info[i].attr_name, &attr_value_str, &attr_value);
if(NS_SUCCEEDED(nsres)) {
nsAString_GetData(&attr_value_str, &attr_value);
if(!*attr_value)
continue;
@ -1541,11 +1530,9 @@ void check_event_attr(HTMLDocumentNode *doc, nsIDOMElement *nselem)
}
IDispatch_Release(disp);
}
nsAString_Finish(&attr_value_str);
}
}
nsAString_Finish(&attr_value_str);
nsAString_Finish(&attr_name_str);
}
HRESULT doc_init_events(HTMLDocumentNode *doc)

View file

@ -16,6 +16,8 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#pragma once
typedef enum {
EVENTID_ABORT,
EVENTID_BEFOREUNLOAD,
@ -39,6 +41,7 @@ typedef enum {
EVENTID_MOUSEOUT,
EVENTID_MOUSEOVER,
EVENTID_MOUSEUP,
EVENTID_MOUSEWHEEL,
EVENTID_PASTE,
EVENTID_READYSTATECHANGE,
EVENTID_RESIZE,
@ -49,7 +52,7 @@ typedef enum {
} eventid_t;
eventid_t str_to_eid(LPCWSTR) DECLSPEC_HIDDEN;
void check_event_attr(HTMLDocumentNode*,nsIDOMElement*) DECLSPEC_HIDDEN;
void check_event_attr(HTMLDocumentNode*,nsIDOMHTMLElement*) DECLSPEC_HIDDEN;
void release_event_target(event_target_t*) DECLSPEC_HIDDEN;
void fire_event(HTMLDocumentNode*,eventid_t,BOOL,nsIDOMNode*,nsIDOMEvent*,IDispatch*) DECLSPEC_HIDDEN;
HRESULT set_event_handler(event_target_t**,HTMLDocumentNode*,eventid_t,VARIANT*) DECLSPEC_HIDDEN;

View file

@ -270,15 +270,36 @@ static HRESULT WINAPI HTMLFormElement_get_elements(IHTMLFormElement *iface, IDis
static HRESULT WINAPI HTMLFormElement_put_target(IHTMLFormElement *iface, BSTR v)
{
HTMLFormElement *This = impl_from_IHTMLFormElement(iface);
FIXME("(%p)->(%s)\n", This, wine_dbgstr_w(v));
return E_NOTIMPL;
nsAString str;
nsresult nsres;
TRACE("(%p)->(%s)\n", This, wine_dbgstr_w(v));
nsAString_InitDepend(&str, v);
nsres = nsIDOMHTMLFormElement_SetTarget(This->nsform, &str);
nsAString_Finish(&str);
if (NS_FAILED(nsres)) {
ERR("Set Target(%s) failed: %08x\n", wine_dbgstr_w(v), nsres);
return E_FAIL;
}
return S_OK;
}
static HRESULT WINAPI HTMLFormElement_get_target(IHTMLFormElement *iface, BSTR *p)
{
HTMLFormElement *This = impl_from_IHTMLFormElement(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
nsAString str;
nsresult nsres;
TRACE("(%p)->(%p)\n", This, p);
nsAString_Init(&str, NULL);
nsres = nsIDOMHTMLFormElement_GetTarget(This->nsform, &str);
return return_nsstr(nsres, &str, p);
}
static HRESULT WINAPI HTMLFormElement_put_name(IHTMLFormElement *iface, BSTR v)
@ -420,8 +441,16 @@ static HRESULT WINAPI HTMLFormElement_submit(IHTMLFormElement *iface)
static HRESULT WINAPI HTMLFormElement_reset(IHTMLFormElement *iface)
{
HTMLFormElement *This = impl_from_IHTMLFormElement(iface);
FIXME("(%p)->()\n", This);
return E_NOTIMPL;
nsresult nsres;
TRACE("(%p)->()\n", This);
nsres = nsIDOMHTMLFormElement_Reset(This->nsform);
if (NS_FAILED(nsres)) {
ERR("Reset failed: %08x\n", nsres);
return E_FAIL;
}
return S_OK;
}
static HRESULT WINAPI HTMLFormElement_put_length(IHTMLFormElement *iface, LONG v)
@ -552,7 +581,7 @@ static HRESULT HTMLFormElement_get_dispid(HTMLDOMNode *iface,
{
HTMLFormElement *This = impl_from_HTMLDOMNode(iface);
nsIDOMHTMLCollection *elements;
nsAString nsname, nsstr;
nsAString nsstr, name_str;
UINT32 len, i;
nsresult nsres;
HRESULT hres = DISP_E_UNKNOWNNAME;
@ -588,7 +617,6 @@ static HRESULT HTMLFormElement_get_dispid(HTMLDOMNode *iface,
}
}
nsAString_InitDepend(&nsname, nameW);
nsAString_Init(&nsstr, NULL);
for(i = 0; i < len; ++i) {
nsIDOMNode *nsitem;
@ -628,21 +656,22 @@ static HRESULT HTMLFormElement_get_dispid(HTMLDOMNode *iface,
}
/* compare by name attr */
nsres = nsIDOMHTMLElement_GetAttribute(nshtml_elem, &nsname, &nsstr);
nsres = get_elem_attr_value(nshtml_elem, nameW, &name_str, &str);
nsIDOMHTMLElement_Release(nshtml_elem);
nsAString_GetData(&nsstr, &str);
if(!strcmpiW(str, name)) {
/* FIXME: using index for dispid */
*pid = MSHTML_DISPID_CUSTOM_MIN + i;
hres = S_OK;
break;
if(NS_SUCCEEDED(nsres)) {
if(!strcmpiW(str, name)) {
nsAString_Finish(&name_str);
/* FIXME: using index for dispid */
*pid = MSHTML_DISPID_CUSTOM_MIN + i;
hres = S_OK;
break;
}
nsAString_Finish(&name_str);
}
}
nsAString_Finish(&nsname);
nsAString_Finish(&nsstr);
nsIDOMHTMLCollection_Release(elements);
return hres;
}
@ -669,12 +698,24 @@ static HRESULT HTMLFormElement_invoke(HTMLDOMNode *iface,
return S_OK;
}
static HRESULT HTMLFormElement_handle_event(HTMLDOMNode *iface, eventid_t eid, nsIDOMEvent *event, BOOL *prevent_default)
{
HTMLFormElement *This = impl_from_HTMLDOMNode(iface);
if(eid == EVENTID_SUBMIT) {
*prevent_default = TRUE;
return IHTMLFormElement_submit(&This->IHTMLFormElement_iface);
}
return HTMLElement_handle_event(&This->element.node, eid, event, prevent_default);
}
static const NodeImplVtbl HTMLFormElementImplVtbl = {
HTMLFormElement_QI,
HTMLElement_destructor,
HTMLElement_cpc,
HTMLElement_clone,
HTMLElement_handle_event,
HTMLFormElement_handle_event,
HTMLElement_get_attr_col,
NULL,
NULL,

View file

@ -121,12 +121,12 @@ static HRESULT HTMLTitleElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
{
HTMLTitleElement *This = HTMLTitleElement_from_HTMLDOMNode(iface);
if(IsEqualGUID(&IID_IHTMLTitleElement, riid)) {
TRACE("(%p)->(IID_IHTMLTitleElement %p)\n", This, ppv);
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
if(IsEqualGUID(&IID_IHTMLTitleElement, riid))
*ppv = &This->IHTMLTitleElement_iface;
}else {
else
return HTMLElement_QI(&This->element.node, riid, ppv);
}
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
@ -281,12 +281,12 @@ static HRESULT HTMLHeadElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
{
HTMLHeadElement *This = impl_from_HTMLDOMNode(iface);
if(IsEqualGUID(&IID_IHTMLHeadElement, riid)) {
TRACE("(%p)->(IID_IHTMLHeadElement %p)\n", This, ppv);
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
if(IsEqualGUID(&IID_IHTMLHeadElement, riid))
*ppv = &This->IHTMLHeadElement_iface;
}else {
else
return HTMLElement_QI(&This->element.node, riid, ppv);
}
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;

View file

@ -87,15 +87,37 @@ static HRESULT WINAPI HTMLImgElement_Invoke(IHTMLImgElement *iface, DISPID dispI
static HRESULT WINAPI HTMLImgElement_put_isMap(IHTMLImgElement *iface, VARIANT_BOOL v)
{
HTMLImgElement *This = impl_from_IHTMLImgElement(iface);
FIXME("(%p)->(%x)\n", This, v);
return E_NOTIMPL;
nsresult nsres;
TRACE("(%p)->(%x)\n", This, v);
nsres = nsIDOMHTMLImageElement_SetIsMap(This->nsimg, v != VARIANT_FALSE);
if (NS_FAILED(nsres)) {
ERR("Set IsMap failed: %08x\n", nsres);
return E_FAIL;
}
return S_OK;
}
static HRESULT WINAPI HTMLImgElement_get_isMap(IHTMLImgElement *iface, VARIANT_BOOL *p)
{
HTMLImgElement *This = impl_from_IHTMLImgElement(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
cpp_bool b;
nsresult nsres;
TRACE("(%p)->(%p)\n", This, p);
if (p == NULL)
return E_INVALIDARG;
nsres = nsIDOMHTMLImageElement_GetIsMap(This->nsimg, &b);
if (NS_FAILED(nsres)) {
ERR("Get IsMap failed: %08x\n", nsres);
return E_FAIL;
}
*p = b ? VARIANT_TRUE : VARIANT_FALSE;
return S_OK;
}
static HRESULT WINAPI HTMLImgElement_put_useMap(IHTMLImgElement *iface, BSTR v)
@ -375,15 +397,35 @@ static HRESULT WINAPI HTMLImgElement_get_loop(IHTMLImgElement *iface, VARIANT *p
static HRESULT WINAPI HTMLImgElement_put_align(IHTMLImgElement *iface, BSTR v)
{
HTMLImgElement *This = impl_from_IHTMLImgElement(iface);
FIXME("(%p)->(%s)\n", This, debugstr_w(v));
return E_NOTIMPL;
nsAString str;
nsresult nsres;
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
nsAString_InitDepend(&str, v);
nsres = nsIDOMHTMLImageElement_SetAlign(This->nsimg, &str);
nsAString_Finish(&str);
if (NS_FAILED(nsres)){
ERR("Set Align(%s) failed: %08x\n", debugstr_w(v), nsres);
return E_FAIL;
}
return S_OK;
}
static HRESULT WINAPI HTMLImgElement_get_align(IHTMLImgElement *iface, BSTR *p)
{
HTMLImgElement *This = impl_from_IHTMLImgElement(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
nsAString str;
nsresult nsres;
TRACE("(%p)->(%p)\n", This, p);
nsAString_Init(&str, NULL);
nsres = nsIDOMHTMLImageElement_GetAlign(This->nsimg, &str);
return return_nsstr(nsres, &str, p);
}
static HRESULT WINAPI HTMLImgElement_put_onload(IHTMLImgElement *iface, VARIANT v)
@ -690,24 +732,22 @@ static HRESULT WINAPI HTMLImageElementFactory_QueryInterface(IHTMLImageElementFa
{
HTMLImageElementFactory *This = impl_from_IHTMLImageElementFactory(iface);
*ppv = NULL;
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
if(IsEqualGUID(&IID_IUnknown, riid)) {
TRACE("(%p)->(IID_Unknown %p)\n", This, ppv);
*ppv = &This->IHTMLImageElementFactory_iface;
}else if(IsEqualGUID(&IID_IHTMLImageElementFactory, riid)) {
TRACE("(%p)->(IID_IHTMLImageElementFactory %p)\n", This, ppv);
*ppv = &This->IHTMLImageElementFactory_iface;
}else if(dispex_query_interface(&This->dispex, riid, ppv))
}else if(dispex_query_interface(&This->dispex, riid, ppv)) {
return *ppv ? S_OK : E_NOINTERFACE;
if(*ppv) {
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}else {
*ppv = NULL;
WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
return E_NOINTERFACE;
}
WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
return E_NOINTERFACE;
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
static ULONG WINAPI HTMLImageElementFactory_AddRef(IHTMLImageElementFactory *iface)
@ -737,16 +777,14 @@ static HRESULT WINAPI HTMLImageElementFactory_GetTypeInfoCount(IHTMLImageElement
UINT *pctinfo)
{
HTMLImageElementFactory *This = impl_from_IHTMLImageElementFactory(iface);
FIXME("(%p)->(%p)\n", This, pctinfo);
return E_NOTIMPL;
return IDispatchEx_GetTypeInfoCount(&This->dispex.IDispatchEx_iface, pctinfo);
}
static HRESULT WINAPI HTMLImageElementFactory_GetTypeInfo(IHTMLImageElementFactory *iface,
UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
{
HTMLImageElementFactory *This = impl_from_IHTMLImageElementFactory(iface);
FIXME("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo);
return E_NOTIMPL;
return IDispatchEx_GetTypeInfo(&This->dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
}
static HRESULT WINAPI HTMLImageElementFactory_GetIDsOfNames(IHTMLImageElementFactory *iface,
@ -754,9 +792,7 @@ static HRESULT WINAPI HTMLImageElementFactory_GetIDsOfNames(IHTMLImageElementFac
DISPID *rgDispId)
{
HTMLImageElementFactory *This = impl_from_IHTMLImageElementFactory(iface);
FIXME("(%p)->(%s %p %u %u %p)\n", This, debugstr_guid(riid), rgszNames,
cNames, lcid, rgDispId);
return E_NOTIMPL;
return IDispatchEx_GetIDsOfNames(&This->dispex.IDispatchEx_iface, riid, rgszNames, cNames, lcid, rgDispId);
}
static HRESULT WINAPI HTMLImageElementFactory_Invoke(IHTMLImageElementFactory *iface,
@ -765,9 +801,8 @@ static HRESULT WINAPI HTMLImageElementFactory_Invoke(IHTMLImageElementFactory *i
UINT *puArgErr)
{
HTMLImageElementFactory *This = impl_from_IHTMLImageElementFactory(iface);
FIXME("(%p)->(%d %s %d %d %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid),
lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
return E_NOTIMPL;
return IDispatchEx_Invoke(&This->dispex.IDispatchEx_iface, dispIdMember, riid, lcid, wFlags,
pDispParams, pVarResult, pExcepInfo, puArgErr);
}
static LONG var_to_size(const VARIANT *v)

View file

@ -241,22 +241,66 @@ static HRESULT WINAPI HTMLInputElement_get_disabled(IHTMLInputElement *iface, VA
static HRESULT WINAPI HTMLInputElement_get_form(IHTMLInputElement *iface, IHTMLFormElement **p)
{
HTMLInputElement *This = impl_from_IHTMLInputElement(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
nsIDOMHTMLFormElement *nsform;
HTMLDOMNode *node;
HRESULT hres;
nsresult nsres;
TRACE("(%p)->(%p)\n", This, p);
nsres = nsIDOMHTMLInputElement_GetForm(This->nsinput, &nsform);
if (NS_FAILED(nsres) || nsform == NULL) {
ERR("GetForm failed: %08x, nsform: %p\n", nsres, nsform);
*p = NULL;
return E_FAIL;
}
hres = get_node(This->element.node.doc, (nsIDOMNode*)nsform, TRUE, &node);
nsIDOMHTMLFormElement_Release(nsform);
if (FAILED(hres))
return hres;
hres = IHTMLDOMNode_QueryInterface(&node->IHTMLDOMNode_iface, &IID_IHTMLElement, (void**)p);
node_release(node);
return hres;
}
static HRESULT WINAPI HTMLInputElement_put_size(IHTMLInputElement *iface, LONG v)
{
HTMLInputElement *This = impl_from_IHTMLInputElement(iface);
FIXME("(%p)->(%d)\n", This, v);
return E_NOTIMPL;
UINT32 val = v;
nsresult nsres;
TRACE("(%p)->(%d)\n", This, v);
if (v <= 0)
return CTL_E_INVALIDPROPERTYVALUE;
nsres = nsIDOMHTMLInputElement_SetSize(This->nsinput, val);
if (NS_FAILED(nsres)) {
ERR("Set Size(%u) failed: %08x\n", val, nsres);
return E_FAIL;
}
return S_OK;
}
static HRESULT WINAPI HTMLInputElement_get_size(IHTMLInputElement *iface, LONG *p)
{
HTMLInputElement *This = impl_from_IHTMLInputElement(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
UINT32 val;
nsresult nsres;
TRACE("(%p)->(%p)\n", This, p);
if (p == NULL)
return E_INVALIDARG;
nsres = nsIDOMHTMLInputElement_GetSize(This->nsinput, &val);
if (NS_FAILED(nsres)) {
ERR("Get Size failed: %08x\n", nsres);
return E_FAIL;
}
*p = val;
return S_OK;
}
static HRESULT WINAPI HTMLInputElement_put_maxLength(IHTMLInputElement *iface, LONG v)
@ -375,15 +419,33 @@ static HRESULT WINAPI HTMLInputElement_get_defaultValue(IHTMLInputElement *iface
static HRESULT WINAPI HTMLInputElement_put_readOnly(IHTMLInputElement *iface, VARIANT_BOOL v)
{
HTMLInputElement *This = impl_from_IHTMLInputElement(iface);
FIXME("(%p)->(%x)\n", This, v);
return E_NOTIMPL;
nsresult nsres;
TRACE("(%p)->(%x)\n", This, v);
nsres = nsIDOMHTMLInputElement_SetReadOnly(This->nsinput, v != VARIANT_FALSE);
if (NS_FAILED(nsres)) {
ERR("Set ReadOnly Failed: %08x\n", nsres);
return E_FAIL;
}
return S_OK;
}
static HRESULT WINAPI HTMLInputElement_get_readOnly(IHTMLInputElement *iface, VARIANT_BOOL *p)
{
HTMLInputElement *This = impl_from_IHTMLInputElement(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
nsresult nsres;
cpp_bool b;
TRACE("(%p)->(%p)\n", This, p);
nsres = nsIDOMHTMLInputElement_GetReadOnly(This->nsinput, &b);
if (NS_FAILED(nsres)) {
ERR("Get ReadOnly Failed: %08x\n", nsres);
return E_FAIL;
}
*p = b ? VARIANT_TRUE : VARIANT_FALSE;
return S_OK;
}
static HRESULT WINAPI HTMLInputElement_createTextRange(IHTMLInputElement *iface, IHTMLTxtRange **range)
@ -1320,29 +1382,10 @@ static HRESULT WINAPI HTMLLabelElement_put_htmlFor(IHTMLLabelElement *iface, BST
static HRESULT WINAPI HTMLLabelElement_get_htmlFor(IHTMLLabelElement *iface, BSTR *p)
{
HTMLLabelElement *This = impl_from_IHTMLLabelElement(iface);
nsAString for_str, val_str;
nsresult nsres;
HRESULT hres;
TRACE("(%p)->(%p)\n", This, p);
nsAString_InitDepend(&for_str, forW);
nsAString_Init(&val_str, NULL);
nsres = nsIDOMHTMLElement_GetAttribute(This->element.nselem, &for_str, &val_str);
nsAString_Finish(&for_str);
if(NS_SUCCEEDED(nsres)) {
const PRUnichar *val;
nsAString_GetData(&val_str, &val);
*p = SysAllocString(val);
hres = *p ? S_OK : E_OUTOFMEMORY;
}else {
ERR("GetAttribute failed: %08x\n", nsres);
hres = E_FAIL;
}
nsAString_Finish(&val_str);
return hres;
return elem_string_attr_getter(&This->element, forW, FALSE, p);
}
static HRESULT WINAPI HTMLLabelElement_put_accessKey(IHTMLLabelElement *iface, BSTR v)

View file

@ -147,15 +147,33 @@ static HRESULT WINAPI HTMLLinkElement_get_rel(IHTMLLinkElement *iface, BSTR *p)
static HRESULT WINAPI HTMLLinkElement_put_rev(IHTMLLinkElement *iface, BSTR v)
{
HTMLLinkElement *This = impl_from_IHTMLLinkElement(iface);
FIXME("(%p)->(%s)\n", This, debugstr_w(v));
return E_NOTIMPL;
nsAString nsstr;
nsresult nsres;
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
nsAString_InitDepend(&nsstr, v);
nsres = nsIDOMHTMLLinkElement_SetRev(This->nslink, &nsstr);
nsAString_Finish(&nsstr);
if(NS_FAILED(nsres)) {
ERR("SetRev failed: %08x\n", nsres);
return E_FAIL;
}
return S_OK;
}
static HRESULT WINAPI HTMLLinkElement_get_rev(IHTMLLinkElement *iface, BSTR *p)
{
HTMLLinkElement *This = impl_from_IHTMLLinkElement(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
nsAString nsstr;
nsresult nsres;
TRACE("(%p)->(%p)\n", This, p);
nsAString_Init(&nsstr, NULL);
nsres = nsIDOMHTMLLinkElement_GetRev(This->nslink, &nsstr);
return return_nsstr(nsres, &nsstr, p);
}
static HRESULT WINAPI HTMLLinkElement_put_type(IHTMLLinkElement *iface, BSTR v)
@ -272,15 +290,35 @@ static HRESULT WINAPI HTMLLinkElement_get_disabled(IHTMLLinkElement *iface, VARI
static HRESULT WINAPI HTMLLinkElement_put_media(IHTMLLinkElement *iface, BSTR v)
{
HTMLLinkElement *This = impl_from_IHTMLLinkElement(iface);
FIXME("(%p)->(%s)\n", This, debugstr_w(v));
return E_NOTIMPL;
nsresult nsres;
nsAString str;
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
nsAString_InitDepend(&str, v);
nsres = nsIDOMHTMLLinkElement_SetMedia(This->nslink, &str);
nsAString_Finish(&str);
if(NS_FAILED(nsres)) {
ERR("Set Media(%s) failed: %08x\n", debugstr_w(v), nsres);
return E_FAIL;
}
return S_OK;
}
static HRESULT WINAPI HTMLLinkElement_get_media(IHTMLLinkElement *iface, BSTR *p)
{
HTMLLinkElement *This = impl_from_IHTMLLinkElement(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
nsresult nsres;
nsAString str;
TRACE("(%p)->(%p)\n", This, p);
nsAString_Init(&str, NULL);
nsres = nsIDOMHTMLLinkElement_GetMedia(This->nslink, &str);
return return_nsstr(nsres, &str, p);
}
static const IHTMLLinkElementVtbl HTMLLinkElementVtbl = {

View file

@ -63,25 +63,22 @@ static HRESULT WINAPI HTMLLocation_QueryInterface(IHTMLLocation *iface, REFIID r
{
HTMLLocation *This = impl_from_IHTMLLocation(iface);
*ppv = NULL;
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
if(IsEqualGUID(&IID_IUnknown, riid)) {
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
*ppv = &This->IHTMLLocation_iface;
}else if(IsEqualGUID(&IID_IHTMLLocation, riid)) {
TRACE("(%p)->(IID_IHTMLLocation %p)\n", This, ppv);
*ppv = &This->IHTMLLocation_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;
}
if(*ppv) {
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
return E_NOINTERFACE;
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
static ULONG WINAPI HTMLLocation_AddRef(IHTMLLocation *iface)
@ -560,8 +557,8 @@ static HRESULT WINAPI HTMLLocation_replace(IHTMLLocation *iface, BSTR bstr)
static HRESULT WINAPI HTMLLocation_assign(IHTMLLocation *iface, BSTR bstr)
{
HTMLLocation *This = impl_from_IHTMLLocation(iface);
FIXME("(%p)->(%s)\n", This, debugstr_w(bstr));
return E_NOTIMPL;
TRACE("(%p)->(%s)\n", This, debugstr_w(bstr));
return IHTMLLocation_put_href(iface, bstr);
}
static HRESULT WINAPI HTMLLocation_toString(IHTMLLocation *iface, BSTR *String)

View file

@ -91,19 +91,11 @@ static HRESULT WINAPI HTMLMetaElement_put_httpEquiv(IHTMLMetaElement *iface, BST
static HRESULT WINAPI HTMLMetaElement_get_httpEquiv(IHTMLMetaElement *iface, BSTR *p)
{
HTMLMetaElement *This = impl_from_IHTMLMetaElement(iface);
nsAString httpequiv_str, val_str;
nsresult nsres;
static const PRUnichar httpEquivW[] = {'h','t','t','p','-','e','q','u','i','v',0};
TRACE("(%p)->(%p)\n", This, p);
nsAString_InitDepend(&httpequiv_str, httpEquivW);
nsAString_Init(&val_str, NULL);
nsres = nsIDOMHTMLElement_GetAttribute(This->element.nselem, &httpequiv_str, &val_str);
nsAString_Finish(&httpequiv_str);
return return_nsstr(nsres, &val_str, p);
return elem_string_attr_getter(&This->element, httpEquivW, TRUE, p);
}
static HRESULT WINAPI HTMLMetaElement_put_content(IHTMLMetaElement *iface, BSTR v)
@ -116,19 +108,11 @@ static HRESULT WINAPI HTMLMetaElement_put_content(IHTMLMetaElement *iface, BSTR
static HRESULT WINAPI HTMLMetaElement_get_content(IHTMLMetaElement *iface, BSTR *p)
{
HTMLMetaElement *This = impl_from_IHTMLMetaElement(iface);
nsAString content_str, val_str;
nsresult nsres;
static const PRUnichar contentW[] = {'c','o','n','t','e','n','t',0};
TRACE("(%p)->(%p)\n", This, p);
nsAString_InitDepend(&content_str, contentW);
nsAString_Init(&val_str, NULL);
nsres = nsIDOMHTMLElement_GetAttribute(This->element.nselem, &content_str, &val_str);
nsAString_Finish(&content_str);
return return_nsstr(nsres, &val_str, p);
return elem_string_attr_getter(&This->element, contentW, TRUE, p);
}
static HRESULT WINAPI HTMLMetaElement_put_name(IHTMLMetaElement *iface, BSTR v)
@ -141,19 +125,11 @@ static HRESULT WINAPI HTMLMetaElement_put_name(IHTMLMetaElement *iface, BSTR v)
static HRESULT WINAPI HTMLMetaElement_get_name(IHTMLMetaElement *iface, BSTR *p)
{
HTMLMetaElement *This = impl_from_IHTMLMetaElement(iface);
nsAString name_str, val_str;
nsresult nsres;
static const PRUnichar nameW[] = {'n','a','m','e',0};
TRACE("(%p)->(%p)\n", This, p);
nsAString_InitDepend(&name_str, nameW);
nsAString_Init(&val_str, NULL);
nsres = nsIDOMHTMLElement_GetAttribute(This->element.nselem, &name_str, &val_str);
nsAString_Finish(&name_str);
return return_nsstr(nsres, &val_str, p);
return elem_string_attr_getter(&This->element, nameW, TRUE, p);
}
static HRESULT WINAPI HTMLMetaElement_put_url(IHTMLMetaElement *iface, BSTR v)
@ -170,18 +146,24 @@ static HRESULT WINAPI HTMLMetaElement_get_url(IHTMLMetaElement *iface, BSTR *p)
return E_NOTIMPL;
}
static const WCHAR charsetW[] = {'c','h','a','r','s','e','t',0};
static HRESULT WINAPI HTMLMetaElement_put_charset(IHTMLMetaElement *iface, BSTR v)
{
HTMLMetaElement *This = impl_from_IHTMLMetaElement(iface);
FIXME("(%p)->(%s)\n", This, debugstr_w(v));
return E_NOTIMPL;
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
return elem_string_attr_setter(&This->element, charsetW, v);
}
static HRESULT WINAPI HTMLMetaElement_get_charset(IHTMLMetaElement *iface, BSTR *p)
{
HTMLMetaElement *This = impl_from_IHTMLMetaElement(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
TRACE("(%p)->(%p)\n", This, p);
return elem_string_attr_getter(&This->element, charsetW, TRUE, p);
}
static const IHTMLMetaElementVtbl HTMLMetaElementVtbl = {

View file

@ -33,6 +33,155 @@ typedef struct {
nsIDOMNodeList *nslist;
} HTMLDOMChildrenCollection;
typedef struct {
IEnumVARIANT IEnumVARIANT_iface;
LONG ref;
ULONG iter;
HTMLDOMChildrenCollection *col;
} HTMLDOMChildrenCollectionEnum;
static inline HTMLDOMChildrenCollectionEnum *impl_from_IEnumVARIANT(IEnumVARIANT *iface)
{
return CONTAINING_RECORD(iface, HTMLDOMChildrenCollectionEnum, IEnumVARIANT_iface);
}
static HRESULT WINAPI HTMLDOMChildrenCollectionEnum_QueryInterface(IEnumVARIANT *iface, REFIID riid, void **ppv)
{
HTMLDOMChildrenCollectionEnum *This = impl_from_IEnumVARIANT(iface);
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
if(IsEqualGUID(riid, &IID_IUnknown)) {
*ppv = &This->IEnumVARIANT_iface;
}else if(IsEqualGUID(riid, &IID_IEnumVARIANT)) {
*ppv = &This->IEnumVARIANT_iface;
}else {
FIXME("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
*ppv = NULL;
return E_NOINTERFACE;
}
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
static ULONG WINAPI HTMLDOMChildrenCollectionEnum_AddRef(IEnumVARIANT *iface)
{
HTMLDOMChildrenCollectionEnum *This = impl_from_IEnumVARIANT(iface);
LONG ref = InterlockedIncrement(&This->ref);
TRACE("(%p) ref=%d\n", This, ref);
return ref;
}
static ULONG WINAPI HTMLDOMChildrenCollectionEnum_Release(IEnumVARIANT *iface)
{
HTMLDOMChildrenCollectionEnum *This = impl_from_IEnumVARIANT(iface);
LONG ref = InterlockedDecrement(&This->ref);
TRACE("(%p) ref=%d\n", This, ref);
if(!ref) {
IHTMLDOMChildrenCollection_Release(&This->col->IHTMLDOMChildrenCollection_iface);
heap_free(This);
}
return ref;
}
static ULONG get_enum_len(HTMLDOMChildrenCollectionEnum *This)
{
ULONG len;
nsresult nsres;
nsres = nsIDOMNodeList_GetLength(This->col->nslist, &len);
assert(nsres == NS_OK);
return len;
}
static HRESULT WINAPI HTMLDOMChildrenCollectionEnum_Next(IEnumVARIANT *iface, ULONG celt, VARIANT *rgVar, ULONG *pCeltFetched)
{
HTMLDOMChildrenCollectionEnum *This = impl_from_IEnumVARIANT(iface);
ULONG fetched = 0, len;
nsIDOMNode *nsnode;
HTMLDOMNode *node;
nsresult nsres;
HRESULT hres;
TRACE("(%p)->(%d %p %p)\n", This, celt, rgVar, pCeltFetched);
len = get_enum_len(This);
while(This->iter+fetched < len && fetched < celt) {
nsres = nsIDOMNodeList_Item(This->col->nslist, This->iter+fetched, &nsnode);
assert(nsres == NS_OK);
hres = get_node(This->col->doc, nsnode, TRUE, &node);
nsIDOMNode_Release(nsnode);
if(FAILED(hres)) {
ERR("get_node failed: %08x\n", hres);
break;
}
V_VT(rgVar+fetched) = VT_DISPATCH;
IHTMLDOMNode_AddRef(&node->IHTMLDOMNode_iface);
V_DISPATCH(rgVar+fetched) = (IDispatch*)&node->IHTMLDOMNode_iface;
fetched++;
}
This->iter += fetched;
if(pCeltFetched)
*pCeltFetched = fetched;
return fetched == celt ? S_OK : S_FALSE;
}
static HRESULT WINAPI HTMLDOMChildrenCollectionEnum_Skip(IEnumVARIANT *iface, ULONG celt)
{
HTMLDOMChildrenCollectionEnum *This = impl_from_IEnumVARIANT(iface);
ULONG len;
TRACE("(%p)->(%d)\n", This, celt);
len = get_enum_len(This);
if(This->iter + celt > len) {
This->iter = len;
return S_FALSE;
}
This->iter += celt;
return S_OK;
}
static HRESULT WINAPI HTMLDOMChildrenCollectionEnum_Reset(IEnumVARIANT *iface)
{
HTMLDOMChildrenCollectionEnum *This = impl_from_IEnumVARIANT(iface);
TRACE("(%p)->()\n", This);
This->iter = 0;
return S_OK;
}
static HRESULT WINAPI HTMLDOMChildrenCollectionEnum_Clone(IEnumVARIANT *iface, IEnumVARIANT **ppEnum)
{
HTMLDOMChildrenCollectionEnum *This = impl_from_IEnumVARIANT(iface);
FIXME("(%p)->(%p)\n", This, ppEnum);
return E_NOTIMPL;
}
static const IEnumVARIANTVtbl HTMLDOMChildrenCollectionEnumVtbl = {
HTMLDOMChildrenCollectionEnum_QueryInterface,
HTMLDOMChildrenCollectionEnum_AddRef,
HTMLDOMChildrenCollectionEnum_Release,
HTMLDOMChildrenCollectionEnum_Next,
HTMLDOMChildrenCollectionEnum_Skip,
HTMLDOMChildrenCollectionEnum_Reset,
HTMLDOMChildrenCollectionEnum_Clone
};
static inline HTMLDOMChildrenCollection *impl_from_IHTMLDOMChildrenCollection(IHTMLDOMChildrenCollection *iface)
{
return CONTAINING_RECORD(iface, HTMLDOMChildrenCollection, IHTMLDOMChildrenCollection_iface);
@ -42,25 +191,22 @@ static HRESULT WINAPI HTMLDOMChildrenCollection_QueryInterface(IHTMLDOMChildrenC
{
HTMLDOMChildrenCollection *This = impl_from_IHTMLDOMChildrenCollection(iface);
*ppv = NULL;
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
if(IsEqualGUID(&IID_IUnknown, riid)) {
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
*ppv = &This->IHTMLDOMChildrenCollection_iface;
}else if(IsEqualGUID(&IID_IHTMLDOMChildrenCollection, riid)) {
TRACE("(%p)->(IID_IHTMLDOMChildrenCollection %p)\n", This, ppv);
*ppv = &This->IHTMLDOMChildrenCollection_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;
}
if(*ppv) {
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
return E_NOINTERFACE;
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
static ULONG WINAPI HTMLDOMChildrenCollection_AddRef(IHTMLDOMChildrenCollection *iface)
@ -131,11 +277,26 @@ static HRESULT WINAPI HTMLDOMChildrenCollection_get_length(IHTMLDOMChildrenColle
return S_OK;
}
static HRESULT WINAPI HTMLDOMChildrenCollection__newEnum(IHTMLDOMChildrenCollection *iface, IUnknown **p)
static HRESULT WINAPI HTMLDOMChildrenCollection_get__newEnum(IHTMLDOMChildrenCollection *iface, IUnknown **p)
{
HTMLDOMChildrenCollection *This = impl_from_IHTMLDOMChildrenCollection(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
HTMLDOMChildrenCollectionEnum *ret;
TRACE("(%p)->(%p)\n", This, p);
ret = heap_alloc(sizeof(*ret));
if(!ret)
return E_OUTOFMEMORY;
ret->IEnumVARIANT_iface.lpVtbl = &HTMLDOMChildrenCollectionEnumVtbl;
ret->ref = 1;
ret->iter = 0;
IHTMLDOMChildrenCollection_AddRef(&This->IHTMLDOMChildrenCollection_iface);
ret->col = This;
*p = (IUnknown*)&ret->IEnumVARIANT_iface;
return S_OK;
}
static HRESULT WINAPI HTMLDOMChildrenCollection_item(IHTMLDOMChildrenCollection *iface, LONG index, IDispatch **ppItem)
@ -181,7 +342,7 @@ static const IHTMLDOMChildrenCollectionVtbl HTMLDOMChildrenCollectionVtbl = {
HTMLDOMChildrenCollection_GetIDsOfNames,
HTMLDOMChildrenCollection_Invoke,
HTMLDOMChildrenCollection_get_length,
HTMLDOMChildrenCollection__newEnum,
HTMLDOMChildrenCollection_get__newEnum,
HTMLDOMChildrenCollection_item
};
@ -316,6 +477,8 @@ static ULONG WINAPI HTMLDOMNode_Release(IHTMLDOMNode *iface)
TRACE("(%p) ref=%d\n", This, ref);
if(!ref) {
if(This->vtbl->unlink)
This->vtbl->unlink(This);
This->vtbl->destructor(This);
release_dispex(&This->dispex);
heap_free(This);
@ -984,47 +1147,34 @@ static nsXPCOMCycleCollectionParticipant node_ccp;
HRESULT HTMLDOMNode_QI(HTMLDOMNode *This, REFIID riid, void **ppv)
{
*ppv = NULL;
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
if(IsEqualGUID(&IID_IUnknown, riid)) {
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
*ppv = &This->IHTMLDOMNode_iface;
}else if(IsEqualGUID(&IID_IDispatch, riid)) {
TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
*ppv = &This->IHTMLDOMNode_iface;
}else if(IsEqualGUID(&IID_IDispatchEx, riid)) {
if(This->dispex.data) {
TRACE("(%p)->(IID_IDispatchEx %p)\n", This, ppv);
*ppv = &This->dispex.IDispatchEx_iface;
}else {
FIXME("(%p)->(IID_IDispatchEx %p)\n", This, ppv);
return E_NOINTERFACE;
}
}else if(IsEqualGUID(&IID_IDispatchEx, riid) && This->dispex.data) {
*ppv = &This->dispex.IDispatchEx_iface;
}else if(IsEqualGUID(&IID_IHTMLDOMNode, riid)) {
TRACE("(%p)->(IID_IHTMLDOMNode %p)\n", This, ppv);
*ppv = &This->IHTMLDOMNode_iface;
}else if(IsEqualGUID(&IID_IHTMLDOMNode2, riid)) {
TRACE("(%p)->(IID_IHTMLDOMNode2 %p)\n", This, ppv);
*ppv = &This->IHTMLDOMNode2_iface;
}else if(IsEqualGUID(&IID_nsXPCOMCycleCollectionParticipant, riid)) {
TRACE("(%p)->(IID_nsXPCOMCycleCollectionParticipant %p)\n", This, ppv);
*ppv = &node_ccp;
return NS_OK;
}else if(IsEqualGUID(&IID_nsCycleCollectionISupports, riid)) {
TRACE("(%p)->(IID_nsCycleCollectionISupports %p)\n", This, ppv);
*ppv = &This->IHTMLDOMNode_iface;
return NS_OK;
}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;
}
if(*ppv) {
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
return E_NOINTERFACE;
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
void HTMLDOMNode_destructor(HTMLDOMNode *This)

View file

@ -352,26 +352,24 @@ static HRESULT WINAPI HTMLOptionElementFactory_QueryInterface(IHTMLOptionElement
{
HTMLOptionElementFactory *This = impl_from_IHTMLOptionElementFactory(iface);
*ppv = NULL;
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
if(IsEqualGUID(&IID_IUnknown, riid)) {
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
*ppv = &This->IHTMLOptionElementFactory_iface;
}else if(IsEqualGUID(&IID_IDispatch, riid)) {
TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
*ppv = &This->IHTMLOptionElementFactory_iface;
}else if(IsEqualGUID(&IID_IHTMLOptionElementFactory, riid)) {
TRACE("(%p)->(IID_IHTMLOptionElementFactory %p)\n", This, ppv);
*ppv = &This->IHTMLOptionElementFactory_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;
}
if(*ppv) {
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
return E_NOINTERFACE;
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
static ULONG WINAPI HTMLOptionElementFactory_AddRef(IHTMLOptionElementFactory *iface)
@ -391,8 +389,10 @@ static ULONG WINAPI HTMLOptionElementFactory_Release(IHTMLOptionElementFactory *
TRACE("(%p) ref=%d\n", This, ref);
if(!ref)
if(!ref) {
release_dispex(&This->dispex);
heap_free(This);
}
return ref;
}
@ -400,16 +400,14 @@ static ULONG WINAPI HTMLOptionElementFactory_Release(IHTMLOptionElementFactory *
static HRESULT WINAPI HTMLOptionElementFactory_GetTypeInfoCount(IHTMLOptionElementFactory *iface, UINT *pctinfo)
{
HTMLOptionElementFactory *This = impl_from_IHTMLOptionElementFactory(iface);
FIXME("(%p)->(%p)\n", This, pctinfo);
return E_NOTIMPL;
return IDispatchEx_GetTypeInfoCount(&This->dispex.IDispatchEx_iface, pctinfo);
}
static HRESULT WINAPI HTMLOptionElementFactory_GetTypeInfo(IHTMLOptionElementFactory *iface, UINT iTInfo,
LCID lcid, ITypeInfo **ppTInfo)
{
HTMLOptionElementFactory *This = impl_from_IHTMLOptionElementFactory(iface);
FIXME("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo);
return E_NOTIMPL;
return IDispatchEx_GetTypeInfo(&This->dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
}
static HRESULT WINAPI HTMLOptionElementFactory_GetIDsOfNames(IHTMLOptionElementFactory *iface, REFIID riid,
@ -417,9 +415,7 @@ static HRESULT WINAPI HTMLOptionElementFactory_GetIDsOfNames(IHTMLOptionElementF
LCID lcid, DISPID *rgDispId)
{
HTMLOptionElementFactory *This = impl_from_IHTMLOptionElementFactory(iface);
FIXME("(%p)->(%s %p %u %u %p)\n", This, debugstr_guid(riid), rgszNames, cNames,
lcid, rgDispId);
return E_NOTIMPL;
return IDispatchEx_GetIDsOfNames(&This->dispex.IDispatchEx_iface, riid, rgszNames, cNames, lcid, rgDispId);
}
static HRESULT WINAPI HTMLOptionElementFactory_Invoke(IHTMLOptionElementFactory *iface, DISPID dispIdMember,
@ -427,9 +423,8 @@ static HRESULT WINAPI HTMLOptionElementFactory_Invoke(IHTMLOptionElementFactory
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
{
HTMLOptionElementFactory *This = impl_from_IHTMLOptionElementFactory(iface);
FIXME("(%p)->(%d %s %d %d %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid),
lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
return E_NOTIMPL;
return IDispatchEx_Invoke(&This->dispex.IDispatchEx_iface, dispIdMember, riid, lcid, wFlags, pDispParams,
pVarResult, pExcepInfo, puArgErr);
}
static HRESULT WINAPI HTMLOptionElementFactory_create(IHTMLOptionElementFactory *iface,
@ -495,6 +490,18 @@ static const IHTMLOptionElementFactoryVtbl HTMLOptionElementFactoryVtbl = {
HTMLOptionElementFactory_create
};
static const tid_t HTMLOptionElementFactory_iface_tids[] = {
IHTMLOptionElementFactory_tid,
0
};
static dispex_static_data_t HTMLOptionElementFactory_dispex = {
NULL,
IHTMLOptionElementFactory_tid,
NULL,
HTMLOptionElementFactory_iface_tids
};
HRESULT HTMLOptionElementFactory_Create(HTMLInnerWindow *window, HTMLOptionElementFactory **ret_ptr)
{
HTMLOptionElementFactory *ret;
@ -507,6 +514,9 @@ HRESULT HTMLOptionElementFactory_Create(HTMLInnerWindow *window, HTMLOptionEleme
ret->ref = 1;
ret->window = window;
init_dispex(&ret->dispex, (IUnknown*)&ret->IHTMLOptionElementFactory_iface,
&HTMLOptionElementFactory_dispex);
*ret_ptr = ret;
return S_OK;
}

View file

@ -34,25 +34,22 @@ static HRESULT WINAPI HTMLScreen_QueryInterface(IHTMLScreen *iface, REFIID riid,
{
HTMLScreen *This = impl_from_IHTMLScreen(iface);
*ppv = NULL;
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
if(IsEqualGUID(&IID_IUnknown, riid)) {
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
*ppv = &This->IHTMLScreen_iface;
}else if(IsEqualGUID(&IID_IHTMLScreen, riid)) {
TRACE("(%p)->(IID_IHTMLScreen %p)\n", This, ppv);
*ppv = &This->IHTMLScreen_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;
}
if(*ppv) {
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
return E_NOINTERFACE;
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
static ULONG WINAPI HTMLScreen_AddRef(IHTMLScreen *iface)
@ -83,24 +80,22 @@ static ULONG WINAPI HTMLScreen_Release(IHTMLScreen *iface)
static HRESULT WINAPI HTMLScreen_GetTypeInfoCount(IHTMLScreen *iface, UINT *pctinfo)
{
HTMLScreen *This = impl_from_IHTMLScreen(iface);
FIXME("(%p)\n", This);
return E_NOTIMPL;
return IDispatchEx_GetTypeInfoCount(&This->dispex.IDispatchEx_iface, pctinfo);
}
static HRESULT WINAPI HTMLScreen_GetTypeInfo(IHTMLScreen *iface, UINT iTInfo,
LCID lcid, ITypeInfo **ppTInfo)
{
HTMLScreen *This = impl_from_IHTMLScreen(iface);
FIXME("(%p)\n", This);
return E_NOTIMPL;
return IDispatchEx_GetTypeInfo(&This->dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
}
static HRESULT WINAPI HTMLScreen_GetIDsOfNames(IHTMLScreen *iface, REFIID riid,
LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
{
HTMLScreen *This = impl_from_IHTMLScreen(iface);
FIXME("(%p)\n", This);
return E_NOTIMPL;
return IDispatchEx_GetIDsOfNames(&This->dispex.IDispatchEx_iface, riid, rgszNames, cNames,
lcid, rgDispId);
}
static HRESULT WINAPI HTMLScreen_Invoke(IHTMLScreen *iface, DISPID dispIdMember,
@ -108,8 +103,8 @@ static HRESULT WINAPI HTMLScreen_Invoke(IHTMLScreen *iface, DISPID dispIdMember,
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
{
HTMLScreen *This = impl_from_IHTMLScreen(iface);
FIXME("(%p)\n", This);
return E_NOTIMPL;
return IDispatchEx_Invoke(&This->dispex.IDispatchEx_iface, dispIdMember, riid, lcid, wFlags,
pDispParams, pVarResult, pExcepInfo, puArgErr);
}
static HRESULT WINAPI HTMLScreen_get_colorDepth(IHTMLScreen *iface, LONG *p)

View file

@ -16,6 +16,8 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#pragma once
typedef struct {
HTMLElement element;

View file

@ -392,8 +392,14 @@ static HRESULT WINAPI HTMLSelectElement_add(IHTMLSelectElement *iface, IHTMLElem
static HRESULT WINAPI HTMLSelectElement_remove(IHTMLSelectElement *iface, LONG index)
{
HTMLSelectElement *This = impl_from_IHTMLSelectElement(iface);
FIXME("(%p)->(%d)\n", This, index);
return E_NOTIMPL;
nsresult nsres;
TRACE("(%p)->(%d)\n", This, index);
nsres = nsIDOMHTMLSelectElement_select_Remove(This->nsselect, index);
if(NS_FAILED(nsres)) {
ERR("Remove failed: %08x\n", nsres);
return E_FAIL;
}
return S_OK;
}
static HRESULT WINAPI HTMLSelectElement_put_length(IHTMLSelectElement *iface, LONG v)

View file

@ -33,25 +33,22 @@ static HRESULT WINAPI HTMLStorage_QueryInterface(IHTMLStorage *iface, REFIID rii
{
HTMLStorage *This = impl_from_IHTMLStorage(iface);
*ppv = NULL;
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
if(IsEqualGUID(&IID_IUnknown, riid)) {
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
*ppv = &This->IHTMLStorage_iface;
}else if(IsEqualGUID(&IID_IHTMLStorage, riid)) {
TRACE("(%p)->(IID_IHTMLStorage %p)\n", This, ppv);
*ppv = &This->IHTMLStorage_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;
}
if(*ppv) {
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
return E_NOINTERFACE;
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
static ULONG WINAPI HTMLStorage_AddRef(IHTMLStorage *iface)

View file

@ -20,6 +20,8 @@
static const WCHAR attrBackground[] =
{'b','a','c','k','g','r','o','u','n','d',0};
static const WCHAR attrBackgroundAttachment[] =
{'b','a','c','k','g','r','o','u','n','d','-','a','t','t','a','c','h','m','e','n','t',0};
static const WCHAR attrBackgroundColor[] =
{'b','a','c','k','g','r','o','u','n','d','-','c','o','l','o','r',0};
static const WCHAR attrBackgroundImage[] =
@ -109,8 +111,12 @@ static const WCHAR attrLetterSpacing[] =
{'l','e','t','t','e','r','-','s','p','a','c','i','n','g',0};
static const WCHAR attrLineHeight[] =
{'l','i','n','e','-','h','e','i','g','h','t',0};
static const WCHAR attrListStyle[] =
{'l','i','s','t','-','s','t','y','l','e',0};
static const WCHAR attrListStyleType[] =
{'l','i','s','t','-','s','t','y','l','e','-','t','y','p','e',0};
static const WCHAR attrListStylePosition[] =
{'l','i','s','t','-','s','t','y','l','e','-','p','o','s','i','t','i','o','n',0};
static const WCHAR attrMargin[] =
{'m','a','r','g','i','n',0};
static const WCHAR attrMarginBottom[] =
@ -123,6 +129,8 @@ static const WCHAR attrMarginTop[] =
{'m','a','r','g','i','n','-','t','o','p',0};
static const WCHAR attrMinHeight[] =
{'m','i','n','-','h','e','i','g','h','t',0};
static const WCHAR attrMinWidth[] =
{'m','i','n','-','w','i','d','t','h',0};
static const WCHAR attrOutline[] =
{'o','u','t','l','i','n','e',0};
static const WCHAR attrOverflow[] =
@ -149,12 +157,16 @@ static const WCHAR attrPosition[] =
{'p','o','s','i','t','i','o','n',0};
static const WCHAR attrRight[] =
{'r','i','g','h','t',0};
static const WCHAR attrTableLayout[] =
{'t','a','b','l','e','-','l','a','y','o','u','t',0};
static const WCHAR attrTextAlign[] =
{'t','e','x','t','-','a','l','i','g','n',0};
static const WCHAR attrTextDecoration[] =
{'t','e','x','t','-','d','e','c','o','r','a','t','i','o','n',0};
static const WCHAR attrTextIndent[] =
{'t','e','x','t','-','i','n','d','e','n','t',0};
static const WCHAR attrTextTransform[] =
{'t','e','x','t','-','t','r','a','n','s','f','o','r','m',0};
static const WCHAR attrTop[] =
{'t','o','p',0};
static const WCHAR attrVerticalAlign[] =
@ -182,6 +194,7 @@ typedef struct {
static const style_tbl_entry_t style_tbl[] = {
{attrBackground, DISPID_IHTMLSTYLE_BACKGROUND},
{attrBackgroundAttachment, DISPID_IHTMLSTYLE_BACKGROUNDATTACHMENT},
{attrBackgroundColor, DISPID_IHTMLSTYLE_BACKGROUNDCOLOR},
{attrBackgroundImage, DISPID_IHTMLSTYLE_BACKGROUNDIMAGE},
{attrBackgroundPosition, DISPID_IHTMLSTYLE_BACKGROUNDPOSITION},
@ -226,6 +239,8 @@ static const style_tbl_entry_t style_tbl[] = {
{attrLeft, DISPID_IHTMLSTYLE_LEFT},
{attrLetterSpacing, DISPID_IHTMLSTYLE_LETTERSPACING},
{attrLineHeight, DISPID_IHTMLSTYLE_LINEHEIGHT},
{attrListStyle, DISPID_IHTMLSTYLE_LISTSTYLE},
{attrListStylePosition, DISPID_IHTMLSTYLE_LISTSTYLEPOSITION},
{attrListStyleType, DISPID_IHTMLSTYLE_LISTSTYLETYPE},
{attrMargin, DISPID_IHTMLSTYLE_MARGIN},
{attrMarginBottom, DISPID_IHTMLSTYLE_MARGINBOTTOM},
@ -233,6 +248,7 @@ static const style_tbl_entry_t style_tbl[] = {
{attrMarginRight, DISPID_IHTMLSTYLE_MARGINRIGHT},
{attrMarginTop, DISPID_IHTMLSTYLE_MARGINTOP},
{attrMinHeight, DISPID_IHTMLSTYLE4_MINHEIGHT},
{attrMinWidth, DISPID_IHTMLSTYLE5_MINWIDTH},
{attrOutline, DISPID_IHTMLSTYLE6_OUTLINE},
{attrOverflow, DISPID_IHTMLSTYLE_OVERFLOW},
{attrOverflowX, DISPID_IHTMLSTYLE2_OVERFLOWX},
@ -246,9 +262,11 @@ static const style_tbl_entry_t style_tbl[] = {
{attrPageBreakBefore, DISPID_IHTMLSTYLE_PAGEBREAKBEFORE},
{attrPosition, DISPID_IHTMLSTYLE2_POSITION},
{attrRight, DISPID_IHTMLSTYLE2_RIGHT},
{attrTableLayout, DISPID_IHTMLSTYLE2_TABLELAYOUT},
{attrTextAlign, DISPID_IHTMLSTYLE_TEXTALIGN},
{attrTextDecoration, DISPID_IHTMLSTYLE_TEXTDECORATION},
{attrTextIndent, DISPID_IHTMLSTYLE_TEXTINDENT},
{attrTextTransform, DISPID_IHTMLSTYLE_TEXTTRANSFORM},
{attrTop, DISPID_IHTMLSTYLE_TOP},
{attrVerticalAlign, DISPID_IHTMLSTYLE_VERTICALALIGN},
{attrVisibility, DISPID_IHTMLSTYLE_VISIBILITY},
@ -649,6 +667,9 @@ static HRESULT get_nsstyle_pixel_val(HTMLStyle *This, styleid_t sid, LONG *p)
nsAString str_value;
HRESULT hres;
if(!p)
return E_POINTER;
nsAString_Init(&str_value, NULL);
hres = get_nsstyle_attr_nsval(This->nsstyle, sid, &str_value);
@ -713,40 +734,32 @@ static HRESULT WINAPI HTMLStyle_QueryInterface(IHTMLStyle *iface, REFIID riid, v
{
HTMLStyle *This = impl_from_IHTMLStyle(iface);
*ppv = NULL;
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
if(IsEqualGUID(&IID_IUnknown, riid)) {
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
*ppv = &This->IHTMLStyle_iface;
}else if(IsEqualGUID(&IID_IHTMLStyle, riid)) {
TRACE("(%p)->(IID_IHTMLStyle %p)\n", This, ppv);
*ppv = &This->IHTMLStyle_iface;
}else if(IsEqualGUID(&IID_IHTMLStyle2, riid)) {
TRACE("(%p)->(IID_IHTMLStyle2 %p)\n", This, ppv);
*ppv = &This->IHTMLStyle2_iface;
}else if(IsEqualGUID(&IID_IHTMLStyle3, riid)) {
TRACE("(%p)->(IID_IHTMLStyle3 %p)\n", This, ppv);
*ppv = &This->IHTMLStyle3_iface;
}else if(IsEqualGUID(&IID_IHTMLStyle4, riid)) {
TRACE("(%p)->(IID_IHTMLStyle4 %p)\n", This, ppv);
*ppv = &This->IHTMLStyle4_iface;
}else if(IsEqualGUID(&IID_IHTMLStyle5, riid)) {
TRACE("(%p)->(IID_IHTMLStyle5 %p)\n", This, ppv);
*ppv = &This->IHTMLStyle5_iface;
}else if(IsEqualGUID(&IID_IHTMLStyle6, riid)) {
TRACE("(%p)->(IID_IHTMLStyle6 %p)\n", This, ppv);
*ppv = &This->IHTMLStyle6_iface;
}else if(dispex_query_interface(&This->dispex, riid, ppv)) {
return *ppv ? S_OK : E_NOINTERFACE;
}else {
*ppv = NULL;
WARN("unsupported iface %s\n", debugstr_mshtml_guid(riid));
return E_NOINTERFACE;
}
if(*ppv) {
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
WARN("unsupported %s\n", debugstr_guid(riid));
return E_NOINTERFACE;
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
static ULONG WINAPI HTMLStyle_AddRef(IHTMLStyle *iface)
@ -1059,15 +1072,19 @@ static HRESULT WINAPI HTMLStyle_get_backgroundRepeat(IHTMLStyle *iface, BSTR *p)
static HRESULT WINAPI HTMLStyle_put_backgroundAttachment(IHTMLStyle *iface, BSTR v)
{
HTMLStyle *This = impl_from_IHTMLStyle(iface);
FIXME("(%p)->(%s)\n", This, debugstr_w(v));
return E_NOTIMPL;
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
return set_style_attr(This, STYLEID_BACKGROUND_ATTACHMENT, v, 0);
}
static HRESULT WINAPI HTMLStyle_get_backgroundAttachment(IHTMLStyle *iface, BSTR *p)
{
HTMLStyle *This = impl_from_IHTMLStyle(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
TRACE("(%p)->(%p)\n", This, p);
return get_style_attr(This, STYLEID_BACKGROUND_ATTACHMENT, p);
}
static HRESULT WINAPI HTMLStyle_put_backgroundPosition(IHTMLStyle *iface, BSTR v)
@ -1441,15 +1458,19 @@ static HRESULT WINAPI HTMLStyle_get_verticalAlign(IHTMLStyle *iface, VARIANT *p)
static HRESULT WINAPI HTMLStyle_put_textTransform(IHTMLStyle *iface, BSTR v)
{
HTMLStyle *This = impl_from_IHTMLStyle(iface);
FIXME("(%p)->(%s)\n", This, debugstr_w(v));
return E_NOTIMPL;
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
return set_style_attr(This, STYLEID_TEXT_TRANSFORM, v, 0);
}
static HRESULT WINAPI HTMLStyle_get_textTransform(IHTMLStyle *iface, BSTR *p)
{
HTMLStyle *This = impl_from_IHTMLStyle(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
TRACE("(%p)->(%p)\n", This, p);
return get_style_attr(This, STYLEID_TEXT_TRANSFORM, p);
}
static HRESULT WINAPI HTMLStyle_put_textAlign(IHTMLStyle *iface, BSTR v)
@ -1473,29 +1494,37 @@ static HRESULT WINAPI HTMLStyle_get_textAlign(IHTMLStyle *iface, BSTR *p)
static HRESULT WINAPI HTMLStyle_put_textIndent(IHTMLStyle *iface, VARIANT v)
{
HTMLStyle *This = impl_from_IHTMLStyle(iface);
FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
return E_NOTIMPL;
TRACE("(%p)->(%s)\n", This, debugstr_variant(&v));
return set_nsstyle_attr_var(This->nsstyle, STYLEID_TEXT_INDENT, &v, ATTR_FIX_PX);
}
static HRESULT WINAPI HTMLStyle_get_textIndent(IHTMLStyle *iface, VARIANT *p)
{
HTMLStyle *This = impl_from_IHTMLStyle(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
TRACE("(%p)->(%p)\n", This, p);
return get_nsstyle_attr_var(This->nsstyle, STYLEID_TEXT_INDENT, p, 0);
}
static HRESULT WINAPI HTMLStyle_put_lineHeight(IHTMLStyle *iface, VARIANT v)
{
HTMLStyle *This = impl_from_IHTMLStyle(iface);
FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
return E_NOTIMPL;
TRACE("(%p)->(%s)\n", This, debugstr_variant(&v));
return set_nsstyle_attr_var(This->nsstyle, STYLEID_LINE_HEIGHT, &v, 0);
}
static HRESULT WINAPI HTMLStyle_get_lineHeight(IHTMLStyle *iface, VARIANT *p)
{
HTMLStyle *This = impl_from_IHTMLStyle(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
TRACE("(%p)->(%p)\n", This, p);
return get_nsstyle_attr_var(This->nsstyle, STYLEID_LINE_HEIGHT, p, 0);
}
static HRESULT WINAPI HTMLStyle_put_marginTop(IHTMLStyle *iface, VARIANT v)
@ -2172,15 +2201,19 @@ static HRESULT WINAPI HTMLStyle_get_listStyleType(IHTMLStyle *iface, BSTR *p)
static HRESULT WINAPI HTMLStyle_put_listStylePosition(IHTMLStyle *iface, BSTR v)
{
HTMLStyle *This = impl_from_IHTMLStyle(iface);
FIXME("(%p)->(%s)\n", This, debugstr_w(v));
return E_NOTIMPL;
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
return set_style_attr(This, STYLEID_LISTSTYLEPOSITION, v, 0);
}
static HRESULT WINAPI HTMLStyle_get_listStylePosition(IHTMLStyle *iface, BSTR *p)
{
HTMLStyle *This = impl_from_IHTMLStyle(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
TRACE("(%p)->(%p)\n", This, p);
return get_style_attr(This, STYLEID_LISTSTYLEPOSITION, p);
}
static HRESULT WINAPI HTMLStyle_put_listStyleImage(IHTMLStyle *iface, BSTR v)
@ -2200,15 +2233,19 @@ static HRESULT WINAPI HTMLStyle_get_listStyleImage(IHTMLStyle *iface, BSTR *p)
static HRESULT WINAPI HTMLStyle_put_listStyle(IHTMLStyle *iface, BSTR v)
{
HTMLStyle *This = impl_from_IHTMLStyle(iface);
FIXME("(%p)->(%s)\n", This, debugstr_w(v));
return E_NOTIMPL;
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
return set_style_attr(This, STYLEID_LIST_STYLE, v, 0);
}
static HRESULT WINAPI HTMLStyle_get_listStyle(IHTMLStyle *iface, BSTR *p)
{
HTMLStyle *This = impl_from_IHTMLStyle(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
TRACE("(%p)->(%p)\n", This, p);
return get_style_attr(This, STYLEID_LIST_STYLE, p);
}
static HRESULT WINAPI HTMLStyle_put_whiteSpace(IHTMLStyle *iface, BSTR v)
@ -2406,15 +2443,19 @@ static HRESULT WINAPI HTMLStyle_get_cssText(IHTMLStyle *iface, BSTR *p)
static HRESULT WINAPI HTMLStyle_put_pixelTop(IHTMLStyle *iface, LONG v)
{
HTMLStyle *This = impl_from_IHTMLStyle(iface);
FIXME("(%p)->()\n", This);
return E_NOTIMPL;
TRACE("(%p)->(%d)\n", This, v);
return set_style_pxattr(This->nsstyle, STYLEID_TOP, v);
}
static HRESULT WINAPI HTMLStyle_get_pixelTop(IHTMLStyle *iface, LONG *p)
{
HTMLStyle *This = impl_from_IHTMLStyle(iface);
FIXME("(%p)->()\n", This);
return E_NOTIMPL;
TRACE("(%p)->(%p)\n", This, p);
return get_nsstyle_pixel_val(This, STYLEID_TOP, p);
}
static HRESULT WINAPI HTMLStyle_put_pixelLeft(IHTMLStyle *iface, LONG v)
@ -2447,22 +2488,28 @@ static HRESULT WINAPI HTMLStyle_put_pixelWidth(IHTMLStyle *iface, LONG v)
static HRESULT WINAPI HTMLStyle_get_pixelWidth(IHTMLStyle *iface, LONG *p)
{
HTMLStyle *This = impl_from_IHTMLStyle(iface);
FIXME("(%p)->()\n", This);
return E_NOTIMPL;
TRACE("(%p)->(%p)\n", This, p);
return get_nsstyle_pixel_val(This, STYLEID_WIDTH, p);
}
static HRESULT WINAPI HTMLStyle_put_pixelHeight(IHTMLStyle *iface, LONG v)
{
HTMLStyle *This = impl_from_IHTMLStyle(iface);
FIXME("(%p)->()\n", This);
return E_NOTIMPL;
TRACE("(%p)->(%d)\n", This, v);
return set_style_pxattr(This->nsstyle, STYLEID_HEIGHT, v);
}
static HRESULT WINAPI HTMLStyle_get_pixelHeight(IHTMLStyle *iface, LONG *p)
{
HTMLStyle *This = impl_from_IHTMLStyle(iface);
FIXME("(%p)->()\n", This);
return E_NOTIMPL;
TRACE("(%p)->(%p)\n", This, p);
return get_nsstyle_pixel_val(This, STYLEID_HEIGHT, p);
}
static HRESULT WINAPI HTMLStyle_put_posTop(IHTMLStyle *iface, float v)

View file

@ -16,6 +16,8 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#pragma once
struct HTMLStyle {
DispatchEx dispex;
IHTMLStyle IHTMLStyle_iface;
@ -34,6 +36,7 @@ struct HTMLStyle {
/* NOTE: Make sure to keep in sync with style_tbl in htmlstyle.c */
typedef enum {
STYLEID_BACKGROUND,
STYLEID_BACKGROUND_ATTACHMENT,
STYLEID_BACKGROUND_COLOR,
STYLEID_BACKGROUND_IMAGE,
STYLEID_BACKGROUND_POSITION,
@ -78,6 +81,8 @@ typedef enum {
STYLEID_LEFT,
STYLEID_LETTER_SPACING,
STYLEID_LINE_HEIGHT,
STYLEID_LIST_STYLE,
STYLEID_LISTSTYLEPOSITION,
STYLEID_LISTSTYLETYPE,
STYLEID_MARGIN,
STYLEID_MARGIN_BOTTOM,
@ -85,6 +90,7 @@ typedef enum {
STYLEID_MARGIN_RIGHT,
STYLEID_MARGIN_TOP,
STYLEID_MIN_HEIGHT,
STYLEID_MIN_WIDTH,
STYLEID_OUTLINE,
STYLEID_OVERFLOW,
STYLEID_OVERFLOW_X,
@ -98,9 +104,11 @@ typedef enum {
STYLEID_PAGE_BREAK_BEFORE,
STYLEID_POSITION,
STYLEID_RIGHT,
STYLEID_TABLE_LAYOUT,
STYLEID_TEXT_ALIGN,
STYLEID_TEXT_DECORATION,
STYLEID_TEXT_INDENT,
STYLEID_TEXT_TRANSFORM,
STYLEID_TOP,
STYLEID_VERTICAL_ALIGN,
STYLEID_VISIBILITY,

View file

@ -78,15 +78,19 @@ static HRESULT WINAPI HTMLStyle2_Invoke(IHTMLStyle2 *iface, DISPID dispIdMember,
static HRESULT WINAPI HTMLStyle2_put_tableLayout(IHTMLStyle2 *iface, BSTR v)
{
HTMLStyle *This = impl_from_IHTMLStyle2(iface);
FIXME("(%p)->(%s)\n", This, debugstr_w(v));
return E_NOTIMPL;
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
return set_nsstyle_attr(This->nsstyle, STYLEID_TABLE_LAYOUT, v, 0);
}
static HRESULT WINAPI HTMLStyle2_get_tableLayout(IHTMLStyle2 *iface, BSTR *p)
{
HTMLStyle *This = impl_from_IHTMLStyle2(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
TRACE("(%p)->(%p)\n", This, p);
return get_nsstyle_attr(This->nsstyle, STYLEID_TABLE_LAYOUT, p, 0);
}
static HRESULT WINAPI HTMLStyle2_put_borderCollapse(IHTMLStyle2 *iface, BSTR v)

View file

@ -530,15 +530,19 @@ static HRESULT WINAPI HTMLStyle5_get_maxHeight(IHTMLStyle5 *iface, VARIANT *p)
static HRESULT WINAPI HTMLStyle5_put_minWidth(IHTMLStyle5 *iface, VARIANT v)
{
HTMLStyle *This = impl_from_IHTMLStyle5(iface);
FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
return E_NOTIMPL;
TRACE("(%p)->(%s)\n", This, debugstr_variant(&v));
return set_nsstyle_attr_var(This->nsstyle, STYLEID_MIN_WIDTH, &v, ATTR_FIX_PX);
}
static HRESULT WINAPI HTMLStyle5_get_minWidth(IHTMLStyle5 *iface, VARIANT *p)
{
HTMLStyle *This = impl_from_IHTMLStyle5(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
TRACE("(%p)->(%p)\n", This, p);
return get_nsstyle_attr_var(This->nsstyle, STYLEID_MIN_WIDTH, p, 0);
}
static HRESULT WINAPI HTMLStyle5_put_maxWidth(IHTMLStyle5 *iface, VARIANT v)

View file

@ -37,6 +37,7 @@ struct HTMLStyleSheetsCollection {
};
struct HTMLStyleSheetRulesCollection {
DispatchEx dispex;
IHTMLStyleSheetRulesCollection IHTMLStyleSheetRulesCollection_iface;
LONG ref;
@ -54,21 +55,22 @@ static HRESULT WINAPI HTMLStyleSheetRulesCollection_QueryInterface(IHTMLStyleShe
{
HTMLStyleSheetRulesCollection *This = impl_from_IHTMLStyleSheetRulesCollection(iface);
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
if(IsEqualGUID(&IID_IUnknown, riid)) {
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
*ppv = &This->IHTMLStyleSheetRulesCollection_iface;
}else if(IsEqualGUID(&IID_IHTMLStyleSheetRulesCollection, riid)) {
TRACE("(%p)->(IID_IHTMLStyleSheetRulesCollection %p)\n", This, ppv);
*ppv = &This->IHTMLStyleSheetRulesCollection_iface;
}else if(dispex_query_interface(&This->dispex, riid, ppv)) {
return *ppv ? S_OK : E_NOINTERFACE;
}else {
*ppv = NULL;
FIXME("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
return E_NOINTERFACE;
}
if(*ppv) {
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
FIXME("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
return E_NOINTERFACE;
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
static ULONG WINAPI HTMLStyleSheetRulesCollection_AddRef(IHTMLStyleSheetRulesCollection *iface)
@ -89,6 +91,7 @@ static ULONG WINAPI HTMLStyleSheetRulesCollection_Release(IHTMLStyleSheetRulesCo
TRACE("(%p) ref=%d\n", This, ref);
if(!ref) {
release_dispex(&This->dispex);
if(This->nslist)
nsIDOMCSSRuleList_Release(This->nslist);
heap_free(This);
@ -101,25 +104,22 @@ static HRESULT WINAPI HTMLStyleSheetRulesCollection_GetTypeInfoCount(
IHTMLStyleSheetRulesCollection *iface, UINT *pctinfo)
{
HTMLStyleSheetRulesCollection *This = impl_from_IHTMLStyleSheetRulesCollection(iface);
FIXME("(%p)->(%p)\n", This, pctinfo);
return E_NOTIMPL;
return IDispatchEx_GetTypeInfoCount(&This->dispex.IDispatchEx_iface, pctinfo);
}
static HRESULT WINAPI HTMLStyleSheetRulesCollection_GetTypeInfo(IHTMLStyleSheetRulesCollection *iface,
UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
{
HTMLStyleSheetRulesCollection *This = impl_from_IHTMLStyleSheetRulesCollection(iface);
FIXME("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo);
return E_NOTIMPL;
return IDispatchEx_GetTypeInfo(&This->dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
}
static HRESULT WINAPI HTMLStyleSheetRulesCollection_GetIDsOfNames(IHTMLStyleSheetRulesCollection *iface,
REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
{
HTMLStyleSheetRulesCollection *This = impl_from_IHTMLStyleSheetRulesCollection(iface);
FIXME("(%p)->(%s %p %u %u %p)\n", This, debugstr_guid(riid), rgszNames, cNames,
lcid, rgDispId);
return E_NOTIMPL;
return IDispatchEx_GetIDsOfNames(&This->dispex.IDispatchEx_iface, riid, rgszNames, cNames,
lcid, rgDispId);
}
static HRESULT WINAPI HTMLStyleSheetRulesCollection_Invoke(IHTMLStyleSheetRulesCollection *iface,
@ -127,9 +127,8 @@ static HRESULT WINAPI HTMLStyleSheetRulesCollection_Invoke(IHTMLStyleSheetRulesC
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
{
HTMLStyleSheetRulesCollection *This = impl_from_IHTMLStyleSheetRulesCollection(iface);
FIXME("(%p)->(%d %s %d %d %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid),
lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
return E_NOTIMPL;
return IDispatchEx_Invoke(&This->dispex.IDispatchEx_iface, dispIdMember, riid, lcid, wFlags,
pDispParams, pVarResult, pExcepInfo, puArgErr);
}
static HRESULT WINAPI HTMLStyleSheetRulesCollection_get_length(IHTMLStyleSheetRulesCollection *iface,
@ -172,6 +171,17 @@ static const IHTMLStyleSheetRulesCollectionVtbl HTMLStyleSheetRulesCollectionVtb
HTMLStyleSheetRulesCollection_item
};
static const tid_t HTMLStyleSheetRulesCollection_iface_tids[] = {
IHTMLStyleSheetRulesCollection_tid,
0
};
static dispex_static_data_t HTMLStyleSheetRulesCollection_dispex = {
NULL,
DispHTMLStyleSheetRulesCollection_tid,
NULL,
HTMLStyleSheetRulesCollection_iface_tids
};
static IHTMLStyleSheetRulesCollection *HTMLStyleSheetRulesCollection_Create(nsIDOMCSSRuleList *nslist)
{
HTMLStyleSheetRulesCollection *ret;
@ -181,6 +191,8 @@ static IHTMLStyleSheetRulesCollection *HTMLStyleSheetRulesCollection_Create(nsID
ret->ref = 1;
ret->nslist = nslist;
init_dispex(&ret->dispex, (IUnknown*)&ret->IHTMLStyleSheetRulesCollection_iface, &HTMLStyleSheetRulesCollection_dispex);
if(nslist)
nsIDOMCSSRuleList_AddRef(nslist);
@ -197,28 +209,24 @@ static HRESULT WINAPI HTMLStyleSheetsCollection_QueryInterface(IHTMLStyleSheetsC
{
HTMLStyleSheetsCollection *This = impl_from_IHTMLStyleSheetsCollection(iface);
*ppv = NULL;
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
if(IsEqualGUID(&IID_IUnknown, riid)) {
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
*ppv = &This->IHTMLStyleSheetsCollection_iface;
}else if(IsEqualGUID(&IID_IDispatch, riid)) {
TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
*ppv = &This->IHTMLStyleSheetsCollection_iface;
}else if(IsEqualGUID(&IID_IHTMLStyleSheetsCollection, riid)) {
TRACE("(%p)->(IID_IHTMLStyleSheetsCollection %p)\n", This, ppv);
*ppv = &This->IHTMLStyleSheetsCollection_iface;
}else if(dispex_query_interface(&This->dispex, riid, ppv)) {
return *ppv ? S_OK : E_NOINTERFACE;
}else {
*ppv = NULL;
WARN("unsupported %s\n", debugstr_mshtml_guid(riid));
return E_NOINTERFACE;
}
if(*ppv) {
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
WARN("unsupported %s\n", debugstr_guid(riid));
return E_NOINTERFACE;
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
static ULONG WINAPI HTMLStyleSheetsCollection_AddRef(IHTMLStyleSheetsCollection *iface)
@ -239,6 +247,7 @@ static ULONG WINAPI HTMLStyleSheetsCollection_Release(IHTMLStyleSheetsCollection
TRACE("(%p) ref=%d\n", This, ref);
if(!ref) {
release_dispex(&This->dispex);
if(This->nslist)
nsIDOMStyleSheetList_Release(This->nslist);
heap_free(This);
@ -389,28 +398,24 @@ static HRESULT WINAPI HTMLStyleSheet_QueryInterface(IHTMLStyleSheet *iface, REFI
{
HTMLStyleSheet *This = impl_from_IHTMLStyleSheet(iface);
*ppv = NULL;
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
if(IsEqualGUID(&IID_IUnknown, riid)) {
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
*ppv = &This->IHTMLStyleSheet_iface;
}else if(IsEqualGUID(&IID_IDispatch, riid)) {
TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
*ppv = &This->IHTMLStyleSheet_iface;
}else if(IsEqualGUID(&IID_IHTMLStyleSheet, riid)) {
TRACE("(%p)->(IID_IHTMLStyleSheet %p)\n", This, ppv);
*ppv = &This->IHTMLStyleSheet_iface;
}else if(dispex_query_interface(&This->dispex, riid, ppv)) {
return *ppv ? S_OK : E_NOINTERFACE;
}else {
*ppv = NULL;
WARN("unsupported %s\n", debugstr_mshtml_guid(riid));
return E_NOINTERFACE;
}
if(*ppv) {
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
WARN("unsupported %s\n", debugstr_guid(riid));
return E_NOINTERFACE;
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
static ULONG WINAPI HTMLStyleSheet_AddRef(IHTMLStyleSheet *iface)
@ -430,8 +435,12 @@ static ULONG WINAPI HTMLStyleSheet_Release(IHTMLStyleSheet *iface)
TRACE("(%p) ref=%d\n", This, ref);
if(!ref)
if(!ref) {
release_dispex(&This->dispex);
if(This->nsstylesheet)
nsIDOMCSSStyleSheet_Release(This->nsstylesheet);
heap_free(This);
}
return ref;
}
@ -447,7 +456,6 @@ static HRESULT WINAPI HTMLStyleSheet_GetTypeInfo(IHTMLStyleSheet *iface, UINT iT
LCID lcid, ITypeInfo **ppTInfo)
{
HTMLStyleSheet *This = impl_from_IHTMLStyleSheet(iface);
TRACE("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo);
return IDispatchEx_GetTypeInfo(&This->dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
}
@ -456,7 +464,6 @@ static HRESULT WINAPI HTMLStyleSheet_GetIDsOfNames(IHTMLStyleSheet *iface, REFII
LCID lcid, DISPID *rgDispId)
{
HTMLStyleSheet *This = impl_from_IHTMLStyleSheet(iface);
TRACE("(%p)->(%s %p %u %u %p)\n", This, debugstr_guid(riid), rgszNames, cNames, lcid, rgDispId);
return IDispatchEx_GetIDsOfNames(&This->dispex.IDispatchEx_iface, riid, rgszNames, cNames, lcid, rgDispId);
}
@ -465,8 +472,6 @@ static HRESULT WINAPI HTMLStyleSheet_Invoke(IHTMLStyleSheet *iface, DISPID dispI
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
{
HTMLStyleSheet *This = impl_from_IHTMLStyleSheet(iface);
TRACE("(%p)->(%d %s %d %d %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid),
lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
return IDispatchEx_Invoke(&This->dispex.IDispatchEx_iface, dispIdMember, riid, lcid, wFlags, pDispParams,
pVarResult, pExcepInfo, puArgErr);
}

View file

@ -43,6 +43,57 @@ static inline HTMLTable *impl_from_IHTMLTable3(IHTMLTable3 *iface)
return CONTAINING_RECORD(iface, HTMLTable, IHTMLTable3_iface);
}
static HRESULT var2str(const VARIANT *p, nsAString *nsstr)
{
BSTR str;
BOOL ret;
HRESULT hres;
switch(V_VT(p)) {
case VT_BSTR:
return nsAString_Init(nsstr, V_BSTR(p))?
S_OK : E_OUTOFMEMORY;
case VT_R8:
hres = VarBstrFromR8(V_R8(p), 0, 0, &str);
break;
case VT_R4:
hres = VarBstrFromR4(V_R4(p), 0, 0, &str);
break;
case VT_I4:
hres = VarBstrFromI4(V_I4(p), 0, 0, &str);
break;
default:
FIXME("unsupported arg %s\n", debugstr_variant(p));
return E_NOTIMPL;
}
if (FAILED(hres))
return hres;
ret = nsAString_Init(nsstr, str);
SysFreeString(str);
return ret ? S_OK : E_OUTOFMEMORY;
}
static HRESULT nsstr_to_truncated_bstr(const nsAString *nsstr, BSTR *ret_ptr)
{
const PRUnichar *str, *ptr, *end = NULL;
BSTR ret;
nsAString_GetData(nsstr, &str);
for(ptr = str; isdigitW(*ptr); ptr++);
if(*ptr == '.') {
for(end = ptr++; isdigitW(*ptr); ptr++);
if(*ptr)
end = NULL;
}
ret = end ? SysAllocStringLen(str, end-str) : SysAllocString(str);
*ret_ptr = ret;
return ret ? S_OK : E_OUTOFMEMORY;
}
static HRESULT WINAPI HTMLTable_QueryInterface(IHTMLTable *iface,
REFIID riid, void **ppv)
{
@ -128,15 +179,34 @@ static HRESULT WINAPI HTMLTable_get_border(IHTMLTable *iface, VARIANT *p)
static HRESULT WINAPI HTMLTable_put_frame(IHTMLTable *iface, BSTR v)
{
HTMLTable *This = impl_from_IHTMLTable(iface);
FIXME("(%p)->(%s)\n", This, debugstr_w(v));
return E_NOTIMPL;
nsAString str;
nsresult nsres;
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
nsAString_InitDepend(&str, v);
nsres = nsIDOMHTMLTableElement_SetFrame(This->nstable, &str);
nsAString_Finish(&str);
if (NS_FAILED(nsres)) {
ERR("SetFrame(%s) failed: %08x\n", debugstr_w(v), nsres);
return E_FAIL;
}
return S_OK;
}
static HRESULT WINAPI HTMLTable_get_frame(IHTMLTable *iface, BSTR *p)
{
HTMLTable *This = impl_from_IHTMLTable(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
nsAString str;
nsresult nsres;
TRACE("(%p)->(%p)\n", This, p);
nsAString_Init(&str, NULL);
nsres = nsIDOMHTMLTableElement_GetFrame(This->nstable, &str);
return return_nsstr(nsres, &str, p);
}
static HRESULT WINAPI HTMLTable_put_rules(IHTMLTable *iface, BSTR v)
@ -237,11 +307,11 @@ static HRESULT WINAPI HTMLTable_put_bgColor(IHTMLTable *iface, VARIANT v)
TRACE("(%p)->(%s)\n", This, debugstr_variant(&v));
nsAString_InitDepend(&val, V_BSTR(&v));
variant_to_nscolor(&v, &val);
if(!variant_to_nscolor(&v, &val))
return S_OK;
nsres = nsIDOMHTMLTableElement_SetBgColor(This->nstable, &val);
nsAString_Finish(&val);
if (NS_FAILED(nsres)){
ERR("Set BgColor(%s) failed!\n", debugstr_variant(&v));
return E_FAIL;
@ -381,15 +451,52 @@ static HRESULT WINAPI HTMLTable_get_rows(IHTMLTable *iface, IHTMLElementCollecti
static HRESULT WINAPI HTMLTable_put_width(IHTMLTable *iface, VARIANT v)
{
HTMLTable *This = impl_from_IHTMLTable(iface);
FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
return E_NOTIMPL;
nsAString val;
HRESULT hres;
nsresult nsres;
TRACE("(%p)->(%s)\n", This, debugstr_variant(&v));
hres = var2str(&v, &val);
if (FAILED(hres)){
ERR("Set Width(%s) failed when initializing a nsAString, err = %08x\n",
debugstr_variant(&v), hres);
return hres;
}
nsres = nsIDOMHTMLTableElement_SetWidth(This->nstable, &val);
nsAString_Finish(&val);
if (NS_FAILED(nsres)){
ERR("Set Width(%s) failed, err = %08x\n", debugstr_variant(&v), nsres);
return E_FAIL;
}
return S_OK;
}
static HRESULT WINAPI HTMLTable_get_width(IHTMLTable *iface, VARIANT *p)
{
HTMLTable *This = impl_from_IHTMLTable(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
nsAString val;
BSTR bstr;
nsresult nsres;
HRESULT hres;
TRACE("(%p)->(%p)\n", This, p);
nsAString_Init(&val, NULL);
nsres = nsIDOMHTMLTableElement_GetWidth(This->nstable, &val);
if (NS_FAILED(nsres)){
ERR("Get Width failed!\n");
nsAString_Finish(&val);
return E_FAIL;
}
hres = nsstr_to_truncated_bstr(&val, &bstr);
nsAString_Finish(&val);
V_VT(p) = VT_BSTR;
V_BSTR(p) = bstr;
return hres;
}
static HRESULT WINAPI HTMLTable_put_height(IHTMLTable *iface, VARIANT v)
@ -520,15 +627,41 @@ static HRESULT WINAPI HTMLTable_deleteCaption(IHTMLTable *iface)
static HRESULT WINAPI HTMLTable_insertRow(IHTMLTable *iface, LONG index, IDispatch **row)
{
HTMLTable *This = impl_from_IHTMLTable(iface);
FIXME("(%p)->(%d %p)\n", This, index, row);
return E_NOTIMPL;
nsIDOMHTMLElement *nselem;
HTMLElement *elem;
nsresult nsres;
HRESULT hres;
TRACE("(%p)->(%d %p)\n", This, index, row);
nsres = nsIDOMHTMLTableElement_InsertRow(This->nstable, index, &nselem);
if(NS_FAILED(nsres)) {
ERR("Insert Row at %d failed: %08x\n", index, nsres);
return E_FAIL;
}
hres = HTMLTableRow_Create(This->element.node.doc, nselem, &elem);
nsIDOMHTMLElement_Release(nselem);
if (FAILED(hres)) {
ERR("Create TableRow failed: %08x\n", hres);
return hres;
}
*row = (IDispatch *)&elem->IHTMLElement_iface;
return S_OK;
}
static HRESULT WINAPI HTMLTable_deleteRow(IHTMLTable *iface, LONG index)
{
HTMLTable *This = impl_from_IHTMLTable(iface);
FIXME("(%p)->(%d)\n", This, index);
return E_NOTIMPL;
nsresult nsres;
TRACE("(%p)->(%d)\n", This, index);
nsres = nsIDOMHTMLTableElement_DeleteRow(This->nstable, index);
if(NS_FAILED(nsres)) {
ERR("Delete Row failed: %08x\n", nsres);
return E_FAIL;
}
return S_OK;
}
static HRESULT WINAPI HTMLTable_get_readyState(IHTMLTable *iface, BSTR *p)
@ -767,15 +900,35 @@ static HRESULT WINAPI HTMLTable3_Invoke(IHTMLTable3 *iface, DISPID dispIdMember,
static HRESULT WINAPI HTMLTable3_put_summary(IHTMLTable3 *iface, BSTR v)
{
HTMLTable *This = impl_from_IHTMLTable3(iface);
FIXME("(%p)->(%s)\n", This, debugstr_w(v));
return E_NOTIMPL;
nsAString str;
nsresult nsres;
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
nsAString_InitDepend(&str, v);
nsres = nsIDOMHTMLTableElement_SetSummary(This->nstable, &str);
nsAString_Finish(&str);
if (NS_FAILED(nsres)) {
ERR("Set summary(%s) failed: %08x\n", debugstr_w(v), nsres);
return E_FAIL;
}
return S_OK;
}
static HRESULT WINAPI HTMLTable3_get_summary(IHTMLTable3 *iface, BSTR * p)
{
HTMLTable *This = impl_from_IHTMLTable3(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
nsAString str;
nsresult nsres;
TRACE("(%p)->(%p)\n", This, p);
nsAString_Init(&str, NULL);
nsres = nsIDOMHTMLTableElement_GetSummary(This->nstable, &str);
return return_nsstr(nsres, &str, p);
}
static const IHTMLTable3Vtbl HTMLTable3Vtbl = {
@ -812,10 +965,10 @@ static HRESULT HTMLTable_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
*ppv = &This->IHTMLTable_iface;
}else if(IsEqualGUID(&IID_IHTMLTable2, riid)) {
TRACE("(%p)->(IID_IHTMLTable2 %p)\n", This, ppv);
*ppv = &This->IHTMLTable_iface;
*ppv = &This->IHTMLTable2_iface;
}else if(IsEqualGUID(&IID_IHTMLTable3, riid)) {
TRACE("(%p)->(IID_IHTMLTable3 %p)\n", This, ppv);
*ppv = &This->IHTMLTable_iface;
*ppv = &This->IHTMLTable3_iface;
}
if(*ppv) {
@ -844,6 +997,8 @@ static const NodeImplVtbl HTMLTableImplVtbl = {
static const tid_t HTMLTable_iface_tids[] = {
HTMLELEMENT_TIDS,
IHTMLTable_tid,
IHTMLTable2_tid,
IHTMLTable3_tid,
0
};
@ -865,6 +1020,8 @@ HRESULT HTMLTable_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem, HTMLE
ret->element.node.vtbl = &HTMLTableImplVtbl;
ret->IHTMLTable_iface.lpVtbl = &HTMLTableVtbl;
ret->IHTMLTable2_iface.lpVtbl = &HTMLTable2Vtbl;
ret->IHTMLTable3_iface.lpVtbl = &HTMLTable3Vtbl;
HTMLElement_Init(&ret->element, doc, nselem, &HTMLTable_dispex);

View file

@ -22,6 +22,8 @@ typedef struct {
HTMLElement element;
IHTMLTableCell IHTMLTableCell_iface;
nsIDOMHTMLTableCellElement *nscell;
} HTMLTableCell;
static inline HTMLTableCell *impl_from_IHTMLTableCell(IHTMLTableCell *iface)
@ -112,15 +114,33 @@ static HRESULT WINAPI HTMLTableCell_get_colSpan(IHTMLTableCell *iface, LONG *p)
static HRESULT WINAPI HTMLTableCell_put_align(IHTMLTableCell *iface, BSTR v)
{
HTMLTableCell *This = impl_from_IHTMLTableCell(iface);
FIXME("(%p)->(%s)\n", This, debugstr_w(v));
return E_NOTIMPL;
nsAString str;
nsresult nsres;
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
nsAString_InitDepend(&str, v);
nsres = nsIDOMHTMLTableCellElement_SetAlign(This->nscell, &str);
nsAString_Finish(&str);
if (NS_FAILED(nsres)) {
ERR("Set Align failed: %08x\n", nsres);
return E_FAIL;
}
return S_OK;
}
static HRESULT WINAPI HTMLTableCell_get_align(IHTMLTableCell *iface, BSTR *p)
{
HTMLTableCell *This = impl_from_IHTMLTableCell(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
nsAString str;
nsresult nsres;
TRACE("(%p)->(%p)\n", This, p);
nsAString_Init(&str, NULL);
nsres = nsIDOMHTMLTableCellElement_GetAlign(This->nscell, &str);
return return_nsstr(nsres, &str, p);
}
static HRESULT WINAPI HTMLTableCell_put_vAlign(IHTMLTableCell *iface, BSTR v)
@ -140,15 +160,47 @@ static HRESULT WINAPI HTMLTableCell_get_vAlign(IHTMLTableCell *iface, BSTR *p)
static HRESULT WINAPI HTMLTableCell_put_bgColor(IHTMLTableCell *iface, VARIANT v)
{
HTMLTableCell *This = impl_from_IHTMLTableCell(iface);
FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
return E_NOTIMPL;
nsAString strColor;
nsresult nsres;
TRACE("(%p)->(%s)\n", This, debugstr_variant(&v));
if(!variant_to_nscolor(&v, &strColor))
return S_OK;
nsres = nsIDOMHTMLTableCellElement_SetBgColor(This->nscell, &strColor);
nsAString_Finish(&strColor);
if(NS_FAILED(nsres)) {
ERR("SetBgColor(%s) failed: %08x\n", debugstr_variant(&v), nsres);
return E_FAIL;
}
return S_OK;
}
static HRESULT WINAPI HTMLTableCell_get_bgColor(IHTMLTableCell *iface, VARIANT *p)
{
HTMLTableCell *This = impl_from_IHTMLTableCell(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
nsAString strColor;
nsresult nsres;
HRESULT hres;
TRACE("(%p)->(%p)\n", This, p);
nsAString_Init(&strColor, NULL);
nsres = nsIDOMHTMLTableCellElement_GetBgColor(This->nscell, &strColor);
if(NS_SUCCEEDED(nsres)) {
const PRUnichar *color;
nsAString_GetData(&strColor, &color);
V_VT(p) = VT_BSTR;
hres = nscolor_to_str(color, &V_BSTR(p));
}else {
ERR("GetBgColor failed: %08x\n", nsres);
hres = E_FAIL;
}
nsAString_Finish(&strColor);
return hres;
}
static HRESULT WINAPI HTMLTableCell_put_noWrap(IHTMLTableCell *iface, VARIANT_BOOL v)
@ -252,8 +304,16 @@ static HRESULT WINAPI HTMLTableCell_get_height(IHTMLTableCell *iface, VARIANT *p
static HRESULT WINAPI HTMLTableCell_get_cellIndex(IHTMLTableCell *iface, LONG *p)
{
HTMLTableCell *This = impl_from_IHTMLTableCell(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
nsresult nsres;
TRACE("(%p)->(%p)\n", This, p);
nsres = nsIDOMHTMLTableCellElement_GetCellIndex(This->nscell, p);
if (NS_FAILED(nsres)) {
ERR("Get CellIndex failed: %08x\n", nsres);
return E_FAIL;
}
return S_OK;
}
static const IHTMLTableCellVtbl HTMLTableCellVtbl = {
@ -349,6 +409,7 @@ static dispex_static_data_t HTMLTableCell_dispex = {
HRESULT HTMLTableCell_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem, HTMLElement **elem)
{
HTMLTableCell *ret;
nsresult nsres;
ret = heap_alloc_zero(sizeof(*ret));
if(!ret)
@ -359,6 +420,12 @@ HRESULT HTMLTableCell_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem, H
HTMLElement_Init(&ret->element, doc, nselem, &HTMLTableCell_dispex);
nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLTableCellElement, (void**)&ret->nscell);
/* Share nscell reference with nsnode */
assert(nsres == NS_OK && (nsIDOMNode*)ret->nscell == ret->element.node.nsnode);
nsIDOMNode_Release(ret->element.node.nsnode);
*elem = &ret->element;
return S_OK;
}

View file

@ -161,8 +161,9 @@ static HRESULT WINAPI HTMLTableRow_put_bgColor(IHTMLTableRow *iface, VARIANT v)
TRACE("(%p)->(%s)\n", This, debugstr_variant(&v));
nsAString_InitDepend(&val, V_BSTR(&v));
variant_to_nscolor(&v, &val);
if (!variant_to_nscolor(&v, &val))
return S_OK;
nsres = nsIDOMHTMLTableRowElement_SetBgColor(This->nsrow, &val);
nsAString_Finish(&val);
@ -293,15 +294,41 @@ static HRESULT WINAPI HTMLTableRow_get_cells(IHTMLTableRow *iface, IHTMLElementC
static HRESULT WINAPI HTMLTableRow_insertCell(IHTMLTableRow *iface, LONG index, IDispatch **row)
{
HTMLTableRow *This = impl_from_IHTMLTableRow(iface);
FIXME("(%p)->(%d %p)\n", This, index, row);
return E_NOTIMPL;
nsIDOMHTMLElement *nselem;
HTMLElement *elem;
nsresult nsres;
HRESULT hres;
TRACE("(%p)->(%d %p)\n", This, index, row);
nsres = nsIDOMHTMLTableRowElement_InsertCell(This->nsrow, index, &nselem);
if(NS_FAILED(nsres)) {
ERR("Insert Cell at %d failed: %08x\n", index, nsres);
return E_FAIL;
}
hres = HTMLTableCell_Create(This->element.node.doc, nselem, &elem);
nsIDOMHTMLElement_Release(nselem);
if (FAILED(hres)) {
ERR("Create TableCell failed: %08x\n", hres);
return hres;
}
*row = (IDispatch *)&elem->IHTMLElement_iface;
return S_OK;
}
static HRESULT WINAPI HTMLTableRow_deleteCell(IHTMLTableRow *iface, LONG index)
{
HTMLTableRow *This = impl_from_IHTMLTableRow(iface);
FIXME("(%p)->(%d)\n", This, index);
return E_NOTIMPL;
nsresult nsres;
TRACE("(%p)->(%d)\n", This, index);
nsres = nsIDOMHTMLTableRowElement_DeleteCell(This->nsrow, index);
if(NS_FAILED(nsres)) {
ERR("Delete Cell failed: %08x\n", nsres);
return E_FAIL;
}
return S_OK;
}
static const IHTMLTableRowVtbl HTMLTableRowVtbl = {

View file

@ -117,59 +117,45 @@ static HRESULT WINAPI HTMLWindow2_QueryInterface(IHTMLWindow2 *iface, REFIID rii
{
HTMLWindow *This = impl_from_IHTMLWindow2(iface);
*ppv = NULL;
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
if(IsEqualGUID(&IID_IUnknown, riid)) {
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
*ppv = &This->IHTMLWindow2_iface;
}else if(IsEqualGUID(&IID_IDispatch, riid)) {
TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
*ppv = &This->IHTMLWindow2_iface;
}else if(IsEqualGUID(&IID_IDispatchEx, riid)) {
TRACE("(%p)->(IID_IDispatchEx %p)\n", This, ppv);
*ppv = &This->IDispatchEx_iface;
}else if(IsEqualGUID(&IID_IHTMLFramesCollection2, riid)) {
TRACE("(%p)->(IID_IHTMLFramesCollection2 %p)\n", This, ppv);
*ppv = &This->IHTMLWindow2_iface;
}else if(IsEqualGUID(&IID_IHTMLWindow2, riid)) {
TRACE("(%p)->(IID_IHTMLWindow2 %p)\n", This, ppv);
*ppv = &This->IHTMLWindow2_iface;
}else if(IsEqualGUID(&IID_IHTMLWindow3, riid)) {
TRACE("(%p)->(IID_IHTMLWindow3 %p)\n", This, ppv);
*ppv = &This->IHTMLWindow3_iface;
}else if(IsEqualGUID(&IID_IHTMLWindow4, riid)) {
TRACE("(%p)->(IID_IHTMLWindow4 %p)\n", This, ppv);
*ppv = &This->IHTMLWindow4_iface;
}else if(IsEqualGUID(&IID_IHTMLWindow5, riid)) {
TRACE("(%p)->(IID_IHTMLWindow5 %p)\n", This, ppv);
*ppv = &This->IHTMLWindow5_iface;
}else if(IsEqualGUID(&IID_IHTMLWindow6, riid)) {
TRACE("(%p)->(IID_IHTMLWindow6 %p)\n", This, ppv);
*ppv = &This->IHTMLWindow6_iface;
}else if(IsEqualGUID(&IID_IHTMLPrivateWindow, riid)) {
TRACE("(%p)->(IID_IHTMLPrivateWindow %p)\n", This, ppv);
*ppv = &This->IHTMLPrivateWindow_iface;
}else if(IsEqualGUID(&IID_IServiceProvider, riid)) {
TRACE("(%p)->(IID_IServiceProvider %p)\n", This, ppv);
*ppv = &This->IServiceProvider_iface;
}else if(IsEqualGUID(&IID_ITravelLogClient, riid)) {
TRACE("(%p)->(IID_ITravelLogClient %p)\n", This, ppv);
*ppv = &This->ITravelLogClient_iface;
}else if(IsEqualGUID(&IID_IObjectIdentity, riid)) {
TRACE("(%p)->(IID_IObjectIdentity %p)\n", This, ppv);
*ppv = &This->IObjectIdentity_iface;
}else if(dispex_query_interface(&This->inner_window->dispex, riid, ppv)) {
assert(!*ppv);
return E_NOINTERFACE;
}else {
*ppv = NULL;
WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
return E_NOINTERFACE;
}
if(*ppv) {
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
return E_NOINTERFACE;
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
static ULONG WINAPI HTMLWindow2_AddRef(IHTMLWindow2 *iface)
@ -254,6 +240,9 @@ static void release_inner_window(HTMLInnerWindow *This)
IOmHistory_Release(&This->history->IOmHistory_iface);
}
if(This->session_storage)
IHTMLStorage_Release(This->session_storage);
if(This->mon)
IMoniker_Release(This->mon);
@ -1000,8 +989,10 @@ static HRESULT WINAPI HTMLWindow2_get_window(IHTMLWindow2 *iface, IHTMLWindow2 *
static HRESULT WINAPI HTMLWindow2_navigate(IHTMLWindow2 *iface, BSTR url)
{
HTMLWindow *This = impl_from_IHTMLWindow2(iface);
FIXME("(%p)->(%s)\n", This, debugstr_w(url));
return E_NOTIMPL;
TRACE("(%p)->(%s)\n", This, debugstr_w(url));
return navigate_url(This->outer_window, url, This->outer_window->uri, BINDING_NAVIGATED);
}
static HRESULT WINAPI HTMLWindow2_put_onfocus(IHTMLWindow2 *iface, VARIANT v)
@ -1284,8 +1275,17 @@ static HRESULT WINAPI HTMLWindow2_blur(IHTMLWindow2 *iface)
static HRESULT WINAPI HTMLWindow2_scroll(IHTMLWindow2 *iface, LONG x, LONG y)
{
HTMLWindow *This = impl_from_IHTMLWindow2(iface);
FIXME("(%p)->(%d %d)\n", This, x, y);
return E_NOTIMPL;
nsresult nsres;
TRACE("(%p)->(%d %d)\n", This, x, y);
nsres = nsIDOMWindow_Scroll(This->outer_window->nswindow, x, y);
if(NS_FAILED(nsres)) {
ERR("ScrollBy failed: %08x\n", nsres);
return E_FAIL;
}
return S_OK;
}
static HRESULT WINAPI HTMLWindow2_get_clientInformation(IHTMLWindow2 *iface, IOmNavigator **p)
@ -2383,8 +2383,7 @@ static HRESULT WINAPI WindowDispEx_GetIDsOfNames(IDispatchEx *iface, REFIID riid
UINT i;
HRESULT hres;
WARN("(%p)->(%s %p %u %u %p)\n", This, debugstr_guid(riid), rgszNames, cNames,
lcid, rgDispId);
WARN("(%p)->(%s %p %u %u %p)\n", This, debugstr_guid(riid), rgszNames, cNames, lcid, rgDispId);
for(i=0; i < cNames; i++) {
/* We shouldn't use script's IDispatchEx here, so we shouldn't use GetDispID */
@ -2662,7 +2661,7 @@ static HRESULT WINAPI HTMLWindowSP_QueryService(IServiceProvider *iface, REFGUID
return IHTMLWindow2_QueryInterface(&This->IHTMLWindow2_iface, riid, ppv);
}
TRACE("(%p)->(%s %s %p)\n", This, debugstr_guid(guidService), debugstr_guid(riid), ppv);
TRACE("(%p)->(%s %s %p)\n", This, debugstr_mshtml_guid(guidService), debugstr_mshtml_guid(riid), ppv);
if(!This->outer_window->doc_obj)
return E_NOINTERFACE;

View file

@ -39,7 +39,7 @@ static HRESULT WINAPI wrapper_QueryInterface(IUnknown *iface, REFIID riid, void
{
iface_wrapper_t *This = impl_from_IUnknown(iface);
TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
return IUnknown_QueryInterface(This->ref_unk, riid, ppv);
}

View file

@ -33,20 +33,18 @@ static HRESULT WINAPI InPlaceFrame_QueryInterface(IOleInPlaceFrame *iface,
{
InPlaceFrame *This = impl_from_IOleInPlaceFrame(iface);
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
if(IsEqualGUID(&IID_IUnknown, riid)) {
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
*ppv = &This->IOleInPlaceFrame_iface;
}else if(IsEqualGUID(&IID_IOleWindow, riid)) {
TRACE("(%p)->(IID_IOleWindow %p)\n", This, ppv);
*ppv = &This->IOleInPlaceFrame_iface;
}else if(IsEqualGUID(&IID_IOleInPlaceUIWindow, riid)) {
TRACE("(%p)->(IID_IOleInPlaceUIWindow %p)\n", This, ppv);
*ppv = &This->IOleInPlaceFrame_iface;
}else if(IsEqualGUID(&IID_IOleInPlaceFrame, riid)) {
TRACE("(%p)->(IID_IOleInPlaceFrame %p)\n", This, ppv);
*ppv = &This->IOleInPlaceFrame_iface;
}else {
WARN("Unsopported interface %s\n", debugstr_guid(riid));
WARN("Unsopported interface %s\n", debugstr_mshtml_guid(riid));
*ppv = NULL;
return E_NOINTERFACE;
}
@ -217,17 +215,16 @@ static HRESULT WINAPI InPlaceUIWindow_QueryInterface(IOleInPlaceUIWindow *iface,
{
InPlaceUIWindow *This = impl_from_IOleInPlaceUIWindow(iface);
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
if(IsEqualGUID(&IID_IUnknown, riid)) {
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
*ppv = &This->IOleInPlaceUIWindow_iface;
}else if(IsEqualGUID(&IID_IOleWindow, riid)) {
TRACE("(%p)->(IID_IOleWindow %p)\n", This, ppv);
*ppv = &This->IOleInPlaceUIWindow_iface;
}else if(IsEqualGUID(&IID_IOleInPlaceUIWindow, riid)) {
TRACE("(%p)->(IID_IOleInPlaceUIWindow %p)\n", This, ppv);
*ppv = &This->IOleInPlaceUIWindow_iface;
}else {
WARN("Unsopported interface %s\n", debugstr_guid(riid));
WARN("Unsopported interface %s\n", debugstr_mshtml_guid(riid));
*ppv = NULL;
return E_NOINTERFACE;
}

View file

@ -34,18 +34,18 @@ STRINGTABLE
IDS_HTMLDOCUMENT "HTML dokument"
}
IDD_HYPERLINK DIALOG 0, 0, 250, 65
IDD_HYPERLINK DIALOG 0, 0, 255, 65
STYLE DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Hyperlink"
FONT 8, "MS Shell Dlg"
{
GROUPBOX "Information om Hyperlink'en", -1, 5, 5, 190, 55
LTEXT "&Type:", -1, 10, 22, 20, 10
LTEXT "&Type:", -1, 10, 22, 24, 10
COMBOBOX IDC_TYPE, 35, 20, 45, 100, WS_TABSTOP | WS_GROUP | WS_VSCROLL | CBS_DROPDOWNLIST | CBS_HASSTRINGS
LTEXT "&URL:", -1, 10, 42, 20, 10
LTEXT "&URL:", -1, 10, 42, 24, 10
EDITTEXT IDC_URL, 35, 40, 150, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 200, 10, 45, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Annuller", IDCANCEL, 200, 28, 45, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 200, 10, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Annuller", IDCANCEL, 200, 28, 50, 14, WS_GROUP | WS_TABSTOP
}
ID_PROMPT_DIALOG DIALOG 0, 0, 200, 90
@ -54,6 +54,6 @@ FONT 8, "MS Shell Dlg"
{
LTEXT "", ID_PROMPT_PROMPT, 10, 10, 180, 30
EDITTEXT ID_PROMPT_EDIT, 10, 45, 180, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 40, 65, 45, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Annuller", IDCANCEL, 115, 65, 45, 15, WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 40, 65, 50, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Annuller", IDCANCEL, 110, 65, 50, 15, WS_GROUP | WS_TABSTOP
}

View file

@ -33,18 +33,18 @@ STRINGTABLE
IDS_HTMLDOCUMENT "HTML-Dokument"
}
IDD_HYPERLINK DIALOG 0, 0, 250, 65
IDD_HYPERLINK DIALOG 0, 0, 255, 65
STYLE DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Hyperlink"
FONT 8, "MS Shell Dlg"
{
GROUPBOX "Hyperlink-Eigenschaften", -1, 5, 5, 190, 55
LTEXT "&Typ:", -1, 10, 22, 20, 10
LTEXT "&Type:", -1, 10, 22, 24, 10
COMBOBOX IDC_TYPE, 35, 20, 45, 100, WS_TABSTOP | WS_GROUP | WS_VSCROLL | CBS_DROPDOWNLIST | CBS_HASSTRINGS
LTEXT "&URL:", -1, 10, 42, 20, 10
LTEXT "&URL:", -1, 10, 42, 24, 10
EDITTEXT IDC_URL, 35, 40, 150, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 200, 10, 45, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Abbrechen", IDCANCEL, 200, 28, 45, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 200, 10, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Abbrechen", IDCANCEL, 200, 28, 50, 14, WS_GROUP | WS_TABSTOP
}
ID_PROMPT_DIALOG DIALOG 0, 0, 200, 90
@ -53,6 +53,6 @@ FONT 8, "MS Shell Dlg"
{
LTEXT "", ID_PROMPT_PROMPT, 10, 10, 180, 30
EDITTEXT ID_PROMPT_EDIT, 10, 45, 180, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 40, 65, 45, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Abbrechen", IDCANCEL, 115, 65, 45, 15, WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 40, 65, 50, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Abbrechen", IDCANCEL, 110, 65, 50, 15, WS_GROUP | WS_TABSTOP
}

View file

@ -31,18 +31,18 @@ STRINGTABLE
IDS_HTMLDOCUMENT "Documento HTML"
}
IDD_HYPERLINK DIALOG 0, 0, 250, 65
IDD_HYPERLINK DIALOG 0, 0, 255, 65
STYLE DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Enlace"
FONT 8, "MS Shell Dlg"
{
GROUPBOX "Información sobre el enlace", -1, 5, 5, 190, 55
LTEXT "&Tipo :", -1, 10, 22, 20, 10
LTEXT "&Tipo :", -1, 10, 22, 24, 10
COMBOBOX IDC_TYPE, 35, 20, 45, 100, WS_TABSTOP | WS_GROUP | WS_VSCROLL | CBS_DROPDOWNLIST | CBS_HASSTRINGS
LTEXT "&URL :", -1, 10, 42, 20, 10
LTEXT "&URL:", -1, 10, 42, 24, 10
EDITTEXT IDC_URL, 35, 40, 150, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Aceptar", IDOK, 200, 10, 45, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Anular", IDCANCEL, 200, 28, 45, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "Aceptar", IDOK, 200, 10, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Anular", IDCANCEL, 200, 28, 50, 14, WS_GROUP | WS_TABSTOP
}
ID_PROMPT_DIALOG DIALOG 0, 0, 200, 90
@ -51,6 +51,6 @@ FONT 8, "MS Shell Dlg"
{
LTEXT "", ID_PROMPT_PROMPT, 10, 10, 180, 30
EDITTEXT ID_PROMPT_EDIT, 10, 45, 180, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Aceptar", IDOK, 40, 65, 45, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Cancelar", IDCANCEL, 115, 65, 45, 15, WS_GROUP | WS_TABSTOP
PUSHBUTTON "Aceptar", IDOK, 40, 65, 50, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Cancelar", IDCANCEL, 110, 65, 50, 15, WS_GROUP | WS_TABSTOP
}

View file

@ -36,18 +36,18 @@ STRINGTABLE
IDS_HTMLDOCUMENT "Document HTML"
}
IDD_HYPERLINK DIALOG 0, 0, 250, 65
IDD_HYPERLINK DIALOG 0, 0, 255, 65
STYLE DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Hyperlien"
FONT 8, "MS Shell Dlg"
{
GROUPBOX "Informations sur l'hyperlien", -1, 5, 5, 190, 55
LTEXT "&Type :", -1, 10, 22, 20, 10
LTEXT "&Type:", -1, 10, 22, 24, 10
COMBOBOX IDC_TYPE, 35, 20, 45, 100, WS_TABSTOP | WS_GROUP | WS_VSCROLL | CBS_DROPDOWNLIST | CBS_HASSTRINGS
LTEXT "&URL :", -1, 10, 42, 20, 10
LTEXT "&URL:", -1, 10, 42, 24, 10
EDITTEXT IDC_URL, 35, 40, 150, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 200, 10, 45, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Annuler", IDCANCEL, 200, 28, 45, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 200, 10, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Annuler", IDCANCEL, 200, 28, 50, 14, WS_GROUP | WS_TABSTOP
}
ID_PROMPT_DIALOG DIALOG 0, 0, 200, 90
@ -56,6 +56,6 @@ FONT 8, "MS Shell Dlg"
{
LTEXT "", ID_PROMPT_PROMPT, 10, 10, 180, 30
EDITTEXT ID_PROMPT_EDIT, 10, 45, 180, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 40, 65, 45, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Annuler", IDCANCEL, 115, 65, 45, 15, WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 40, 65, 50, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Annuler", IDCANCEL, 110, 65, 50, 15, WS_GROUP | WS_TABSTOP
}

View file

@ -31,18 +31,18 @@ STRINGTABLE
IDS_HTMLDOCUMENT "מסמך HTML"
}
IDD_HYPERLINK DIALOG 0, 0, 250, 65
IDD_HYPERLINK DIALOG 0, 0, 255, 65
STYLE DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "קישור"
FONT 8, "MS Shell Dlg"
{
GROUPBOX "מידע קישור", -1, 5, 5, 190, 55
LTEXT "סוג:", -1, 10, 22, 20, 10
LTEXT "סוג:", -1, 10, 22, 24, 10
COMBOBOX IDC_TYPE, 35, 20, 45, 100, WS_TABSTOP | WS_GROUP | WS_VSCROLL | CBS_DROPDOWNLIST | CBS_HASSTRINGS
LTEXT "&URL:", -1, 10, 42, 20, 10
LTEXT "&URL:", -1, 10, 42, 24, 10
EDITTEXT IDC_URL, 35, 40, 150, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "אישור", IDOK, 200, 10, 45, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "ביטול", IDCANCEL, 200, 28, 45, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "אישור", IDOK, 200, 10, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "ביטול", IDCANCEL, 200, 28, 50, 14, WS_GROUP | WS_TABSTOP
}
ID_PROMPT_DIALOG DIALOG 0, 0, 200, 90
@ -51,6 +51,6 @@ FONT 8, "MS Shell Dlg"
{
LTEXT "", ID_PROMPT_PROMPT, 10, 10, 180, 30
EDITTEXT ID_PROMPT_EDIT, 10, 45, 180, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "אישור", IDOK, 40, 65, 45, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "ביטול", IDCANCEL, 115, 65, 45, 15, WS_GROUP | WS_TABSTOP
PUSHBUTTON "אישור", IDOK, 40, 65, 50, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "ביטול", IDCANCEL, 110, 65, 50, 15, WS_GROUP | WS_TABSTOP
}

View file

@ -32,18 +32,18 @@ STRINGTABLE
IDS_HTMLDOCUMENT "HTML dokumentum"
}
IDD_HYPERLINK DIALOG 0, 0, 250, 65
IDD_HYPERLINK DIALOG 0, 0, 255, 65
STYLE DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Hiperhivatkozás"
FONT 8, "MS Shell Dlg"
{
GROUPBOX "Hiperhivatkozás információ", -1, 5, 5, 190, 55
LTEXT "&Típus:", -1, 10, 22, 20, 10
LTEXT "&Típus:", -1, 10, 22, 24, 10
COMBOBOX IDC_TYPE, 35, 20, 45, 100, WS_TABSTOP | WS_GROUP | WS_VSCROLL | CBS_DROPDOWNLIST | CBS_HASSTRINGS
LTEXT "&URL:", -1, 10, 42, 20, 10
LTEXT "&URL:", -1, 10, 42, 24, 10
EDITTEXT IDC_URL, 35, 40, 150, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 200, 10, 45, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Mégse", IDCANCEL, 200, 28, 45, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 200, 10, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Mégse", IDCANCEL, 200, 28, 50, 14, WS_GROUP | WS_TABSTOP
}
ID_PROMPT_DIALOG DIALOG 0, 0, 200, 90
@ -52,6 +52,6 @@ FONT 8, "MS Shell Dlg"
{
LTEXT "", ID_PROMPT_PROMPT, 10, 10, 180, 30
EDITTEXT ID_PROMPT_EDIT, 10, 45, 180, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 40, 65, 45, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Mégse", IDCANCEL, 115, 65, 45, 15, WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 40, 65, 50, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Mégse", IDCANCEL, 110, 65, 50, 15, WS_GROUP | WS_TABSTOP
}

View file

@ -32,18 +32,18 @@ STRINGTABLE
IDS_HTMLDOCUMENT "Documento HTML"
}
IDD_HYPERLINK DIALOG 0, 0, 250, 65
IDD_HYPERLINK DIALOG 0, 0, 255, 65
STYLE DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Hyperlink"
FONT 8, "MS Shell Dlg"
{
GROUPBOX "Informazioni sull'hyperlink", -1, 5, 5, 190, 55
LTEXT "&Tipo:", -1, 10, 22, 20, 10
LTEXT "&Tipo:", -1, 10, 22, 24, 10
COMBOBOX IDC_TYPE, 35, 20, 45, 100, WS_TABSTOP | WS_GROUP | WS_VSCROLL | CBS_DROPDOWNLIST | CBS_HASSTRINGS
LTEXT "&URL:", -1, 10, 42, 20, 10
LTEXT "&URL:", -1, 10, 42, 24, 10
EDITTEXT IDC_URL, 35, 40, 150, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 200, 10, 45, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Annulla", IDCANCEL, 200, 28, 45, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 200, 10, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Annulla", IDCANCEL, 200, 28, 50, 14, WS_GROUP | WS_TABSTOP
}
ID_PROMPT_DIALOG DIALOG 0, 0, 200, 90
@ -52,6 +52,6 @@ FONT 8, "MS Shell Dlg"
{
LTEXT "", ID_PROMPT_PROMPT, 10, 10, 180, 30
EDITTEXT ID_PROMPT_EDIT, 10, 45, 180, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 40, 65, 45, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Annulla", IDCANCEL, 115, 65, 45, 15, WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 40, 65, 50, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Annulla", IDCANCEL, 110, 65, 50, 15, WS_GROUP | WS_TABSTOP
}

View file

@ -32,18 +32,18 @@ STRINGTABLE
IDS_HTMLDOCUMENT "HTML 文書"
}
IDD_HYPERLINK DIALOG 0, 0, 250, 65
IDD_HYPERLINK DIALOG 0, 0, 255, 65
STYLE DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "ハイパーリンク"
FONT 9, "MS Shell Dlg"
{
GROUPBOX "ハイパーリンクの情報", -1, 5, 5, 190, 55
LTEXT "種類(&T):", -1, 10, 22, 20, 10
LTEXT "種類(&T):", -1, 10, 22, 24, 10
COMBOBOX IDC_TYPE, 35, 20, 45, 100, WS_TABSTOP | WS_GROUP | WS_VSCROLL | CBS_DROPDOWNLIST | CBS_HASSTRINGS
LTEXT "&URL:", -1, 10, 42, 20, 10
LTEXT "&URL:", -1, 10, 42, 24, 10
EDITTEXT IDC_URL, 35, 40, 150, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 200, 10, 45, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "キャンセル", IDCANCEL, 200, 28, 45, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 200, 10, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "キャンセル", IDCANCEL, 200, 28, 50, 14, WS_GROUP | WS_TABSTOP
}
ID_PROMPT_DIALOG DIALOG 0, 0, 200, 90
@ -52,6 +52,6 @@ FONT 8, "MS Shell Dlg"
{
LTEXT "", ID_PROMPT_PROMPT, 10, 10, 180, 30
EDITTEXT ID_PROMPT_EDIT, 10, 45, 180, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 40, 65, 45, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "キャンセル", IDCANCEL, 115, 65, 45, 15, WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 40, 65, 50, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "キャンセル", IDCANCEL, 110, 65, 50, 15, WS_GROUP | WS_TABSTOP
}

View file

@ -30,26 +30,26 @@ STRINGTABLE
IDS_HTMLDOCUMENT "HTML 문서"
}
IDD_HYPERLINK DIALOG 0, 0, 250, 65
IDD_HYPERLINK DIALOG 0, 0, 255, 65
STYLE DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "하이퍼링크"
FONT 9, "MS Shell Dlg"
{
GROUPBOX "하이퍼링크 정보", -1, 5, 5, 190, 55
LTEXT "형식(&T):", -1, 10, 22, 24, 10
COMBOBOX IDC_TYPE, 35, 20, 45, 100, WS_TABSTOP | WS_GROUP | WS_VSCROLL | CBS_DROPDOWNLIST | CBS_HASSTRINGS
LTEXT "주소(&U):", -1, 10, 42, 24, 10
EDITTEXT IDC_URL, 35, 40, 150, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "확인", IDOK, 200, 10, 45, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "취소", IDCANCEL, 200, 28, 45, 14, WS_GROUP | WS_TABSTOP
GROUPBOX "하이퍼링크 정보", -1, 5, 5, 190, 55
LTEXT "형식(&T):", -1, 10, 22, 24, 10
COMBOBOX IDC_TYPE, 35, 20, 45, 100, WS_TABSTOP | WS_GROUP | WS_VSCROLL | CBS_DROPDOWNLIST | CBS_HASSTRINGS
LTEXT "주소(&U):", -1, 10, 42, 24, 10
EDITTEXT IDC_URL, 35, 40, 150, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "확인", IDOK, 200, 10, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "취소", IDCANCEL, 200, 28, 50, 14, WS_GROUP | WS_TABSTOP
}
ID_PROMPT_DIALOG DIALOG 0, 0, 200, 90
STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
FONT 8, "MS Shell Dlg"
{
LTEXT "", ID_PROMPT_PROMPT, 10, 10, 180, 30
EDITTEXT ID_PROMPT_EDIT, 10, 45, 180, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "확인", IDOK, 40, 65, 45, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "취소", IDCANCEL, 115, 65, 45, 15, WS_GROUP | WS_TABSTOP
LTEXT "", ID_PROMPT_PROMPT, 10, 10, 180, 30
EDITTEXT ID_PROMPT_EDIT, 10, 45, 180, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "확인", IDOK, 40, 65, 50, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "취소", IDCANCEL, 110, 65, 50, 15, WS_GROUP | WS_TABSTOP
}

View file

@ -32,18 +32,18 @@ STRINGTABLE
IDS_HTMLDOCUMENT "HTML dokumentas"
}
IDD_HYPERLINK DIALOG 0, 0, 250, 65
IDD_HYPERLINK DIALOG 0, 0, 255, 65
STYLE DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Saitas"
FONT 8, "MS Shell Dlg"
{
GROUPBOX "Saito informacija", -1, 5, 5, 190, 55
LTEXT "&Tipas:", -1, 10, 22, 20, 10
LTEXT "&Tipas:", -1, 10, 22, 24, 10
COMBOBOX IDC_TYPE, 35, 20, 45, 100, WS_TABSTOP | WS_GROUP | WS_VSCROLL | CBS_DROPDOWNLIST | CBS_HASSTRINGS
LTEXT "&URL:", -1, 10, 42, 20, 10
LTEXT "&URL:", -1, 10, 42, 24, 10
EDITTEXT IDC_URL, 35, 40, 150, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Gerai", IDOK, 200, 10, 45, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Atsisakyti", IDCANCEL, 200, 28, 45, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "Gerai", IDOK, 200, 10, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Atsisakyti", IDCANCEL, 200, 28, 50, 14, WS_GROUP | WS_TABSTOP
}
ID_PROMPT_DIALOG DIALOG 0, 0, 200, 90
@ -52,6 +52,6 @@ FONT 8, "MS Shell Dlg"
{
LTEXT "", ID_PROMPT_PROMPT, 10, 10, 180, 30
EDITTEXT ID_PROMPT_EDIT, 10, 45, 180, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Gerai", IDOK, 40, 65, 45, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Atsisakyti", IDCANCEL, 115, 65, 45, 15, WS_GROUP | WS_TABSTOP
PUSHBUTTON "Gerai", IDOK, 40, 65, 50, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Atsisakyti", IDCANCEL, 110, 65, 50, 15, WS_GROUP | WS_TABSTOP
}

View file

@ -31,18 +31,18 @@ STRINGTABLE
IDS_HTMLDOCUMENT "HTML document"
}
IDD_HYPERLINK DIALOG 0, 0, 250, 65
IDD_HYPERLINK DIALOG 0, 0, 255, 65
STYLE DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Webverwijzing"
FONT 8, "MS Shell Dlg"
{
GROUPBOX "Webverwijzing Informatie", -1, 5, 5, 190, 55
LTEXT "&Type:", -1, 10, 22, 20, 10
LTEXT "&Type:", -1, 10, 22, 24, 10
COMBOBOX IDC_TYPE, 35, 20, 45, 100, WS_TABSTOP | WS_GROUP | WS_VSCROLL | CBS_DROPDOWNLIST | CBS_HASSTRINGS
LTEXT "&URL:", -1, 10, 42, 20, 10
LTEXT "&URL:", -1, 10, 42, 24, 10
EDITTEXT IDC_URL, 35, 40, 150, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 200, 10, 45, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Annuleren", IDCANCEL, 200, 28, 45, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 200, 10, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Annuleren", IDCANCEL, 200, 28, 50, 14, WS_GROUP | WS_TABSTOP
}
ID_PROMPT_DIALOG DIALOG 0, 0, 200, 90
@ -51,6 +51,6 @@ FONT 8, "MS Shell Dlg"
{
LTEXT "", ID_PROMPT_PROMPT, 10, 10, 180, 30
EDITTEXT ID_PROMPT_EDIT, 10, 45, 180, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 40, 65, 45, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Annuleren", IDCANCEL, 115, 65, 45, 15, WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 40, 65, 50, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Annuleren", IDCANCEL, 110, 65, 50, 15, WS_GROUP | WS_TABSTOP
}

View file

@ -33,18 +33,18 @@ STRINGTABLE
IDS_HTMLDOCUMENT "HTML-dokument"
}
IDD_HYPERLINK DIALOG 0, 0, 250, 65
IDD_HYPERLINK DIALOG 0, 0, 255, 65
STYLE DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Hyperkobling"
FONT 8, "MS Shell Dlg"
{
GROUPBOX "Informasjon om koblingen", -1, 5, 5, 190, 55
LTEXT "&Type:", -1, 10, 22, 20, 10
LTEXT "&Type:", -1, 10, 22, 24, 10
COMBOBOX IDC_TYPE, 35, 20, 45, 100, WS_TABSTOP | WS_GROUP | WS_VSCROLL | CBS_DROPDOWNLIST | CBS_HASSTRINGS
LTEXT "&URL:", -1, 10, 42, 20, 10
LTEXT "&URL:", -1, 10, 42, 24, 10
EDITTEXT IDC_URL, 35, 40, 150, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 200, 10, 45, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Avbryt", IDCANCEL, 200, 28, 45, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 200, 10, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Avbryt", IDCANCEL, 200, 28, 50, 14, WS_GROUP | WS_TABSTOP
}
ID_PROMPT_DIALOG DIALOG 0, 0, 200, 90
@ -53,6 +53,6 @@ FONT 8, "MS Shell Dlg"
{
LTEXT "", ID_PROMPT_PROMPT, 10, 10, 180, 30
EDITTEXT ID_PROMPT_EDIT, 10, 45, 180, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 40, 65, 45, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Avbryt", IDCANCEL, 115, 65, 45, 15, WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 40, 65, 50, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Avbryt", IDCANCEL, 110, 65, 50, 15, WS_GROUP | WS_TABSTOP
}

View file

@ -31,18 +31,18 @@ STRINGTABLE
IDS_HTMLDOCUMENT "Dokument HTML"
}
IDD_HYPERLINK DIALOG 0, 0, 250, 65
IDD_HYPERLINK DIALOG 0, 0, 255, 65
STYLE DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Hiper³¹cze"
FONT 8, "MS Shell Dlg"
{
GROUPBOX "W³asnoœci hiper³¹cza", -1, 5, 5, 190, 55
LTEXT "&Typ:", -1, 10, 22, 20, 10
LTEXT "&Typ:", -1, 10, 22, 24, 10
COMBOBOX IDC_TYPE, 35, 20, 45, 100, WS_TABSTOP | WS_GROUP | WS_VSCROLL | CBS_DROPDOWNLIST | CBS_HASSTRINGS
LTEXT "&URL:", -1, 10, 42, 20, 10
LTEXT "&URL:", -1, 10, 42, 24, 10
EDITTEXT IDC_URL, 35, 40, 150, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 200, 10, 45, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Anuluj", IDCANCEL, 200, 28, 45, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 200, 10, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Anuluj", IDCANCEL, 200, 28, 50, 14, WS_GROUP | WS_TABSTOP
}
ID_PROMPT_DIALOG DIALOG 0, 0, 200, 90
@ -51,6 +51,6 @@ FONT 8, "MS Shell Dlg"
{
LTEXT "", ID_PROMPT_PROMPT, 10, 10, 180, 30
EDITTEXT ID_PROMPT_EDIT, 10, 45, 180, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 40, 65, 45, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Anuluj", IDCANCEL, 115, 65, 45, 15, WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 40, 65, 50, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Anuluj", IDCANCEL, 110, 65, 50, 15, WS_GROUP | WS_TABSTOP
}

View file

@ -32,34 +32,34 @@ STRINGTABLE
IDS_HTMLDOCUMENT "Documento HTML"
}
IDD_HYPERLINK DIALOG 0, 0, 250, 65
IDD_HYPERLINK DIALOG 0, 0, 255, 65
STYLE DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Hiperlink"
FONT 8, "MS Shell Dlg"
{
GROUPBOX "Informação do Hiperlink", -1, 5, 5, 190, 55
LTEXT "&Tipo:", -1, 10, 22, 20, 10
LTEXT "&Tipo:", -1, 10, 22, 24, 10
COMBOBOX IDC_TYPE, 35, 20, 45, 100, WS_TABSTOP | WS_GROUP | WS_VSCROLL | CBS_DROPDOWNLIST | CBS_HASSTRINGS
LTEXT "&URL:", -1, 10, 42, 20, 10
LTEXT "&URL:", -1, 10, 42, 24, 10
EDITTEXT IDC_URL, 35, 40, 150, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 200, 10, 45, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Cancelar", IDCANCEL, 200, 28, 45, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 200, 10, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Cancelar", IDCANCEL, 200, 28, 50, 14, WS_GROUP | WS_TABSTOP
}
LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE
IDD_HYPERLINK DIALOG 0, 0, 250, 65
IDD_HYPERLINK DIALOG 0, 0, 255, 65
STYLE DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Hiperligação"
FONT 8, "MS Shell Dlg"
{
GROUPBOX "Informação da Hiperligação", -1, 5, 5, 190, 55
LTEXT "&Tipo:", -1, 10, 22, 20, 10
LTEXT "&Tipo:", -1, 10, 22, 24, 10
COMBOBOX IDC_TYPE, 35, 20, 45, 100, WS_TABSTOP | WS_GROUP | WS_VSCROLL | CBS_DROPDOWNLIST | CBS_HASSTRINGS
LTEXT "&URL:", -1, 10, 42, 20, 10
LTEXT "&URL:", -1, 10, 42, 24, 10
EDITTEXT IDC_URL, 35, 40, 150, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 200, 10, 45, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Cancelar", IDCANCEL, 200, 28, 45, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 200, 10, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Cancelar", IDCANCEL, 200, 28, 50, 14, WS_GROUP | WS_TABSTOP
}
@ -71,6 +71,6 @@ FONT 8, "MS Shell Dlg"
{
LTEXT "", ID_PROMPT_PROMPT, 10, 10, 180, 30
EDITTEXT ID_PROMPT_EDIT, 10, 45, 180, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 40, 65, 45, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Cancelar", IDCANCEL, 115, 65, 45, 15, WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 40, 65, 50, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Cancelar", IDCANCEL, 110, 65, 50, 15, WS_GROUP | WS_TABSTOP
}

View file

@ -33,18 +33,18 @@ STRINGTABLE
IDS_HTMLDOCUMENT "Document HTML"
}
IDD_HYPERLINK DIALOG 0, 0, 250, 65
IDD_HYPERLINK DIALOG 0, 0, 255, 65
STYLE DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Hiperlegătură"
FONT 8, "MS Shell Dlg"
{
GROUPBOX "Informații de hiperlegătură", -1, 5, 5, 190, 55
LTEXT "&Tip:", -1, 10, 22, 20, 10
LTEXT "&Tip:", -1, 10, 22, 24, 10
COMBOBOX IDC_TYPE, 35, 20, 45, 100, WS_TABSTOP | WS_GROUP | WS_VSCROLL | CBS_DROPDOWNLIST | CBS_HASSTRINGS
LTEXT "&URL:", -1, 10, 42, 20, 10
LTEXT "&URL:", -1, 10, 42, 24, 10
EDITTEXT IDC_URL, 35, 40, 150, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Con&firmă", IDOK, 200, 10, 45, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "A&nulează", IDCANCEL, 200, 28, 45, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "Con&firmă", IDOK, 200, 10, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "A&nulează", IDCANCEL, 200, 28, 50, 14, WS_GROUP | WS_TABSTOP
}
ID_PROMPT_DIALOG DIALOG 0, 0, 200, 90
@ -53,6 +53,6 @@ FONT 8, "MS Shell Dlg"
{
LTEXT "", ID_PROMPT_PROMPT, 10, 10, 180, 30
EDITTEXT ID_PROMPT_EDIT, 10, 45, 180, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Con&firmă", IDOK, 40, 65, 45, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "A&nulează", IDCANCEL, 115, 65, 45, 15, WS_GROUP | WS_TABSTOP
PUSHBUTTON "Con&firmă", IDOK, 40, 65, 50, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "A&nulează", IDCANCEL, 110, 65, 50, 15, WS_GROUP | WS_TABSTOP
}

View file

@ -32,18 +32,18 @@ STRINGTABLE
IDS_HTMLDOCUMENT "Документ HTML"
}
IDD_HYPERLINK DIALOG 0, 0, 250, 65
IDD_HYPERLINK DIALOG 0, 0, 255, 65
STYLE DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Ссылка"
FONT 8, "MS Shell Dlg"
{
GROUPBOX "Информация о ссылке", -1, 5, 5, 190, 55
LTEXT "&Тип:", -1, 10, 22, 20, 10
LTEXT "&Тип:", -1, 10, 22, 24, 10
COMBOBOX IDC_TYPE, 35, 20, 45, 100, WS_TABSTOP | WS_GROUP | WS_VSCROLL | CBS_DROPDOWNLIST | CBS_HASSTRINGS
LTEXT "&Адрес:", -1, 10, 42, 20, 10
LTEXT "&Адрес:", -1, 10, 42, 24, 10
EDITTEXT IDC_URL, 35, 40, 150, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 200, 10, 45, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Отмена", IDCANCEL, 200, 28, 45, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 200, 10, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Отмена", IDCANCEL, 200, 28, 50, 14, WS_GROUP | WS_TABSTOP
}
ID_PROMPT_DIALOG DIALOG 0, 0, 200, 90
@ -52,6 +52,6 @@ FONT 8, "MS Shell Dlg"
{
LTEXT "", ID_PROMPT_PROMPT, 10, 10, 180, 30
EDITTEXT ID_PROMPT_EDIT, 10, 45, 180, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 40, 65, 45, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Отмена", IDCANCEL, 115, 65, 45, 15, WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 40, 65, 50, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Отмена", IDCANCEL, 110, 65, 50, 15, WS_GROUP | WS_TABSTOP
}

View file

@ -31,18 +31,18 @@ STRINGTABLE
IDS_HTMLDOCUMENT "HTML dokument"
}
IDD_HYPERLINK DIALOG 0, 0, 250, 65
IDD_HYPERLINK DIALOG 0, 0, 255, 65
STYLE DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Hiperpovezava"
FONT 8, "MS Shell Dlg"
{
GROUPBOX "Lastnosti hiperpovezave", -1, 5, 5, 190, 55
LTEXT "&Vrsta:", -1, 10, 22, 20, 10
LTEXT "&Vrsta:", -1, 10, 22, 24, 10
COMBOBOX IDC_TYPE, 35, 20, 45, 100, WS_TABSTOP | WS_GROUP | WS_VSCROLL | CBS_DROPDOWNLIST | CBS_HASSTRINGS
LTEXT "&URL:", -1, 10, 42, 20, 10
LTEXT "&URL:", -1, 10, 42, 24, 10
EDITTEXT IDC_URL, 35, 40, 150, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "V redu", IDOK, 200, 10, 45, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Prekliči", IDCANCEL, 200, 28, 45, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "V redu", IDOK, 200, 10, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Prekliči", IDCANCEL, 200, 28, 50, 14, WS_GROUP | WS_TABSTOP
}
ID_PROMPT_DIALOG DIALOG 0, 0, 200, 90
@ -51,6 +51,6 @@ FONT 8, "MS Shell Dlg"
{
LTEXT "", ID_PROMPT_PROMPT, 10, 10, 180, 30
EDITTEXT ID_PROMPT_EDIT, 10, 45, 180, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "V redu", IDOK, 40, 65, 45, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Prekliči", IDCANCEL, 115, 65, 45, 15, WS_GROUP | WS_TABSTOP
PUSHBUTTON "V redu", IDOK, 40, 65, 50, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Prekliči", IDCANCEL, 110, 65, 50, 15, WS_GROUP | WS_TABSTOP
}

View file

@ -29,18 +29,18 @@ STRINGTABLE
IDS_HTMLDOCUMENT "HTML-dokument"
}
IDD_HYPERLINK DIALOG 0, 0, 250, 65
IDD_HYPERLINK DIALOG 0, 0, 255, 65
STYLE DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Hyperlänk"
FONT 8, "MS Shell Dlg"
{
GROUPBOX "Länkinformation", -1, 5, 5, 190, 55
LTEXT "&Typ:", -1, 10, 22, 20, 10
LTEXT "&Typ:", -1, 10, 22, 24, 10
COMBOBOX IDC_TYPE, 35, 20, 45, 100, WS_TABSTOP | WS_GROUP | WS_VSCROLL | CBS_DROPDOWNLIST | CBS_HASSTRINGS
LTEXT "&URL:", -1, 10, 42, 20, 10
LTEXT "&URL:", -1, 10, 42, 24, 10
EDITTEXT IDC_URL, 35, 40, 150, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 200, 10, 45, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Avbryt", IDCANCEL, 200, 28, 45, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 200, 10, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Avbryt", IDCANCEL, 200, 28, 50, 14, WS_GROUP | WS_TABSTOP
}
ID_PROMPT_DIALOG DIALOG 0, 0, 200, 90
@ -49,6 +49,6 @@ FONT 8, "MS Shell Dlg"
{
LTEXT "", ID_PROMPT_PROMPT, 10, 10, 180, 30
EDITTEXT ID_PROMPT_EDIT, 10, 45, 180, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 40, 65, 45, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Avbryt", IDCANCEL, 115, 65, 45, 15, WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 40, 65, 50, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Avbryt", IDCANCEL, 110, 65, 50, 15, WS_GROUP | WS_TABSTOP
}

View file

@ -33,18 +33,18 @@ STRINGTABLE
IDS_HTMLDOCUMENT "Документ HTML"
}
IDD_HYPERLINK DIALOG 0, 0, 250, 65
IDD_HYPERLINK DIALOG 0, 0, 255, 65
STYLE DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Гіперпосилання"
FONT 8, "MS Shell Dlg"
{
GROUPBOX "Дані про Гіперпосилання", -1, 5, 5, 190, 55
LTEXT "&Тип:", -1, 10, 22, 20, 10
LTEXT "&Тип:", -1, 10, 22, 24, 10
COMBOBOX IDC_TYPE, 35, 20, 45, 100, WS_TABSTOP | WS_GROUP | WS_VSCROLL | CBS_DROPDOWNLIST | CBS_HASSTRINGS
LTEXT "&URL:", -1, 10, 42, 20, 10
LTEXT "&URL:", -1, 10, 42, 24, 10
EDITTEXT IDC_URL, 35, 40, 150, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 200, 10, 45, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Скасувати", IDCANCEL, 200, 28, 45, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 200, 10, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Скасувати", IDCANCEL, 200, 28, 50, 14, WS_GROUP | WS_TABSTOP
}
ID_PROMPT_DIALOG DIALOG 0, 0, 200, 90
@ -53,6 +53,6 @@ FONT 8, "MS Shell Dlg"
{
LTEXT "", ID_PROMPT_PROMPT, 10, 10, 180, 30
EDITTEXT ID_PROMPT_EDIT, 10, 45, 180, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 40, 65, 45, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Скасувати", IDCANCEL, 115, 65, 45, 15, WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 40, 65, 50, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Скасувати", IDCANCEL, 110, 65, 50, 15, WS_GROUP | WS_TABSTOP
}

View file

@ -35,18 +35,18 @@ STRINGTABLE
IDS_HTMLDOCUMENT "HTML 文件"
}
IDD_HYPERLINK DIALOG 0, 0, 250, 65
IDD_HYPERLINK DIALOG 0, 0, 255, 65
STYLE DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "超链接"
FONT 9, "MS Shell Dlg"
{
GROUPBOX "超链接信息", -1, 5, 5, 190, 55
LTEXT "类型(&T):", -1, 10, 22, 20, 10
LTEXT "类型(&T):", -1, 10, 22, 24, 10
COMBOBOX IDC_TYPE, 35, 20, 45, 100, WS_TABSTOP | WS_GROUP | WS_VSCROLL | CBS_DROPDOWNLIST | CBS_HASSTRINGS
LTEXT "网址(&U):", -1, 10, 42, 20, 10
LTEXT "网址(&U):", -1, 10, 42, 24, 10
EDITTEXT IDC_URL, 35, 40, 150, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "确定", IDOK, 200, 10, 45, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "取消", IDCANCEL, 200, 28, 45, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "确定", IDOK, 200, 10, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "取消", IDCANCEL, 200, 28, 50, 14, WS_GROUP | WS_TABSTOP
}
ID_PROMPT_DIALOG DIALOG 0, 0, 200, 90
@ -55,8 +55,8 @@ FONT 8, "MS Shell Dlg"
{
LTEXT "", ID_PROMPT_PROMPT, 10, 10, 180, 30
EDITTEXT ID_PROMPT_EDIT, 10, 45, 180, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "确定", IDOK, 40, 65, 45, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "取消", IDCANCEL, 115, 65, 45, 15, WS_GROUP | WS_TABSTOP
PUSHBUTTON "确定", IDOK, 40, 65, 50, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "取消", IDCANCEL, 110, 65, 50, 15, WS_GROUP | WS_TABSTOP
}
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL
@ -72,16 +72,26 @@ STRINGTABLE
IDS_HTMLDOCUMENT "HTML 檔案"
}
IDD_HYPERLINK DIALOG 0, 0, 250, 65
IDD_HYPERLINK DIALOG 0, 0, 255, 65
STYLE DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "超鏈接"
FONT 9, "MS Shell Dlg"
{
GROUPBOX "超鏈接資訊", -1, 5, 5, 190, 55
LTEXT "類型(&T):", -1, 10, 22, 20, 10
LTEXT "類型(&T):", -1, 10, 22, 24, 10
COMBOBOX IDC_TYPE, 35, 20, 45, 100, WS_TABSTOP | WS_GROUP | WS_VSCROLL | CBS_DROPDOWNLIST | CBS_HASSTRINGS
LTEXT "網址(&U):", -1, 10, 42, 20, 10
LTEXT "網址(&U):", -1, 10, 42, 24, 10
EDITTEXT IDC_URL, 35, 40, 150, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "確定", IDOK, 200, 10, 45, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "取消", IDCANCEL, 200, 28, 45, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "確定", IDOK, 200, 10, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "取消", IDCANCEL, 200, 28, 50, 14, WS_GROUP | WS_TABSTOP
}
ID_PROMPT_DIALOG DIALOG 0, 0, 200, 90
STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
FONT 8, "MS Shell Dlg"
{
LTEXT "", ID_PROMPT_PROMPT, 10, 10, 180, 30
EDITTEXT ID_PROMPT_EDIT, 10, 45, 180, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 40, 65, 50, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Cancel", IDCANCEL, 110, 65, 50, 15, WS_GROUP | WS_TABSTOP
}

View file

@ -44,26 +44,22 @@ static HRESULT WINAPI HtmlLoadOptions_QueryInterface(IHtmlLoadOptions *iface,
{
HTMLLoadOptions *This = impl_from_IHtmlLoadOptions(iface);
*ppv = NULL;
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
if(IsEqualGUID(&IID_IUnknown, riid)) {
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
*ppv = &This->IHtmlLoadOptions_iface;
}else if(IsEqualGUID(&IID_IOptionArray, riid)) {
TRACE("(%p)->(IID_IOptionArray %p)\n", This, ppv);
*ppv = &This->IHtmlLoadOptions_iface;
}else if(IsEqualGUID(&IID_IHtmlLoadOptions, riid)) {
TRACE("(%p)->(IID_IHtmlLoadOptions %p)\n", This, ppv);
*ppv = &This->IHtmlLoadOptions_iface;
}else {
*ppv = NULL;
WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
return E_NOINTERFACE;
}
if(*ppv) {
IHtmlLoadOptions_AddRef(&This->IHtmlLoadOptions_iface);
return S_OK;
}
WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
return E_NOINTERFACE;
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
static ULONG WINAPI HtmlLoadOptions_AddRef(IHtmlLoadOptions *iface)
@ -179,9 +175,11 @@ HRESULT HTMLLoadOptions_Create(IUnknown *pUnkOuter, REFIID riid, void** ppv)
HTMLLoadOptions *ret;
HRESULT hres;
TRACE("(%p %s %p)\n", pUnkOuter, debugstr_guid(riid), ppv);
TRACE("(%p %s %p)\n", pUnkOuter, debugstr_mshtml_guid(riid), ppv);
ret = heap_alloc(sizeof(HTMLLoadOptions));
if(!ret)
return E_OUTOFMEMORY;
ret->IHtmlLoadOptions_iface.lpVtbl = &HtmlLoadOptionsVtbl;
ret->ref = 1;
@ -189,6 +187,5 @@ HRESULT HTMLLoadOptions_Create(IUnknown *pUnkOuter, REFIID riid, void** ppv)
hres = IHtmlLoadOptions_QueryInterface(&ret->IHtmlLoadOptions_iface, riid, ppv);
IHtmlLoadOptions_Release(&ret->IHtmlLoadOptions_iface);
return hres;
}

View file

@ -186,7 +186,7 @@ static HRESULT WINAPI ClassFactory_QueryInterface(IClassFactory *iface, REFGUID
return S_OK;
}
WARN("not supported iid %s\n", debugstr_guid(riid));
WARN("not supported iid %s\n", debugstr_mshtml_guid(riid));
*ppvObject = NULL;
return E_NOINTERFACE;
}
@ -259,25 +259,25 @@ static HRESULT ClassFactory_Create(REFIID riid, void **ppv, CreateInstanceFunc f
HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
{
if(IsEqualGUID(&CLSID_HTMLDocument, rclsid)) {
TRACE("(CLSID_HTMLDocument %s %p)\n", debugstr_guid(riid), ppv);
TRACE("(CLSID_HTMLDocument %s %p)\n", debugstr_mshtml_guid(riid), ppv);
return ClassFactory_Create(riid, ppv, HTMLDocument_Create);
}else if(IsEqualGUID(&CLSID_AboutProtocol, rclsid)) {
TRACE("(CLSID_AboutProtocol %s %p)\n", debugstr_guid(riid), ppv);
TRACE("(CLSID_AboutProtocol %s %p)\n", debugstr_mshtml_guid(riid), ppv);
return ProtocolFactory_Create(rclsid, riid, ppv);
}else if(IsEqualGUID(&CLSID_JSProtocol, rclsid)) {
TRACE("(CLSID_JSProtocol %s %p)\n", debugstr_guid(riid), ppv);
TRACE("(CLSID_JSProtocol %s %p)\n", debugstr_mshtml_guid(riid), ppv);
return ProtocolFactory_Create(rclsid, riid, ppv);
}else if(IsEqualGUID(&CLSID_MailtoProtocol, rclsid)) {
TRACE("(CLSID_MailtoProtocol %s %p)\n", debugstr_guid(riid), ppv);
TRACE("(CLSID_MailtoProtocol %s %p)\n", debugstr_mshtml_guid(riid), ppv);
return ProtocolFactory_Create(rclsid, riid, ppv);
}else if(IsEqualGUID(&CLSID_ResProtocol, rclsid)) {
TRACE("(CLSID_ResProtocol %s %p)\n", debugstr_guid(riid), ppv);
TRACE("(CLSID_ResProtocol %s %p)\n", debugstr_mshtml_guid(riid), ppv);
return ProtocolFactory_Create(rclsid, riid, ppv);
}else if(IsEqualGUID(&CLSID_SysimageProtocol, rclsid)) {
TRACE("(CLSID_SysimageProtocol %s %p)\n", debugstr_guid(riid), ppv);
TRACE("(CLSID_SysimageProtocol %s %p)\n", debugstr_mshtml_guid(riid), ppv);
return ProtocolFactory_Create(rclsid, riid, ppv);
}else if(IsEqualGUID(&CLSID_HTMLLoadOptions, rclsid)) {
TRACE("(CLSID_HTMLLoadOptions %s %p)\n", debugstr_guid(riid), ppv);
TRACE("(CLSID_HTMLLoadOptions %s %p)\n", debugstr_mshtml_guid(riid), ppv);
return ClassFactory_Create(riid, ppv, HTMLLoadOptions_Create);
}
@ -499,3 +499,68 @@ HRESULT WINAPI DllUnregisterServer(void)
if(SUCCEEDED(hres)) hres = register_server(FALSE);
return hres;
}
const char *debugstr_mshtml_guid(const GUID *iid)
{
#define X(x) if(IsEqualGUID(iid, &x)) return #x
X(DIID_HTMLDocumentEvents);
X(DIID_HTMLDocumentEvents2);
X(DIID_HTMLTableEvents);
X(DIID_HTMLTextContainerEvents);
X(IID_IConnectionPoint);
X(IID_IConnectionPointContainer);
X(IID_ICustomDoc);
X(IID_IDispatch);
X(IID_IDispatchEx);
X(IID_IEnumConnections);
X(IID_IEnumVARIANT);
X(IID_IHlinkTarget);
X(IID_IHTMLDocument6);
X(IID_IHTMLDocument7);
X(IID_IHTMLFramesCollection2);
X(IID_IHTMLPrivateWindow);
X(IID_IHtmlLoadOptions);
X(IID_IInternetHostSecurityManager);
X(IID_IMonikerProp);
X(IID_IObjectIdentity);
X(IID_IObjectSafety);
X(IID_IObjectWithSite);
X(IID_IOleContainer);
X(IID_IOleCommandTarget);
X(IID_IOleControl);
X(IID_IOleDocument);
X(IID_IOleDocumentView);
X(IID_IOleInPlaceActiveObject);
X(IID_IOleInPlaceFrame);
X(IID_IOleInPlaceObject);
X(IID_IOleInPlaceObjectWindowless);
X(IID_IOleInPlaceUIWindow);
X(IID_IOleObject);
X(IID_IOleWindow);
X(IID_IOptionArray);
X(IID_IPersist);
X(IID_IPersistFile);
X(IID_IPersistHistory);
X(IID_IPersistMoniker);
X(IID_IPersistStreamInit);
X(IID_IPropertyNotifySink);
X(IID_IProvideClassInfo);
X(IID_IServiceProvider);
X(IID_ISupportErrorInfo);
X(IID_ITargetContainer);
X(IID_ITravelLogClient);
X(IID_IUnknown);
X(IID_IViewObject);
X(IID_IViewObject2);
X(IID_IViewObjectEx);
X(IID_nsCycleCollectionISupports);
X(IID_nsXPCOMCycleCollectionParticipant);
#define XIID(x) X(IID_##x);
#define XDIID(x) X(DIID_##x);
TID_LIST
#undef XIID
#undef XDIID
#undef X
return debugstr_guid(iid);
}

View file

@ -129,6 +129,7 @@ typedef struct event_target_t event_target_t;
XDIID(DispHTMLStyle) \
XDIID(DispHTMLStyleElement) \
XDIID(DispHTMLStyleSheet) \
XDIID(DispHTMLStyleSheetRulesCollection) \
XDIID(DispHTMLStyleSheetsCollection) \
XDIID(DispHTMLTable) \
XDIID(DispHTMLTableCell) \
@ -157,6 +158,7 @@ typedef struct event_target_t event_target_t;
XIID(IHTMLDocument5) \
XIID(IHTMLDOMAttribute) \
XIID(IHTMLDOMChildrenCollection) \
XIID(IHTMLDOMImplementation) \
XIID(IHTMLDOMNode) \
XIID(IHTMLDOMNode2) \
XIID(IHTMLDOMTextNode) \
@ -188,6 +190,7 @@ typedef struct event_target_t event_target_t;
XIID(IHTMLObjectElement) \
XIID(IHTMLObjectElement2) \
XIID(IHTMLOptionElement) \
XIID(IHTMLOptionElementFactory) \
XIID(IHTMLPluginsCollection) \
XIID(IHTMLRect) \
XIID(IHTMLScreen) \
@ -202,6 +205,7 @@ typedef struct event_target_t event_target_t;
XIID(IHTMLStyle6) \
XIID(IHTMLStyleElement) \
XIID(IHTMLStyleSheet) \
XIID(IHTMLStyleSheetRulesCollection) \
XIID(IHTMLStyleSheetsCollection) \
XIID(IHTMLTable) \
XIID(IHTMLTable2) \
@ -338,6 +342,7 @@ typedef struct {
} global_prop_t;
typedef struct {
DispatchEx dispex;
IHTMLOptionElementFactory IHTMLOptionElementFactory_iface;
LONG ref;
@ -750,6 +755,8 @@ struct HTMLDocumentNode {
BOOL content_ready;
event_target_t *body_event_target;
IHTMLDOMImplementation *dom_implementation;
ICatInformation *catmgr;
nsDocumentEventListener *nsevent_listener;
BOOL *event_vector;
@ -780,6 +787,7 @@ HRESULT HTMLLocation_Create(HTMLInnerWindow*,HTMLLocation**) DECLSPEC_HIDDEN;
IOmNavigator *OmNavigator_Create(void) DECLSPEC_HIDDEN;
HRESULT HTMLScreen_Create(IHTMLScreen**) DECLSPEC_HIDDEN;
HRESULT create_history(HTMLInnerWindow*,OmHistory**) DECLSPEC_HIDDEN;
HRESULT create_dom_implementation(IHTMLDOMImplementation**) DECLSPEC_HIDDEN;
HRESULT create_storage(IHTMLStorage**) DECLSPEC_HIDDEN;
@ -845,7 +853,6 @@ void nsACString_Finish(nsACString*) DECLSPEC_HIDDEN;
BOOL nsAString_Init(nsAString*,const PRUnichar*) DECLSPEC_HIDDEN;
void nsAString_InitDepend(nsAString*,const PRUnichar*) DECLSPEC_HIDDEN;
void nsAString_SetData(nsAString*,const PRUnichar*) DECLSPEC_HIDDEN;
UINT32 nsAString_GetData(const nsAString*,const PRUnichar**) DECLSPEC_HIDDEN;
void nsAString_Finish(nsAString*) DECLSPEC_HIDDEN;
HRESULT return_nsstr(nsresult,nsAString*,BSTR*) DECLSPEC_HIDDEN;
@ -976,6 +983,11 @@ HRESULT wrap_iface(IUnknown*,IUnknown*,IUnknown**) DECLSPEC_HIDDEN;
IHTMLElementCollection *create_all_collection(HTMLDOMNode*,BOOL) DECLSPEC_HIDDEN;
IHTMLElementCollection *create_collection_from_nodelist(HTMLDocumentNode*,nsIDOMNodeList*) DECLSPEC_HIDDEN;
IHTMLElementCollection *create_collection_from_htmlcol(HTMLDocumentNode*,nsIDOMHTMLCollection*) DECLSPEC_HIDDEN;
HRESULT get_elem_source_index(HTMLElement*,LONG*) DECLSPEC_HIDDEN;
nsresult get_elem_attr_value(nsIDOMHTMLElement*,const WCHAR*,nsAString*,const PRUnichar**) DECLSPEC_HIDDEN;
HRESULT elem_string_attr_getter(HTMLElement*,const WCHAR*,BOOL,BSTR*) DECLSPEC_HIDDEN;
HRESULT elem_string_attr_setter(HTMLElement*,const WCHAR*,const WCHAR*) DECLSPEC_HIDDEN;
/* commands */
typedef struct {
@ -1043,7 +1055,7 @@ void remove_target_tasks(LONG) DECLSPEC_HIDDEN;
HRESULT set_task_timer(HTMLInnerWindow*,DWORD,BOOL,IDispatch*,LONG*) DECLSPEC_HIDDEN;
HRESULT clear_task_timer(HTMLInnerWindow*,BOOL,DWORD) DECLSPEC_HIDDEN;
const char *debugstr_variant(const VARIANT*) DECLSPEC_HIDDEN;
const char *debugstr_mshtml_guid(const GUID*) DECLSPEC_HIDDEN;
DEFINE_GUID(CLSID_AboutProtocol, 0x3050F406, 0x98B5, 0x11CF, 0xBB,0x82, 0x00,0xAA,0x00,0xBD,0xCE,0x0B);
DEFINE_GUID(CLSID_JSProtocol, 0x3050F3B2, 0x98B5, 0x11CF, 0xBB,0x82, 0x00,0xAA,0x00,0xBD,0xCE,0x0B);

View file

@ -617,16 +617,16 @@ static void NSAPI nsDocumentObserver_BindToDocument(nsIDocumentObserver *iface,
nsIDOMHTMLIFrameElement *nsiframe;
nsIDOMHTMLFrameElement *nsframe;
nsIDOMHTMLScriptElement *nsscript;
nsIDOMHTMLElement *nselem;
nsIDOMComment *nscomment;
nsIDOMElement *nselem;
nsresult nsres;
TRACE("(%p)->(%p %p)\n", This, aDocument, aContent);
nsres = nsIContent_QueryInterface(aContent, &IID_nsIDOMElement, (void**)&nselem);
nsres = nsIContent_QueryInterface(aContent, &IID_nsIDOMHTMLElement, (void**)&nselem);
if(NS_SUCCEEDED(nsres)) {
check_event_attr(This, nselem);
nsIDOMElement_Release(nselem);
nsIDOMHTMLElement_Release(nselem);
}
nsres = nsIContent_QueryInterface(aContent, &IID_nsIDOMComment, (void**)&nscomment);

View file

@ -969,7 +969,7 @@ HRESULT bind_mon_to_wstr(HTMLInnerWindow *window, IMoniker *mon, WCHAR **ret)
break;
}
MultiByteToWideChar(CP_ACP, 0, bsc->buf, bsc->bsc.readed, text, len);
MultiByteToWideChar(cp, 0, bsc->buf, bsc->bsc.readed, text, len);
text[len] = 0;
}
}

View file

@ -194,10 +194,11 @@ typedef struct _NPPluginFuncs {
NPP_LostFocusPtr lostfocus;
} NPPluginFuncs;
static nsIDOMElement *get_dom_element(NPP instance)
static nsIDOMHTMLElement *get_dom_element(NPP instance)
{
nsISupports *instance_unk = (nsISupports*)instance->ndata;
nsIPluginInstance *plugin_instance;
nsIDOMHTMLElement *html_elem;
nsIDOMElement *elem;
nsresult nsres;
@ -214,17 +215,24 @@ static nsIDOMElement *get_dom_element(NPP instance)
return NULL;
}
return elem;
nsres = nsIDOMElement_QueryInterface(elem, &IID_nsIDOMHTMLElement, (void**)&html_elem);
nsIDOMElement_Release(elem);
if(NS_FAILED(nsres)) {
ERR("Could not get nsIDOMHTMLElement iface: %08x\n", nsres);
return NULL;
}
return html_elem;
}
static HTMLInnerWindow *get_elem_window(nsIDOMElement *elem)
static HTMLInnerWindow *get_elem_window(nsIDOMHTMLElement *elem)
{
nsIDOMWindow *nswindow;
nsIDOMDocument *nsdoc;
HTMLOuterWindow *window;
nsresult nsres;
nsres = nsIDOMElement_GetOwnerDocument(elem, &nsdoc);
nsres = nsIDOMHTMLElement_GetOwnerDocument(elem, &nsdoc);
if(NS_FAILED(nsres))
return NULL;
@ -270,29 +278,22 @@ static BOOL parse_classid(const PRUnichar *classid, CLSID *clsid)
return SUCCEEDED(hres);
}
static BOOL get_elem_clsid(nsIDOMElement *elem, CLSID *clsid)
static BOOL get_elem_clsid(nsIDOMHTMLElement *elem, CLSID *clsid)
{
nsAString attr_str, val_str;
const PRUnichar *val;
nsAString val_str;
nsresult nsres;
BOOL ret = FALSE;
static const PRUnichar classidW[] = {'c','l','a','s','s','i','d',0};
nsAString_InitDepend(&attr_str, classidW);
nsAString_Init(&val_str, NULL);
nsres = nsIDOMElement_GetAttribute(elem, &attr_str, &val_str);
nsAString_Finish(&attr_str);
nsres = get_elem_attr_value(elem, classidW, &val_str, &val);
if(NS_SUCCEEDED(nsres)) {
const PRUnichar *val;
nsAString_GetData(&val_str, &val);
if(*val)
ret = parse_classid(val, clsid);
}else {
ERR("GetAttribute failed: %08x\n", nsres);
nsAString_Finish(&val_str);
}
nsAString_Finish(&val_str);
return ret;
}
@ -512,35 +513,28 @@ static void install_codebase(const WCHAR *url)
WARN("FAILED: %08x\n", hres);
}
static void check_codebase(HTMLInnerWindow *window, nsIDOMElement *nselem)
static void check_codebase(HTMLInnerWindow *window, nsIDOMHTMLElement *nselem)
{
nsAString attr_str, val_str;
BOOL is_on_list = FALSE;
install_entry_t *iter;
const PRUnichar *val;
nsAString val_str;
IUri *uri = NULL;
nsresult nsres;
HRESULT hres;
static const PRUnichar codebaseW[] = {'c','o','d','e','b','a','s','e',0};
nsAString_InitDepend(&attr_str, codebaseW);
nsAString_Init(&val_str, NULL);
nsres = nsIDOMElement_GetAttribute(nselem, &attr_str, &val_str);
nsAString_Finish(&attr_str);
nsres = get_elem_attr_value(nselem, codebaseW, &val_str, &val);
if(NS_SUCCEEDED(nsres)) {
const PRUnichar *val;
nsAString_GetData(&val_str, &val);
if(*val) {
hres = CoInternetCombineUrlEx(window->base.outer_window->uri, val, 0, &uri, 0);
if(FAILED(hres))
uri = NULL;
}
}else {
ERR("GetAttribute failed: %08x\n", nsres);
nsAString_Finish(&val_str);
}
nsAString_Finish(&val_str);
if(!uri)
return;
@ -582,7 +576,7 @@ static void check_codebase(HTMLInnerWindow *window, nsIDOMElement *nselem)
IUri_Release(uri);
}
static IUnknown *create_activex_object(HTMLInnerWindow *window, nsIDOMElement *nselem, CLSID *clsid)
static IUnknown *create_activex_object(HTMLInnerWindow *window, nsIDOMHTMLElement *nselem, CLSID *clsid)
{
IClassFactoryEx *cfex;
IClassFactory *cf;
@ -628,7 +622,7 @@ static IUnknown *create_activex_object(HTMLInnerWindow *window, nsIDOMElement *n
static NPError CDECL NPP_New(NPMIMEType pluginType, NPP instance, UINT16 mode, INT16 argc, char **argn,
char **argv, NPSavedData *saved)
{
nsIDOMElement *nselem;
nsIDOMHTMLElement *nselem;
HTMLInnerWindow *window;
IUnknown *obj;
CLSID clsid;
@ -645,7 +639,7 @@ static NPError CDECL NPP_New(NPMIMEType pluginType, NPP instance, UINT16 mode, I
window = get_elem_window(nselem);
if(!window) {
ERR("Could not get element's window object\n");
nsIDOMElement_Release(nselem);
nsIDOMHTMLElement_Release(nselem);
return NPERR_GENERIC_ERROR;
}
@ -654,7 +648,7 @@ static NPError CDECL NPP_New(NPMIMEType pluginType, NPP instance, UINT16 mode, I
PluginHost *host;
HRESULT hres;
hres = create_plugin_host(window->doc, nselem, obj, &clsid, &host);
hres = create_plugin_host(window->doc, (nsIDOMElement*)nselem, obj, &clsid, &host);
IUnknown_Release(obj);
if(SUCCEEDED(hres))
instance->pdata = host;
@ -664,7 +658,7 @@ static NPError CDECL NPP_New(NPMIMEType pluginType, NPP instance, UINT16 mode, I
err = NPERR_GENERIC_ERROR;
}
nsIDOMElement_Release(nselem);
nsIDOMHTMLElement_Release(nselem);
return err;
}

View file

@ -423,8 +423,10 @@ static BOOL install_wine_gecko(void)
static void set_environment(LPCWSTR gre_path)
{
WCHAR path_env[MAX_PATH], buf[20];
int len, debug_level = 0;
size_t len, gre_path_len;
int debug_level = 0;
WCHAR *path, buf[20];
const WCHAR *ptr;
static const WCHAR pathW[] = {'P','A','T','H',0};
static const WCHAR warnW[] = {'w','a','r','n',0};
@ -434,13 +436,6 @@ static void set_environment(LPCWSTR gre_path)
{'N','S','P','R','_','L','O','G','_','M','O','D','U','L','E','S',0};
static const WCHAR debug_formatW[] = {'a','l','l',':','%','d',0};
/* We have to modify PATH as XPCOM loads other DLLs from this directory. */
GetEnvironmentVariableW(pathW, path_env, sizeof(path_env)/sizeof(WCHAR));
len = strlenW(path_env);
path_env[len++] = ';';
strcpyW(path_env+len, gre_path);
SetEnvironmentVariableW(pathW, path_env);
SetEnvironmentVariableW(xpcom_debug_breakW, warnW);
if(TRACE_ON(gecko))
@ -452,6 +447,23 @@ static void set_environment(LPCWSTR gre_path)
sprintfW(buf, debug_formatW, debug_level);
SetEnvironmentVariableW(nspr_log_modulesW, buf);
len = GetEnvironmentVariableW(pathW, NULL, 0);
gre_path_len = strlenW(gre_path);
path = heap_alloc((len+gre_path_len+1)*sizeof(WCHAR));
if(!path)
return;
GetEnvironmentVariableW(pathW, path, len);
/* We have to modify PATH as xul.dll loads other DLLs from this directory. */
if(!(ptr = strstrW(path, gre_path))
|| (ptr > path && *(ptr-1) != ';')
|| (ptr[gre_path_len] && ptr[gre_path_len] != ';')) {
if(len)
path[len-1] = ';';
strcpyW(path+len, gre_path);
SetEnvironmentVariableW(pathW, path);
}
}
static BOOL load_xul(const PRUnichar *gre_path)
@ -825,11 +837,6 @@ void nsAString_InitDepend(nsAString *str, const PRUnichar *data)
NS_StringContainerInit2(str, data, PR_UINT32_MAX, NS_STRING_CONTAINER_INIT_DEPEND);
}
void nsAString_SetData(nsAString *str, const PRUnichar *data)
{
NS_StringSetData(str, data, PR_UINT32_MAX);
}
UINT32 nsAString_GetData(const nsAString *str, const PRUnichar **data)
{
return NS_StringGetData(str, data, NULL);

View file

@ -1791,7 +1791,7 @@ interface nsIDOMHTMLSelectElement : nsIDOMHTMLElement
nsresult Item(uint32_t index, nsIDOMNode **_retval);
nsresult NamedItem(const nsAString *name, nsIDOMNode **_retval);
nsresult Add(nsIDOMHTMLElement *element, nsIVariant *before);
nsresult Remove(int32_t index);
nsresult select_Remove(int32_t index);
nsresult GetSelectedIndex(int32_t *aSelectedIndex);
nsresult SetSelectedIndex(int32_t aSelectedIndex);
nsresult GetValue(nsAString *aValue);
@ -2070,6 +2070,44 @@ interface nsIDOMHTMLTableRowElement : nsIDOMHTMLElement
nsresult DeleteCell(int32_t index);
}
[
object,
uuid(1fb22137-c231-4eae-9ca4-557bb0852d89),
local
]
interface nsIDOMHTMLTableCellElement : nsIDOMHTMLElement
{
nsresult GetCellIndex(int32_t *aCellIndex);
nsresult GetAbbr(nsAString *aAbbr);
nsresult SetAbbr(const nsAString *aAbbr);
nsresult GetAlign(nsAString *aAlign);
nsresult SetAlign(const nsAString *aAlign);
nsresult GetAxis(nsAString *aAxis);
nsresult SetAxis(const nsAString *aAxis);
nsresult GetBgColor(nsAString *aBgColor);
nsresult SetBgColor(const nsAString *aBgColor);
nsresult GetCh(nsAString *aCh);
nsresult SetCh(const nsAString *aCh);
nsresult GetChOff(nsAString *aChOff);
nsresult SetChOff(const nsAString *aChOff);
nsresult GetColSpan(int32_t *aColSpan);
nsresult SetColSpan(int32_t aColSpan);
nsresult GetHeaders(nsAString *aHeaders);
nsresult SetHeaders(const nsAString *aHeaders);
nsresult GetHeight(nsAString *aHeight);
nsresult SetHeight(const nsAString *aHeight);
nsresult GetNoWrap(bool *aNoWrap);
nsresult SetNoWrap(bool aNoWrap);
nsresult GetRowSpan(int32_t *aRowSpan);
nsresult SetRowSpan(int32_t aRowSpan);
nsresult GetScope(nsAString *aScope);
nsresult SetScope(const nsAString *aScope);
nsresult GetVAlign(nsAString *aVAlign);
nsresult SetVAlign(const nsAString *aVAlign);
nsresult GetWidth(nsAString *aWidth);
nsresult SetWidth(const nsAString *aWidth);
}
[
object,
uuid(21ffbe98-51f5-499e-8d6f-612ae798c1e1),
@ -2180,23 +2218,6 @@ interface nsIDOMHTMLObjectElement : nsIDOMHTMLElement
nsresult SetCustomValidity(const nsAString *error);
}
[
object,
uuid(f85e1b05-6dc4-442d-bea8-7cf551f9bc9f),
local
]
interface nsIDOMHTMLParamElement : nsIDOMHTMLElement
{
nsresult GetName(nsAString *aName);
nsresult SetName(const nsAString *aName);
nsresult GetType(nsAString *aType);
nsresult SetType(const nsAString *aType);
nsresult GetValue(nsAString *aValue);
nsresult SetValue(const nsAString *aValue);
nsresult GetValueType(nsAString *aValueType);
nsresult SetValueType(const nsAString *aValueType);
}
[
object,
uuid(e81273e1-d440-4dd3-9073-8199f7a9525e),

View file

@ -2606,10 +2606,27 @@ static nsresult NSAPI nsURL_SetFilePath(nsIFileURL *iface, const nsACString *aFi
static nsresult NSAPI nsURL_GetQuery(nsIFileURL *iface, nsACString *aQuery)
{
nsWineURI *This = impl_from_nsIFileURL(iface);
WCHAR *ptr;
BSTR query;
nsresult nsres;
HRESULT hres;
TRACE("(%p)->(%p)\n", This, aQuery);
return get_uri_string(This, Uri_PROPERTY_QUERY, aQuery);
if(!ensure_uri(This))
return NS_ERROR_UNEXPECTED;
hres = IUri_GetQuery(This->uri, &query);
if(FAILED(hres))
return NS_ERROR_FAILURE;
ptr = query;
if(ptr && *ptr == '?')
ptr++;
nsres = return_wstr_nsacstr(aQuery, ptr, -1);
SysFreeString(query);
return nsres;
}
static nsresult NSAPI nsURL_SetQuery(nsIFileURL *iface, const nsACString *aQuery)

View file

@ -354,7 +354,7 @@ static HRESULT WINAPI OleObject_SetClientSite(IOleObject *iface, IOleClientSite
(void**)&uihandler2);
if(SUCCEEDED(hres)) {
hres = IDocHostUIHandler2_GetOverrideKeyPath(uihandler2, &override_key_path, 0);
if(hres == S_OK && override_key_path && override_key_path[0]) {
if(hres == S_OK && override_key_path) {
if(override_key_path[0]) {
/*FIXME: use override_key_path */
FIXME("override_key_path = %s\n", debugstr_w(override_key_path));

View file

@ -41,6 +41,148 @@ typedef struct {
HTMLMimeTypesCollection *mime_types;
} OmNavigator;
typedef struct {
DispatchEx dispex;
IHTMLDOMImplementation IHTMLDOMImplementation_iface;
LONG ref;
} HTMLDOMImplementation;
static inline HTMLDOMImplementation *impl_from_IHTMLDOMImplementation(IHTMLDOMImplementation *iface)
{
return CONTAINING_RECORD(iface, HTMLDOMImplementation, IHTMLDOMImplementation_iface);
}
static HRESULT WINAPI HTMLDOMImplementation_QueryInterface(IHTMLDOMImplementation *iface, REFIID riid, void **ppv)
{
HTMLDOMImplementation *This = impl_from_IHTMLDOMImplementation(iface);
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
if(IsEqualGUID(&IID_IUnknown, riid) || IsEqualGUID(&IID_IHTMLDOMImplementation, riid)) {
*ppv = &This->IHTMLDOMImplementation_iface;
}else if(dispex_query_interface(&This->dispex, riid, ppv)) {
return *ppv ? S_OK : E_NOINTERFACE;
}else {
WARN("Unsupported interface %s\n", debugstr_mshtml_guid(riid));
*ppv = NULL;
return E_NOINTERFACE;
}
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
static ULONG WINAPI HTMLDOMImplementation_AddRef(IHTMLDOMImplementation *iface)
{
HTMLDOMImplementation *This = impl_from_IHTMLDOMImplementation(iface);
LONG ref = InterlockedIncrement(&This->ref);
TRACE("(%p) ref=%d\n", This, ref);
return ref;
}
static ULONG WINAPI HTMLDOMImplementation_Release(IHTMLDOMImplementation *iface)
{
HTMLDOMImplementation *This = impl_from_IHTMLDOMImplementation(iface);
LONG ref = InterlockedDecrement(&This->ref);
TRACE("(%p) ref=%d\n", This, ref);
if(!ref) {
release_dispex(&This->dispex);
heap_free(This);
}
return ref;
}
static HRESULT WINAPI HTMLDOMImplementation_GetTypeInfoCount(IHTMLDOMImplementation *iface, UINT *pctinfo)
{
HTMLDOMImplementation *This = impl_from_IHTMLDOMImplementation(iface);
return IDispatchEx_GetTypeInfoCount(&This->dispex.IDispatchEx_iface, pctinfo);
}
static HRESULT WINAPI HTMLDOMImplementation_GetTypeInfo(IHTMLDOMImplementation *iface, UINT iTInfo,
LCID lcid, ITypeInfo **ppTInfo)
{
HTMLDOMImplementation *This = impl_from_IHTMLDOMImplementation(iface);
return IDispatchEx_GetTypeInfo(&This->dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
}
static HRESULT WINAPI HTMLDOMImplementation_GetIDsOfNames(IHTMLDOMImplementation *iface, REFIID riid,
LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
{
HTMLDOMImplementation *This = impl_from_IHTMLDOMImplementation(iface);
return IDispatchEx_GetIDsOfNames(&This->dispex.IDispatchEx_iface, riid, rgszNames,
cNames, lcid, rgDispId);
}
static HRESULT WINAPI HTMLDOMImplementation_Invoke(IHTMLDOMImplementation *iface, DISPID dispIdMember,
REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult,
EXCEPINFO *pExcepInfo, UINT *puArgErr)
{
HTMLDOMImplementation *This = impl_from_IHTMLDOMImplementation(iface);
return IDispatchEx_Invoke(&This->dispex.IDispatchEx_iface, dispIdMember, riid,
lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
}
static HRESULT WINAPI HTMLDOMImplementation_hasFeature(IHTMLDOMImplementation *iface, BSTR feature,
VARIANT version, VARIANT_BOOL *pfHasFeature)
{
HTMLDOMImplementation *This = impl_from_IHTMLDOMImplementation(iface);
FIXME("(%p)->(%s %s %p) returning false\n", This, debugstr_w(feature), debugstr_variant(&version), pfHasFeature);
*pfHasFeature = VARIANT_FALSE;
return S_OK;
}
static const IHTMLDOMImplementationVtbl HTMLDOMImplementationVtbl = {
HTMLDOMImplementation_QueryInterface,
HTMLDOMImplementation_AddRef,
HTMLDOMImplementation_Release,
HTMLDOMImplementation_GetTypeInfoCount,
HTMLDOMImplementation_GetTypeInfo,
HTMLDOMImplementation_GetIDsOfNames,
HTMLDOMImplementation_Invoke,
HTMLDOMImplementation_hasFeature
};
static const tid_t HTMLDOMImplementation_iface_tids[] = {
IHTMLDOMImplementation_tid,
0
};
static dispex_static_data_t HTMLDOMImplementation_dispex = {
NULL,
IHTMLDOMImplementation_tid,
NULL,
HTMLDOMImplementation_iface_tids
};
HRESULT create_dom_implementation(IHTMLDOMImplementation **ret)
{
HTMLDOMImplementation *dom_implementation;
dom_implementation = heap_alloc_zero(sizeof(*dom_implementation));
if(!dom_implementation)
return E_OUTOFMEMORY;
dom_implementation->IHTMLDOMImplementation_iface.lpVtbl = &HTMLDOMImplementationVtbl;
dom_implementation->ref = 1;
init_dispex(&dom_implementation->dispex, (IUnknown*)&dom_implementation->IHTMLDOMImplementation_iface,
&HTMLDOMImplementation_dispex);
*ret = &dom_implementation->IHTMLDOMImplementation_iface;
return S_OK;
}
static inline OmHistory *impl_from_IOmHistory(IOmHistory *iface)
{
return CONTAINING_RECORD(iface, OmHistory, IOmHistory_iface);

View file

@ -16,6 +16,8 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#pragma once
typedef struct HTMLPluginContainer HTMLPluginContainer;
typedef struct PHEventSink PHEventSink;

View file

@ -253,15 +253,18 @@ static const IPropertyBag2Vtbl PropertyBag2Vtbl = {
static HRESULT fill_props(nsIDOMHTMLElement *nselem, PropertyBag *prop_bag)
{
nsIDOMHTMLParamElement *nsparam;
const PRUnichar *name, *value;
nsAString name_str, value_str;
nsIDOMHTMLCollection *params;
nsIDOMHTMLElement *param_elem;
UINT32 length, i;
nsIDOMNode *nsnode;
nsresult nsres;
HRESULT hres = S_OK;
static const PRUnichar nameW[] = {'n','a','m','e',0};
static const PRUnichar paramW[] = {'p','a','r','a','m',0};
static const PRUnichar valueW[] = {'v','a','l','u','e',0};
nsAString_InitDepend(&name_str, paramW);
nsres = nsIDOMHTMLElement_GetElementsByTagName(nselem, &name_str, &params);
@ -280,31 +283,25 @@ static HRESULT fill_props(nsIDOMHTMLElement *nselem, PropertyBag *prop_bag)
break;
}
nsres = nsIDOMNode_QueryInterface(nsnode, &IID_nsIDOMHTMLParamElement, (void**)&nsparam);
nsres = nsIDOMNode_QueryInterface(nsnode, &IID_nsIDOMHTMLElement, (void**)&param_elem);
nsIDOMNode_Release(nsnode);
if(NS_FAILED(nsres)) {
hres = E_FAIL;
break;
}
nsAString_Init(&name_str, NULL);
nsres = nsIDOMHTMLParamElement_GetName(nsparam, &name_str);
nsres = get_elem_attr_value(param_elem, nameW, &name_str, &name);
if(NS_SUCCEEDED(nsres)) {
nsAString_Init(&value_str, NULL);
nsres = nsIDOMHTMLParamElement_GetValue(nsparam, &value_str);
nsres = get_elem_attr_value(param_elem, valueW, &value_str, &value);
if(NS_SUCCEEDED(nsres)) {
const PRUnichar *name, *value;
nsAString_GetData(&name_str, &name);
nsAString_GetData(&value_str, &value);
hres = add_prop(prop_bag, name, value);
nsAString_Finish(&value_str);
}
nsAString_Finish(&value_str);
nsAString_Finish(&name_str);
}
nsAString_Finish(&name_str);
nsIDOMHTMLParamElement_Release(nsparam);
nsIDOMHTMLElement_Release(param_elem);
if(FAILED(hres))
break;
if(NS_FAILED(nsres)) {

View file

@ -764,7 +764,7 @@ static void parse_script_elem(ScriptHost *script_host, HTMLScriptElement *script
return;
}
}else {
ERR("GetAttribute(event) failed: %08x\n", nsres);
ERR("GetEvent failed: %08x\n", nsres);
}
nsAString_Finish(&event_str);
@ -829,7 +829,8 @@ static BOOL get_guid_from_language(LPCWSTR type, GUID *guid)
static BOOL get_script_guid(HTMLInnerWindow *window, nsIDOMHTMLScriptElement *nsscript, GUID *guid)
{
nsAString attr_str, val_str;
const PRUnichar *language;
nsAString val_str;
BOOL ret = FALSE;
nsresult nsres;
@ -851,26 +852,17 @@ static BOOL get_script_guid(HTMLInnerWindow *window, nsIDOMHTMLScriptElement *ns
ERR("GetType failed: %08x\n", nsres);
}
nsAString_InitDepend(&attr_str, languageW);
nsres = nsIDOMHTMLScriptElement_GetAttribute(nsscript, &attr_str, &val_str);
nsAString_Finish(&attr_str);
nsres = get_elem_attr_value((nsIDOMHTMLElement*)nsscript, languageW, &val_str, &language);
if(NS_SUCCEEDED(nsres)) {
const PRUnichar *language;
nsAString_GetData(&val_str, &language);
if(*language) {
ret = get_guid_from_language(language, guid);
}else {
*guid = get_default_script_guid(window);
ret = TRUE;
}
}else {
ERR("GetAttribute(language) failed: %08x\n", nsres);
nsAString_Finish(&val_str);
}
nsAString_Finish(&val_str);
return ret;
}

View file

@ -121,7 +121,7 @@ reactos/dll/win32/msctf # Synced to Wine-1.7.27
reactos/dll/win32/msftedit # Synced to Wine-1.7.17
reactos/dll/win32/msg711.acm # Synced to Wine-1.7.17
reactos/dll/win32/msgsm32.acm # Synced to Wine-1.7.17
reactos/dll/win32/mshtml # Synced to Wine-1.7.17
reactos/dll/win32/mshtml # Synced to Wine-1.7.27
reactos/dll/win32/mshtml.tlb # Synced to Wine-1.7.17
reactos/dll/win32/msi # Synced to Wine-1.7.27
reactos/dll/win32/msimg32 # Synced to Wine-1.7.17