PUSHBUTTON "OK", IDOK, 40, 65, 45, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Abbrechen", IDCANCEL, 115, 65, 45, 15, WS_GROUP | WS_TABSTOP
}
-
+#pragma code_page(default)
PUSHBUTTON "OK", IDOK, 40, 65, 45, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Annuler", IDCANCEL, 115, 65, 45, 15, WS_GROUP | WS_TABSTOP
}
+#pragma code_page(default)
--- /dev/null
+/*
+ * Copyright 2010 Luca Bennati
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "resource.h"
+
+/*UTF-8*/
+#pragma code_page(65001)
+
+LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL
+
+STRINGTABLE DISCARDABLE
+{
+ IDS_HTMLDISABLED "Il rendering HTML è correntemente disattivato."
+ IDS_HTMLDOCUMENT "Documento HTML"
+ IDS_DOWNLOADING "Scaricando..."
+ IDS_INSTALLING "Installando..."
+}
+
+ID_DWL_DIALOG DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 260, 95
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+CAPTION "Installer di Wine Gecko"
+FONT 8, "MS Shell Dlg"
+{
+ LTEXT "Wine non ha trovato un pacchetto Gecko che è necessario per applicazioni che incorporano HTML " \
+ "per funzionare correttamente. Wine può automaticamente scaricarlo ed installarlo per te.\n\n" \
+ "Nota: è raccomandato usare i pacchetti delle distribuzioni. Leggi http://wiki.winehq.org/Gecko per i dettagli.",
+ ID_DWL_STATUS, 10, 10, 240, 50, SS_LEFT
+ CONTROL "Avanzamento", ID_DWL_PROGRESS, PROGRESS_CLASSA, WS_BORDER|PBS_SMOOTH, 10, 40, 240, 12
+ DEFPUSHBUTTON "&Installa", ID_DWL_INSTALL, 200, 70, 50, 15, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Annulla", IDCANCEL, 140, 70, 50, 15, WS_GROUP | WS_TABSTOP
+}
+
+IDD_HYPERLINK DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 250, 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
+ COMBOBOX IDC_TYPE, 35, 20, 45, 100, WS_TABSTOP | WS_GROUP | WS_VSCROLL | CBS_DROPDOWNLIST | CBS_HASSTRINGS
+ LTEXT "&URL:", -1, 10, 42, 20, 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
+}
+
+ID_PROMPT_DIALOG DIALOG 0, 0, 200, 90
+STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+CAPTION ""
+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
+}
+#pragma code_page(default)
PUSHBUTTON "OK", IDOK, 40, 65, 45, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "キャンセル", IDCANCEL, 115, 65, 45, 15, WS_GROUP | WS_TABSTOP
}
+#pragma code_page(default)
PUSHBUTTON "Gerai", IDOK, 40, 65, 45, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Atsisakyti", IDCANCEL, 115, 65, 45, 15, WS_GROUP | WS_TABSTOP
}
+#pragma code_page(default)
PUSHBUTTON "OK", IDOK, 40, 65, 45, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Avbryt", IDCANCEL, 115, 65, 45, 15, WS_GROUP | WS_TABSTOP
}
+#pragma code_page(default)
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
}
+#pragma code_page(default)
--- /dev/null
+/*
+ * Copyright 2005-2006 Jacek Caban
+ * Copyright 2010 Igor Paliychuk
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "resource.h"
+
+/* UTF-8 */
+#pragma code_page(65001)
+
+LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT
+
+STRINGTABLE DISCARDABLE
+{
+ IDS_HTMLDISABLED "HTML rendering is currently disabled."
+ IDS_HTMLDOCUMENT "Документ HTML"
+ IDS_DOWNLOADING "Завантаження..."
+ IDS_INSTALLING "Встановлення..."
+}
+
+ID_DWL_DIALOG DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 260, 95
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+CAPTION "Wine Gecko Installer"
+FONT 8, "MS Shell Dlg"
+{
+ LTEXT "Wine не може знайти пакунок Gecko, який потрібний для додатків embedding HTML " \
+ "для коректної роботи. Wine може автоматично завантажити та встановити його для Вас.\n\n" \
+ "Зауважте: Рекомендується використати пакет з вашого дистрибутиву. Детальніше читайте http://wiki.winehq.org/Gecko.",
+ ID_DWL_STATUS, 10, 10, 240, 50, SS_LEFT
+ CONTROL "Прогрес", ID_DWL_PROGRESS, PROGRESS_CLASSA, WS_BORDER|PBS_SMOOTH, 10, 40, 240, 12
+ DEFPUSHBUTTON "&Встановити", ID_DWL_INSTALL, 200, 70, 50, 15, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Скасувати", IDCANCEL, 140, 70, 50, 15, WS_GROUP | WS_TABSTOP
+}
+
+IDD_HYPERLINK DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 250, 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
+ COMBOBOX IDC_TYPE, 35, 20, 45, 100, WS_TABSTOP | WS_GROUP | WS_VSCROLL | CBS_DROPDOWNLIST | CBS_HASSTRINGS
+ LTEXT "&URL:", -1, 10, 42, 20, 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
+}
+
+ID_PROMPT_DIALOG DIALOG 0, 0, 200, 90
+STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+CAPTION ""
+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
+}
&DIID_DispHTMLElementCollection,
&DIID_DispHTMLFormElement,
&DIID_DispHTMLGenericElement,
+ &DIID_DispHTMLFrameElement,
&DIID_DispHTMLIFrame,
&DIID_DispHTMLImg,
&DIID_DispHTMLInputElement,
&DIID_DispHTMLNavigator,
&DIID_DispHTMLOptionElement,
&DIID_DispHTMLScreen,
+ &DIID_DispHTMLScriptElement,
&DIID_DispHTMLSelectElement,
&DIID_DispHTMLStyle,
&DIID_DispHTMLTable,
&DIID_DispHTMLTableRow,
+ &DIID_DispHTMLTextAreaElement,
&DIID_DispHTMLUnknownElement,
&DIID_DispHTMLWindow2,
&DIID_HTMLDocumentEvents,
&IID_IHTMLFrameBase,
&IID_IHTMLFrameBase2,
&IID_IHTMLGenericElement,
+ &IID_IHTMLFrameElement3,
+ &IID_IHTMLIFrameElement,
&IID_IHTMLImageElementFactory,
&IID_IHTMLImgElement,
&IID_IHTMLInputElement,
&IID_IHTMLLocation,
&IID_IHTMLOptionElement,
&IID_IHTMLScreen,
+ &IID_IHTMLScriptElement,
&IID_IHTMLSelectElement,
&IID_IHTMLStyle,
&IID_IHTMLStyle2,
&IID_IHTMLStyle4,
&IID_IHTMLTable,
&IID_IHTMLTableRow,
+ &IID_IHTMLTextAreaElement,
&IID_IHTMLTextContainer,
&IID_IHTMLUniqueName,
&IID_IHTMLWindow2,
VARIANT res;
HRESULT hres;
- hres = IDispatch_QueryInterface(disp, &IID_IDispatchEx, (void**)&dispex);
- if(FAILED(hres)) {
- FIXME("Could not get IDispatchEx interface: %08x\n", hres);
- return hres;
- }
-
VariantInit(&res);
memset(&ei, 0, sizeof(ei));
- hres = IDispatchEx_InvokeEx(dispex, 0, GetUserDefaultLCID(), DISPATCH_METHOD, dp, &res, &ei, NULL);
+ hres = IDispatch_QueryInterface(disp, &IID_IDispatchEx, (void**)&dispex);
+ if(SUCCEEDED(hres)) {
+ hres = IDispatchEx_InvokeEx(dispex, 0, GetUserDefaultLCID(), DISPATCH_METHOD, dp, &res, &ei, NULL);
+ IDispatchEx_Release(dispex);
+ }else {
+ TRACE("Could not get IDispatchEx interface: %08x\n", hres);
+ hres = IDispatch_Invoke(disp, 0, &IID_NULL, GetUserDefaultLCID(), DISPATCH_METHOD,
+ dp, &res, &ei, NULL);
+ }
- IDispatchEx_Release(dispex);
VariantClear(&res);
return hres;
}
static HRESULT WINAPI DispatchEx_DeleteMemberByName(IDispatchEx *iface, BSTR bstrName, DWORD grfdex)
{
DispatchEx *This = DISPATCHEX_THIS(iface);
- FIXME("(%p)->(%s %x)\n", This, debugstr_w(bstrName), grfdex);
+
+ TRACE("(%p)->(%s %x)\n", This, debugstr_w(bstrName), grfdex);
+
+ /* Not implemented by IE */
return E_NOTIMPL;
}
TRACE("found font tag %p\n", elem);
- nsAString_Init(&size_str, sizeW);
+ nsAString_InitDepend(&size_str, sizeW);
nsAString_Init(&val_str, NULL);
nsIDOMElement_GetAttribute(elem, &size_str, &val_str);
create_nselem(This->doc_node, fontW, &elem);
- nsAString_Init(&size_str, sizeW);
- nsAString_Init(&val_str, size);
+ nsAString_InitDepend(&size_str, sizeW);
+ nsAString_InitDepend(&val_str, size);
nsIDOMElement_SetAttribute(elem, &size_str, &val_str);
+ nsAString_Finish(&val_str);
nsISelection_GetRangeAt(nsselection, 0, &range);
nsISelection_GetIsCollapsed(nsselection, &collapsed);
nsIDOMElement_Release(elem);
nsAString_Finish(&size_str);
- nsAString_Finish(&val_str);
set_dirty(This, VARIANT_TRUE);
}
/* create an element for the link */
create_nselem(This->doc_node, aW, &anchor_elem);
- nsAString_Init(&href_str, hrefW);
- nsAString_Init(&ns_url, url);
+ nsAString_InitDepend(&href_str, hrefW);
+ nsAString_InitDepend(&ns_url, url);
nsIDOMElement_SetAttribute(anchor_elem, &href_str, &ns_url);
nsAString_Finish(&href_str);
static const tid_t HTMLAnchorElement_iface_tids[] = {
IHTMLAnchorElement_tid,
- IHTMLDOMNode_tid,
- IHTMLDOMNode2_tid,
- IHTMLElement_tid,
- IHTMLElement2_tid,
- IHTMLElement3_tid,
- IHTMLElement4_tid,
+ HTMLELEMENT_TIDS,
IHTMLTextContainer_tid,
IHTMLUniqueName_tid,
0
static HRESULT WINAPI HTMLBodyElement_put_background(IHTMLBodyElement *iface, BSTR v)
{
HTMLBodyElement *This = HTMLBODY_THIS(iface);
- HRESULT hr = S_OK;
nsAString nsstr;
nsresult nsres;
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
- nsAString_Init(&nsstr, v);
-
+ nsAString_InitDepend(&nsstr, v);
nsres = nsIDOMHTMLBodyElement_SetBackground(This->nsbody, &nsstr);
- if(!NS_SUCCEEDED(nsres))
- {
- hr = E_FAIL;
- }
-
nsAString_Finish(&nsstr);
+ if(NS_FAILED(nsres))
+ return E_FAIL;
- return hr;
+ return S_OK;
}
static HRESULT WINAPI HTMLBodyElement_get_background(IHTMLBodyElement *iface, BSTR *p)
static const tid_t HTMLBodyElement_iface_tids[] = {
IHTMLBodyElement_tid,
IHTMLBodyElement2_tid,
- IHTMLDOMNode_tid,
- IHTMLDOMNode2_tid,
- IHTMLElement_tid,
- IHTMLElement2_tid,
- IHTMLElement3_tid,
- IHTMLElement4_tid,
+ HTMLELEMENT_TIDS,
IHTMLTextContainer_tid,
IHTMLUniqueName_tid,
0
static HRESULT WINAPI HTMLCommentElement_get_text(IHTMLCommentElement *iface, BSTR *p)
{
HTMLCommentElement *This = HTMLCOMMENT_THIS(iface);
- FIXME("(%p)->(%p)\n", This, p);
- return E_NOTIMPL;
+
+ TRACE("(%p)->(%p)\n", This, p);
+
+ return IHTMLElement_get_outerHTML(HTMLELEM(&This->element), p);
}
static HRESULT WINAPI HTMLCommentElement_put_atomic(IHTMLCommentElement *iface, LONG v)
};
static const tid_t HTMLCommentElement_iface_tids[] = {
- IHTMLDOMNode_tid,
- IHTMLDOMNode2_tid,
- IHTMLElement_tid,
- IHTMLElement2_tid,
- IHTMLElement3_tid,
+ HTMLELEMENT_TIDS,
IHTMLCommentElement_tid,
0
};
return E_UNEXPECTED;
}
- nsAString_Init(&nsstr, v);
+ nsAString_InitDepend(&nsstr, v);
nsres = nsIDOMHTMLDocument_SetTitle(This->doc_node->nsdoc, &nsstr);
nsAString_Finish(&nsstr);
if(NS_FAILED(nsres))
return E_UNEXPECTED;
}
+ if (!psarray)
+ return S_OK;
+
if(psarray->cDims != 1) {
FIXME("cDims=%d\n", psarray->cDims);
return E_INVALIDARG;
}else if(IsEqualGUID(&IID_IMarshal, riid)) {
TRACE("(%p)->(IID_IMarshal %p) returning NULL\n", This, ppv);
*ppv = NULL;
+ }else if(IsEqualGUID(&IID_IExternalConnection, riid)) {
+ TRACE("(%p)->(IID_IExternalConnection %p) returning NULL\n", This, ppv);
+ *ppv = NULL;
}else if(IsEqualGUID(&IID_IObjectWithSite, riid)) {
TRACE("(%p)->(IID_IObjectWithSite %p)\n", This, ppv);
*ppv = OBJSITE(This);
if(This->basedoc.advise_holder)
IOleAdviseHolder_Release(This->basedoc.advise_holder);
+ if(This->view_sink)
+ IAdviseSink_Release(This->view_sink);
if(This->client)
IOleObject_SetClientSite(OLEOBJ(&This->basedoc), NULL);
if(This->in_place_active)
return E_UNEXPECTED;
}
- nsAString_Init(&text_str, text);
+ nsAString_InitDepend(&text_str, text);
nsres = nsIDOMHTMLDocument_CreateTextNode(This->doc_node->nsdoc, &text_str, &nstext);
nsAString_Finish(&text_str);
if(NS_FAILED(nsres)) {
return E_UNEXPECTED;
}
- nsAString_Init(&id_str, v);
+ nsAString_InitDepend(&id_str, v);
/* get element by id attribute */
nsres = nsIDOMHTMLDocument_GetElementById(This->doc_node->nsdoc, &id_str, &nselem);
if(FAILED(nsres)) {
/* get first element by name attribute */
nsres = nsIDOMHTMLDocument_GetElementsByName(This->doc_node->nsdoc, &id_str, &nsnode_list);
+ nsAString_Finish(&id_str);
if(FAILED(nsres)) {
ERR("getElementsByName failed: %08x\n", nsres);
- nsAString_Finish(&id_str);
if(nsnode_by_id)
nsIDOMNode_Release(nsnode_by_id);
return E_FAIL;
nsIDOMNodeList_Item(nsnode_list, 0, &nsnode_by_name);
nsIDOMNodeList_Release(nsnode_list);
- nsAString_Finish(&id_str);
if(nsnode_by_name && nsnode_by_id) {
nsIDOM3Node *node3;
return E_UNEXPECTED;
}
- nsAString_Init(&id_str, v);
- nsAString_Init(&ns_str, str);
+ nsAString_InitDepend(&id_str, v);
+ nsAString_InitDepend(&ns_str, str);
nsres = nsIDOMHTMLDocument_GetElementsByTagNameNS(This->doc_node->nsdoc, &ns_str, &id_str, &nslist);
nsAString_Finish(&id_str);
nsAString_Finish(&ns_str);
return E_UNEXPECTED;
}
- nsAString_Init(&str, bstrdata);
+ nsAString_InitDepend(&str, bstrdata);
nsres = nsIDOMHTMLDocument_CreateComment(This->doc_node->nsdoc, &str, &nscomment);
nsAString_Finish(&str);
if(NS_FAILED(nsres)) {
return E_UNEXPECTED;
}
- nsAString_Init(&tag_str, tag);
+ nsAString_InitDepend(&tag_str, tag);
nsres = nsIDOMDocument_CreateElement(doc->nsdoc, &tag_str, &nselem);
nsAString_Finish(&tag_str);
if(NS_FAILED(nsres)) {
return E_NOTIMPL;
}
- nsAString_Init(&classname_str, v);
+ nsAString_InitDepend(&classname_str, v);
nsres = nsIDOMHTMLElement_SetClassName(This->nselem, &classname_str);
nsAString_Finish(&classname_str);
if(NS_FAILED(nsres))
return S_OK;
}
- nsAString_Init(&id_str, v);
+ nsAString_InitDepend(&id_str, v);
nsres = nsIDOMHTMLElement_SetId(This->nselem, &id_str);
nsAString_Finish(&id_str);
if(NS_FAILED(nsres))
return S_OK;
}
+static const WCHAR titleW[] = {'t','i','t','l','e',0};
+
static HRESULT WINAPI HTMLElement_put_title(IHTMLElement *iface, BSTR v)
{
HTMLElement *This = HTMLELEM_THIS(iface);
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
- nsAString_Init(&title_str, v);
+ if(!This->nselem) {
+ VARIANT *var;
+ HRESULT hres;
+
+ hres = dispex_get_dprop_ref(&This->node.dispex, titleW, TRUE, &var);
+ if(FAILED(hres))
+ return hres;
+
+ VariantClear(var);
+ V_VT(var) = VT_BSTR;
+ V_BSTR(var) = v ? SysAllocString(v) : NULL;
+ return S_OK;
+ }
+
+ nsAString_InitDepend(&title_str, v);
nsres = nsIDOMHTMLElement_SetTitle(This->nselem, &title_str);
nsAString_Finish(&title_str);
if(NS_FAILED(nsres))
TRACE("(%p)->(%p)\n", This, p);
+ if(!This->nselem) {
+ VARIANT *var;
+ HRESULT hres;
+
+ hres = dispex_get_dprop_ref(&This->node.dispex, titleW, FALSE, &var);
+ if(hres == DISP_E_UNKNOWNNAME) {
+ *p = NULL;
+ }else if(V_VT(var) != VT_BSTR) {
+ FIXME("title = %s\n", debugstr_variant(var));
+ return E_FAIL;
+ }else {
+ *p = V_BSTR(var) ? SysAllocString(V_BSTR(var)) : NULL;
+ }
+
+ return S_OK;
+ }
+
nsAString_Init(&title_str, NULL);
nsres = nsIDOMHTMLElement_GetTitle(This->nselem, &title_str);
if(NS_SUCCEEDED(nsres)) {
return E_FAIL;
}
- nsAString_Init(&html_str, v);
+ nsAString_InitDepend(&html_str, v);
nsres = nsIDOMNSHTMLElement_SetInnerHTML(nselem, &html_str);
nsAString_Finish(&html_str);
nsIDOMNode_Release(tmp);
}
- nsAString_Init(&text_str, v);
+ nsAString_InitDepend(&text_str, v);
nsres = nsIDOMHTMLDocument_CreateTextNode(This->node.doc->nsdoc, &text_str, &text_node);
nsAString_Finish(&text_str);
if(NS_FAILED(nsres)) {
return E_FAIL;
}
- nsAString_Init(&html_str, v);
+ nsAString_InitDepend(&html_str, v);
nsIDOMNSRange_CreateContextualFragment(nsrange, &html_str, &nsfragment);
nsIDOMNSRange_Release(nsrange);
nsAString_Finish(&html_str);
return E_FAIL;
}
- nsAString_Init(&ns_html, html);
+ nsAString_InitDepend(&ns_html, html);
nsres = nsIDOMNSRange_CreateContextualFragment(nsrange, &ns_html, (nsIDOMDocumentFragment **)&nsnode);
nsIDOMNSRange_Release(nsrange);
}
- nsAString_Init(&ns_text, text);
+ nsAString_InitDepend(&ns_text, text);
nsres = nsIDOMDocument_CreateTextNode(This->node.doc->nsdoc, &ns_text, (nsIDOMText **)&nsnode);
nsAString_Finish(&ns_text);
};
static const tid_t HTMLElement_iface_tids[] = {
- IHTMLDOMNode_tid,
- IHTMLDOMNode2_tid,
- IHTMLElement_tid,
- IHTMLElement2_tid,
- IHTMLElement3_tid,
+ HTMLELEMENT_TIDS,
0
};
if(!ret) {
ret = heap_alloc_zero(sizeof(HTMLElement));
- HTMLElement_Init(ret, doc, nselem, NULL);
+ HTMLElement_Init(ret, doc, nselem, &HTMLElement_dispex);
ret->node.vtbl = &HTMLElementImplVtbl;
}
static HRESULT WINAPI HTMLElement2_detachEvent(IHTMLElement2 *iface, BSTR event, IDispatch *pDisp)
{
HTMLElement *This = HTMLELEM2_THIS(iface);
- FIXME("(%p)->(%s %p)\n", This, debugstr_w(event), pDisp);
- return E_NOTIMPL;
+
+ TRACE("(%p)->(%s %p)\n", This, debugstr_w(event), pDisp);
+
+ return detach_event(*get_node_event_target(&This->node), &This->node.doc->basedoc, event, pDisp);
}
static HRESULT WINAPI HTMLElement2_get_readyState(IHTMLElement2 *iface, VARIANT *p)
TRACE("(%p)->(%s %p)\n", This, debugstr_w(v), pelColl);
- nsAString_Init(&tag_str, v);
+ nsAString_InitDepend(&tag_str, v);
nsres = nsIDOMHTMLElement_GetElementsByTagName(This->nselem, &tag_str, &nslist);
nsAString_Finish(&tag_str);
if(NS_FAILED(nsres)) {
return TRUE;
}
- nsAString_Init(&nsname, nameW);
+ nsAString_InitDepend(&nsname, nameW);
nsres = nsIDOMHTMLElement_GetAttribute(elem->nselem, &nsname, &nsstr);
nsAString_Finish(&nsname);
if(NS_SUCCEEDED(nsres)) {
if(NS_SUCCEEDED(nsres)) {
nsAString type_str;
- nsAString_Init(&type_str, event_types[event_info[eid].type]);
+ nsAString_InitDepend(&type_str, event_types[event_info[eid].type]);
nsres = nsIDOMDocumentEvent_CreateEvent(doc_event, &type_str, &ret->nsevent);
nsAString_Finish(&type_str);
nsIDOMDocumentEvent_Release(doc_event);
ConnectionPointContainer *cp_container, eventid_t eid, IDispatch *this_obj)
{
handler_vector_t *handler_vector = NULL;
- DWORD i;
+ int i;
HRESULT hres;
if(event_target)
V_VT(&arg) = VT_DISPATCH;
V_DISPATCH(&arg) = (IDispatch*)event_obj;
- for(i=0; i < handler_vector->handler_cnt; i++) {
+ i = handler_vector->handler_cnt;
+ while(i--) {
if(handler_vector->handlers[i]) {
TRACE("%s [%d] >>>\n", debugstr_w(event_info[eid].name), i);
hres = call_disp_func(handler_vector->handlers[i], &dp);
for(cp = cp_container->cp_list; cp; cp = cp->next) {
if(cp->sinks_size && is_cp_event(cp->data, event_info[eid].dispid)) {
for(i=0; i < cp->sinks_size; i++) {
+ if(!cp->sinks[i].disp)
+ continue;
+
TRACE("cp %s [%d] >>>\n", debugstr_w(event_info[eid].name), i);
hres = call_cp_func(cp->sinks[i].disp, event_info[eid].dispid);
if(hres == S_OK)
event_target->event_table[eid]->handlers[i] = disp;
*res = VARIANT_TRUE;
+ return ensure_nsevent_handler(doc->doc_node, eid);
+}
+
+HRESULT detach_event(event_target_t *event_target, HTMLDocument *doc, BSTR name, IDispatch *disp)
+{
+ eventid_t eid;
+ DWORD i = 0;
+
+ if(!event_target)
+ return S_OK;
+
+ eid = attr_to_eid(name);
+ if(eid == EVENTID_LAST) {
+ WARN("Unknown event\n");
+ return S_OK;
+ }
+
+ if(!event_target->event_table[eid])
+ return S_OK;
+
+ while(i < event_target->event_table[eid]->handler_cnt) {
+ if(event_target->event_table[eid]->handlers[i] == disp) {
+ IDispatch_Release(event_target->event_table[eid]->handlers[i]);
+ event_target->event_table[eid]->handlers[i] = NULL;
+ }
+ i++;
+ }
+
return S_OK;
}
HRESULT set_event_handler(event_target_t**,HTMLDocumentNode*,eventid_t,VARIANT*);
HRESULT get_event_handler(event_target_t**,eventid_t,VARIANT*);
HRESULT attach_event(event_target_t**,HTMLDocument*,BSTR,IDispatch*,VARIANT_BOOL*);
+HRESULT detach_event(event_target_t*,HTMLDocument*,BSTR,IDispatch*);
HRESULT dispatch_event(HTMLDOMNode*,const WCHAR*,VARIANT*,VARIANT_BOOL*);
HRESULT call_event(HTMLDOMNode*,eventid_t);
void update_cp_events(HTMLWindow*,cp_static_data_t*);
{
HTMLFormElement *This = HTMLFORM_NODE_THIS(iface);
nsIDOMHTMLCollection *elements;
+ nsAString nsname, nsstr;
PRUint32 len, i;
- static const PRUnichar nameW[] = {'n','a','m','e',0};
- nsAString nsname;
nsresult nsres;
+ HRESULT hres = DISP_E_UNKNOWNNAME;
+
+ static const PRUnichar nameW[] = {'n','a','m','e',0};
TRACE("(%p)->(%s %x %p)\n", This, wine_dbgstr_w(name), grfdex, pid);
return E_FAIL;
}
- nsAString_Init(&nsname, nameW);
+ nsAString_InitDepend(&nsname, nameW);
+ nsAString_Init(&nsstr, NULL);
for(i = 0; i < len; ++i) {
nsIDOMNode *nsitem;
nsIDOMHTMLElement *nshtml_elem;
- nsAString nsstr;
const PRUnichar *str;
nsres = nsIDOMHTMLCollection_Item(elements, i, &nsitem);
if(NS_FAILED(nsres)) {
FIXME("Item failed: 0x%08x\n", nsres);
- nsAString_Finish(&nsname);
- nsIDOMHTMLCollection_Release(elements);
- return E_FAIL;
+ hres = E_FAIL;
+ break;
}
nsres = nsIDOMNode_QueryInterface(nsitem, &IID_nsIDOMHTMLElement, (void**)&nshtml_elem);
nsIDOMNode_Release(nsitem);
if(NS_FAILED(nsres)) {
FIXME("Failed to get nsIDOMHTMLNode interface: 0x%08x\n", nsres);
- nsAString_Finish(&nsname);
- nsIDOMHTMLCollection_Release(elements);
- return E_FAIL;
+ hres = E_FAIL;
+ break;
}
/* compare by id attr */
- nsAString_Init(&nsstr, NULL);
nsres = nsIDOMHTMLElement_GetId(nshtml_elem, &nsstr);
if(NS_FAILED(nsres)) {
FIXME("GetId failed: 0x%08x\n", nsres);
- nsAString_Finish(&nsname);
nsIDOMHTMLElement_Release(nshtml_elem);
- nsIDOMHTMLCollection_Release(elements);
- return E_FAIL;
+ hres = E_FAIL;
+ break;
}
nsAString_GetData(&nsstr, &str);
if(!strcmpiW(str, name)) {
+ nsIDOMHTMLElement_Release(nshtml_elem);
/* FIXME: using index for dispid */
*pid = MSHTML_DISPID_CUSTOM_MIN + i;
- nsAString_Finish(&nsname);
- nsAString_Finish(&nsstr);
- nsIDOMHTMLElement_Release(nshtml_elem);
- nsIDOMHTMLCollection_Release(elements);
- return S_OK;
+ hres = S_OK;
+ break;
}
/* compare by name attr */
nsres = nsIDOMHTMLElement_GetAttribute(nshtml_elem, &nsname, &nsstr);
+ nsIDOMHTMLElement_Release(nshtml_elem);
nsAString_GetData(&nsstr, &str);
if(!strcmpiW(str, name)) {
/* FIXME: using index for dispid */
*pid = MSHTML_DISPID_CUSTOM_MIN + i;
- nsAString_Finish(&nsname);
- nsAString_Finish(&nsstr);
- nsIDOMHTMLElement_Release(nshtml_elem);
- nsIDOMHTMLCollection_Release(elements);
- return S_OK;
+ hres = S_OK;
+ break;
}
- nsAString_Finish(&nsstr);
-
- nsIDOMHTMLElement_Release(nshtml_elem);
}
nsAString_Finish(&nsname);
+ nsAString_Finish(&nsstr);
nsIDOMHTMLCollection_Release(elements);
- return DISP_E_UNKNOWNNAME;
+ return hres;
}
static HRESULT HTMLFormElement_invoke(HTMLDOMNode *iface,
};
static const tid_t HTMLFormElement_iface_tids[] = {
- IHTMLDOMNode_tid,
- IHTMLDOMNode2_tid,
- IHTMLElement_tid,
- IHTMLElement2_tid,
- IHTMLElement3_tid,
+ HTMLELEMENT_TIDS,
IHTMLFormElement_tid,
0
};
--- /dev/null
+/*
+ * Copyright 2010 Jacek Caban for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include <stdarg.h>
+
+#define COBJMACROS
+
+#include "windef.h"
+#include "winbase.h"
+#include "winuser.h"
+#include "ole2.h"
+
+#include "mshtml_private.h"
+
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
+
+typedef struct {
+ HTMLFrameBase framebase;
+ const IHTMLFrameElement3Vtbl *lpIHTMLFrameElement3Vtbl;
+} HTMLFrameElement;
+
+#define HTMLFRAMEELEM3(x) ((IHTMLFrameElement3*) &(x)->lpIHTMLFrameElement3Vtbl)
+
+#define HTMLFRAME3_THIS(iface) DEFINE_THIS(HTMLFrameElement, IHTMLFrameElement3, iface)
+
+static HRESULT WINAPI HTMLFrameElement3_QueryInterface(IHTMLFrameElement3 *iface,
+ REFIID riid, void **ppv)
+{
+ HTMLFrameElement *This = HTMLFRAME3_THIS(iface);
+
+ return IHTMLDOMNode_QueryInterface(HTMLDOMNODE(&This->framebase.element.node), riid, ppv);
+}
+
+static ULONG WINAPI HTMLFrameElement3_AddRef(IHTMLFrameElement3 *iface)
+{
+ HTMLFrameElement *This = HTMLFRAME3_THIS(iface);
+
+ return IHTMLDOMNode_AddRef(HTMLDOMNODE(&This->framebase.element.node));
+}
+
+static ULONG WINAPI HTMLFrameElement3_Release(IHTMLFrameElement3 *iface)
+{
+ HTMLFrameElement *This = HTMLFRAME3_THIS(iface);
+
+ return IHTMLDOMNode_Release(HTMLDOMNODE(&This->framebase.element.node));
+}
+
+static HRESULT WINAPI HTMLFrameElement3_GetTypeInfoCount(IHTMLFrameElement3 *iface, UINT *pctinfo)
+{
+ HTMLFrameElement *This = HTMLFRAME3_THIS(iface);
+ return IDispatchEx_GetTypeInfoCount(DISPATCHEX(&This->framebase.element.node.dispex), pctinfo);
+}
+
+static HRESULT WINAPI HTMLFrameElement3_GetTypeInfo(IHTMLFrameElement3 *iface, UINT iTInfo,
+ LCID lcid, ITypeInfo **ppTInfo)
+{
+ HTMLFrameElement *This = HTMLFRAME3_THIS(iface);
+ return IDispatchEx_GetTypeInfo(DISPATCHEX(&This->framebase.element.node.dispex), iTInfo, lcid, ppTInfo);
+}
+
+static HRESULT WINAPI HTMLFrameElement3_GetIDsOfNames(IHTMLFrameElement3 *iface, REFIID riid,
+ LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
+{
+ HTMLFrameElement *This = HTMLFRAME3_THIS(iface);
+ return IDispatchEx_GetIDsOfNames(DISPATCHEX(&This->framebase.element.node.dispex), riid, rgszNames, cNames, lcid, rgDispId);
+}
+
+static HRESULT WINAPI HTMLFrameElement3_Invoke(IHTMLFrameElement3 *iface, DISPID dispIdMember,
+ REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
+ VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
+{
+ HTMLFrameElement *This = HTMLFRAME3_THIS(iface);
+ return IDispatchEx_Invoke(DISPATCHEX(&This->framebase.element.node.dispex), dispIdMember, riid,
+ lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
+}
+
+static HRESULT WINAPI HTMLFrameElement3_get_contentDocument(IHTMLFrameElement3 *iface, IDispatch **p)
+{
+ HTMLFrameElement *This = HTMLFRAME3_THIS(iface);
+ IHTMLDocument2 *doc;
+ HRESULT hres;
+
+ TRACE("(%p)->(%p)\n", This, p);
+
+ if(!This->framebase.content_window) {
+ FIXME("NULL window\n");
+ return E_FAIL;
+ }
+
+ hres = IHTMLWindow2_get_document(HTMLWINDOW2(This->framebase.content_window), &doc);
+ if(FAILED(hres))
+ return hres;
+
+ *p = doc ? (IDispatch*)doc : NULL;
+ return S_OK;
+}
+
+static HRESULT WINAPI HTMLFrameElement3_put_src(IHTMLFrameElement3 *iface, BSTR v)
+{
+ HTMLFrameElement *This = HTMLFRAME3_THIS(iface);
+ FIXME("(%p)->(%s)\n", This, debugstr_w(v));
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLFrameElement3_get_src(IHTMLFrameElement3 *iface, BSTR *p)
+{
+ HTMLFrameElement *This = HTMLFRAME3_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLFrameElement3_put_longDesc(IHTMLFrameElement3 *iface, BSTR v)
+{
+ HTMLFrameElement *This = HTMLFRAME3_THIS(iface);
+ FIXME("(%p)->(%s)\n", This, debugstr_w(v));
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLFrameElement3_get_longDesc(IHTMLFrameElement3 *iface, BSTR *p)
+{
+ HTMLFrameElement *This = HTMLFRAME3_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLFrameElement3_put_frameBorder(IHTMLFrameElement3 *iface, BSTR v)
+{
+ HTMLFrameElement *This = HTMLFRAME3_THIS(iface);
+ FIXME("(%p)->(%s)\n", This, debugstr_w(v));
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLFrameElement3_get_frameBorder(IHTMLFrameElement3 *iface, BSTR *p)
+{
+ HTMLFrameElement *This = HTMLFRAME3_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+#undef HTMLFRAME3_THIS
+
+static const IHTMLFrameElement3Vtbl HTMLFrameElement3Vtbl = {
+ HTMLFrameElement3_QueryInterface,
+ HTMLFrameElement3_AddRef,
+ HTMLFrameElement3_Release,
+ HTMLFrameElement3_GetTypeInfoCount,
+ HTMLFrameElement3_GetTypeInfo,
+ HTMLFrameElement3_GetIDsOfNames,
+ HTMLFrameElement3_Invoke,
+ HTMLFrameElement3_get_contentDocument,
+ HTMLFrameElement3_put_src,
+ HTMLFrameElement3_get_src,
+ HTMLFrameElement3_put_longDesc,
+ HTMLFrameElement3_get_longDesc,
+ HTMLFrameElement3_put_frameBorder,
+ HTMLFrameElement3_get_frameBorder
+};
+
+#define HTMLFRAME_NODE_THIS(iface) DEFINE_THIS2(HTMLFrameElement, framebase.element.node, iface)
+
+static HRESULT HTMLFrameElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
+{
+ HTMLFrameElement *This = HTMLFRAME_NODE_THIS(iface);
+
+ if(IsEqualGUID(&IID_IHTMLFrameElement3, riid)) {
+ TRACE("(%p)->(IID_IHTMLFrameElement3 %p)\n", This, ppv);
+ *ppv = HTMLFRAMEELEM3(This);
+ }else {
+ return HTMLFrameBase_QI(&This->framebase, riid, ppv);
+ }
+
+ IUnknown_AddRef((IUnknown*)*ppv);
+ return S_OK;
+}
+
+static void HTMLFrameElement_destructor(HTMLDOMNode *iface)
+{
+ HTMLFrameElement *This = HTMLFRAME_NODE_THIS(iface);
+
+ HTMLFrameBase_destructor(&This->framebase);
+}
+
+static HRESULT HTMLFrameElement_get_document(HTMLDOMNode *iface, IDispatch **p)
+{
+ HTMLFrameElement *This = HTMLFRAME_NODE_THIS(iface);
+
+ if(!This->framebase.content_window || !This->framebase.content_window->doc) {
+ *p = NULL;
+ return S_OK;
+ }
+
+ *p = (IDispatch*)HTMLDOC(&This->framebase.content_window->doc->basedoc);
+ IDispatch_AddRef(*p);
+ return S_OK;
+}
+
+static HRESULT HTMLFrameElement_get_dispid(HTMLDOMNode *iface, BSTR name,
+ DWORD grfdex, DISPID *pid)
+{
+ HTMLFrameElement *This = HTMLFRAME_NODE_THIS(iface);
+
+ if(!This->framebase.content_window)
+ return DISP_E_UNKNOWNNAME;
+
+ return search_window_props(This->framebase.content_window, name, grfdex, pid);
+}
+
+static HRESULT HTMLFrameElement_invoke(HTMLDOMNode *iface, DISPID id, LCID lcid,
+ WORD flags, DISPPARAMS *params, VARIANT *res, EXCEPINFO *ei, IServiceProvider *caller)
+{
+ HTMLFrameElement *This = HTMLFRAME_NODE_THIS(iface);
+
+ if(!This->framebase.content_window) {
+ ERR("no content window to invoke on\n");
+ return E_FAIL;
+ }
+
+ return IDispatchEx_InvokeEx(DISPATCHEX(This->framebase.content_window), id, lcid, flags, params, res, ei, caller);
+}
+
+static HRESULT HTMLFrameElement_bind_to_tree(HTMLDOMNode *iface)
+{
+ HTMLFrameElement *This = HTMLFRAME_NODE_THIS(iface);
+ nsIDOMDocument *nsdoc;
+ nsresult nsres;
+ HRESULT hres;
+
+ nsres = nsIDOMHTMLFrameElement_GetContentDocument(This->framebase.nsframe, &nsdoc);
+ if(NS_FAILED(nsres) || !nsdoc) {
+ ERR("GetContentDocument failed: %08x\n", nsres);
+ return E_FAIL;
+ }
+
+ hres = set_frame_doc(&This->framebase, nsdoc);
+ nsIDOMDocument_Release(nsdoc);
+ return hres;
+}
+
+#undef HTMLFRAME_NODE_THIS
+
+static const NodeImplVtbl HTMLFrameElementImplVtbl = {
+ HTMLFrameElement_QI,
+ HTMLFrameElement_destructor,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ HTMLFrameElement_get_document,
+ NULL,
+ HTMLFrameElement_get_dispid,
+ HTMLFrameElement_invoke,
+ HTMLFrameElement_bind_to_tree
+};
+
+static const tid_t HTMLFrameElement_iface_tids[] = {
+ HTMLELEMENT_TIDS,
+ IHTMLFrameBase_tid,
+ IHTMLFrameBase2_tid,
+ IHTMLFrameElement3_tid,
+ 0
+};
+
+static dispex_static_data_t HTMLFrameElement_dispex = {
+ NULL,
+ DispHTMLFrameElement_tid,
+ NULL,
+ HTMLFrameElement_iface_tids
+};
+
+HTMLElement *HTMLFrameElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem)
+{
+ HTMLFrameElement *ret;
+
+ ret = heap_alloc_zero(sizeof(HTMLFrameElement));
+
+ ret->framebase.element.node.vtbl = &HTMLFrameElementImplVtbl;
+ ret->lpIHTMLFrameElement3Vtbl = &HTMLFrameElement3Vtbl;
+
+ HTMLFrameBase_Init(&ret->framebase, doc, nselem, &HTMLFrameElement_dispex);
+
+ return &ret->framebase.element;
+}
return E_INVALIDARG;
if(This->nsframe) {
- nsAString_Init(&nsstr, v);
+ nsAString_InitDepend(&nsstr, v);
nsres = nsIDOMHTMLFrameElement_SetScrolling(This->nsframe, &nsstr);
}else if(This->nsiframe) {
- nsAString_Init(&nsstr, v);
+ nsAString_InitDepend(&nsstr, v);
nsres = nsIDOMHTMLIFrameElement_SetScrolling(This->nsiframe, &nsstr);
}else {
ERR("No attached ns frame object\n");
}else
This->nsiframe = NULL;
}
-
-typedef struct {
- HTMLFrameBase framebase;
-} HTMLFrameElement;
-
-#define HTMLFRAME_NODE_THIS(iface) DEFINE_THIS2(HTMLFrameElement, framebase.element.node, iface)
-
-static HRESULT HTMLFrameElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
-{
- HTMLFrameElement *This = HTMLFRAME_NODE_THIS(iface);
-
- return HTMLFrameBase_QI(&This->framebase, riid, ppv);
-}
-
-static void HTMLFrameElement_destructor(HTMLDOMNode *iface)
-{
- HTMLFrameElement *This = HTMLFRAME_NODE_THIS(iface);
-
- HTMLFrameBase_destructor(&This->framebase);
-}
-
-static HRESULT HTMLFrameElement_get_document(HTMLDOMNode *iface, IDispatch **p)
-{
- HTMLFrameElement *This = HTMLFRAME_NODE_THIS(iface);
-
- if(!This->framebase.content_window || !This->framebase.content_window->doc) {
- *p = NULL;
- return S_OK;
- }
-
- *p = (IDispatch*)HTMLDOC(&This->framebase.content_window->doc->basedoc);
- IDispatch_AddRef(*p);
- return S_OK;
-}
-
-static HRESULT HTMLFrameElement_get_dispid(HTMLDOMNode *iface, BSTR name,
- DWORD grfdex, DISPID *pid)
-{
- HTMLFrameElement *This = HTMLFRAME_NODE_THIS(iface);
-
- if(!This->framebase.content_window)
- return DISP_E_UNKNOWNNAME;
-
- return search_window_props(This->framebase.content_window, name, grfdex, pid);
-}
-
-static HRESULT HTMLFrameElement_invoke(HTMLDOMNode *iface, DISPID id, LCID lcid,
- WORD flags, DISPPARAMS *params, VARIANT *res, EXCEPINFO *ei, IServiceProvider *caller)
-{
- HTMLFrameElement *This = HTMLFRAME_NODE_THIS(iface);
-
- if(!This->framebase.content_window) {
- ERR("no content window to invoke on\n");
- return E_FAIL;
- }
-
- return IDispatchEx_InvokeEx(DISPATCHEX(This->framebase.content_window), id, lcid, flags, params, res, ei, caller);
-}
-
-static HRESULT HTMLFrameElement_bind_to_tree(HTMLDOMNode *iface)
-{
- HTMLFrameElement *This = HTMLFRAME_NODE_THIS(iface);
- nsIDOMDocument *nsdoc;
- nsresult nsres;
- HRESULT hres;
-
- nsres = nsIDOMHTMLFrameElement_GetContentDocument(This->framebase.nsframe, &nsdoc);
- if(NS_FAILED(nsres) || !nsdoc) {
- ERR("GetContentDocument failed: %08x\n", nsres);
- return E_FAIL;
- }
-
- hres = set_frame_doc(&This->framebase, nsdoc);
- nsIDOMDocument_Release(nsdoc);
- return hres;
-}
-
-#undef HTMLFRAME_NODE_THIS
-
-static const NodeImplVtbl HTMLFrameElementImplVtbl = {
- HTMLFrameElement_QI,
- HTMLFrameElement_destructor,
- NULL,
- NULL,
- NULL,
- NULL,
- HTMLFrameElement_get_document,
- NULL,
- HTMLFrameElement_get_dispid,
- HTMLFrameElement_invoke,
- HTMLFrameElement_bind_to_tree
-};
-
-HTMLElement *HTMLFrameElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem)
-{
- HTMLFrameElement *ret;
-
- ret = heap_alloc_zero(sizeof(HTMLFrameElement));
-
- ret->framebase.element.node.vtbl = &HTMLFrameElementImplVtbl;
-
- HTMLFrameBase_Init(&ret->framebase, doc, nselem, NULL);
-
- return &ret->framebase.element;
-}
};
static const tid_t HTMLGenericElement_iface_tids[] = {
- IHTMLDOMNode_tid,
- IHTMLDOMNode2_tid,
- IHTMLElement_tid,
- IHTMLElement2_tid,
- IHTMLElement3_tid,
+ HTMLELEMENT_TIDS,
IHTMLGenericElement_tid,
0
};
typedef struct {
HTMLFrameBase framebase;
+ const IHTMLIFrameElementVtbl *lpIHTMLIFrameElementVtbl;
} HTMLIFrame;
+#define HTMLIFRAMEELEM(x) ((IHTMLIFrameElement*) &(x)->lpIHTMLIFrameElementVtbl)
+
+#define HTMLIFRAME_THIS(iface) DEFINE_THIS(HTMLIFrame, IHTMLIFrameElement, iface)
+
+static HRESULT WINAPI HTMLIFrameElement_QueryInterface(IHTMLIFrameElement *iface,
+ REFIID riid, void **ppv)
+{
+ HTMLIFrame *This = HTMLIFRAME_THIS(iface);
+
+ return IHTMLDOMNode_QueryInterface(HTMLDOMNODE(&This->framebase.element.node), riid, ppv);
+}
+
+static ULONG WINAPI HTMLIFrameElement_AddRef(IHTMLIFrameElement *iface)
+{
+ HTMLIFrame *This = HTMLIFRAME_THIS(iface);
+
+ return IHTMLDOMNode_AddRef(HTMLDOMNODE(&This->framebase.element.node));
+}
+
+static ULONG WINAPI HTMLIFrameElement_Release(IHTMLIFrameElement *iface)
+{
+ HTMLIFrame *This = HTMLIFRAME_THIS(iface);
+
+ return IHTMLDOMNode_Release(HTMLDOMNODE(&This->framebase.element.node));
+}
+
+static HRESULT WINAPI HTMLIFrameElement_GetTypeInfoCount(IHTMLIFrameElement *iface, UINT *pctinfo)
+{
+ HTMLIFrame *This = HTMLIFRAME_THIS(iface);
+ return IDispatchEx_GetTypeInfoCount(DISPATCHEX(&This->framebase.element.node.dispex), pctinfo);
+}
+
+static HRESULT WINAPI HTMLIFrameElement_GetTypeInfo(IHTMLIFrameElement *iface, UINT iTInfo,
+ LCID lcid, ITypeInfo **ppTInfo)
+{
+ HTMLIFrame *This = HTMLIFRAME_THIS(iface);
+ return IDispatchEx_GetTypeInfo(DISPATCHEX(&This->framebase.element.node.dispex), iTInfo, lcid, ppTInfo);
+}
+
+static HRESULT WINAPI HTMLIFrameElement_GetIDsOfNames(IHTMLIFrameElement *iface, REFIID riid,
+ LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
+{
+ HTMLIFrame *This = HTMLIFRAME_THIS(iface);
+ return IDispatchEx_GetIDsOfNames(DISPATCHEX(&This->framebase.element.node.dispex), riid, rgszNames, cNames, lcid, rgDispId);
+}
+
+static HRESULT WINAPI HTMLIFrameElement_Invoke(IHTMLIFrameElement *iface, DISPID dispIdMember,
+ REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
+ VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
+{
+ HTMLIFrame *This = HTMLIFRAME_THIS(iface);
+ return IDispatchEx_Invoke(DISPATCHEX(&This->framebase.element.node.dispex), dispIdMember, riid,
+ lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
+}
+
+static HRESULT WINAPI HTMLIFrameElement_put_vspace(IHTMLIFrameElement *iface, LONG v)
+{
+ HTMLIFrame *This = HTMLIFRAME_THIS(iface);
+ FIXME("(%p)->(%d)\n", This, v);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLIFrameElement_get_vspace(IHTMLIFrameElement *iface, LONG *p)
+{
+ HTMLIFrame *This = HTMLIFRAME_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLIFrameElement_put_hspace(IHTMLIFrameElement *iface, LONG v)
+{
+ HTMLIFrame *This = HTMLIFRAME_THIS(iface);
+ FIXME("(%p)->(%d)\n", This, v);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLIFrameElement_get_hspace(IHTMLIFrameElement *iface, LONG *p)
+{
+ HTMLIFrame *This = HTMLIFRAME_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLIFrameElement_put_align(IHTMLIFrameElement *iface, BSTR v)
+{
+ HTMLIFrame *This = HTMLIFRAME_THIS(iface);
+ FIXME("(%p)->(%s)\n", This, debugstr_w(v));
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLIFrameElement_get_align(IHTMLIFrameElement *iface, BSTR *p)
+{
+ HTMLIFrame *This = HTMLIFRAME_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, p);
+ return E_NOTIMPL;
+}
+
+#undef HTMLIFRAME_THIS
+
+static const IHTMLIFrameElementVtbl HTMLIFrameElementVtbl = {
+ HTMLIFrameElement_QueryInterface,
+ HTMLIFrameElement_AddRef,
+ HTMLIFrameElement_Release,
+ HTMLIFrameElement_GetTypeInfoCount,
+ HTMLIFrameElement_GetTypeInfo,
+ HTMLIFrameElement_GetIDsOfNames,
+ HTMLIFrameElement_Invoke,
+ HTMLIFrameElement_put_vspace,
+ HTMLIFrameElement_get_vspace,
+ HTMLIFrameElement_put_hspace,
+ HTMLIFrameElement_get_hspace,
+ HTMLIFrameElement_put_align,
+ HTMLIFrameElement_get_align
+};
+
#define HTMLIFRAME_NODE_THIS(iface) DEFINE_THIS2(HTMLIFrame, framebase.element.node, iface)
static HRESULT HTMLIFrame_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
{
HTMLIFrame *This = HTMLIFRAME_NODE_THIS(iface);
- return HTMLFrameBase_QI(&This->framebase, riid, ppv);
+ if(IsEqualGUID(&IID_IHTMLIFrameElement, riid)) {
+ TRACE("(%p)->(IID_IHTMLIFrameElement %p)\n", This, ppv);
+ *ppv = HTMLIFRAMEELEM(This);
+ }else {
+ return HTMLFrameBase_QI(&This->framebase, riid, ppv);
+ }
+
+ IUnknown_AddRef((IUnknown*)*ppv);
+ return S_OK;
}
static void HTMLIFrame_destructor(HTMLDOMNode *iface)
};
static const tid_t HTMLIFrame_iface_tids[] = {
- IHTMLDOMNode_tid,
- IHTMLDOMNode2_tid,
- IHTMLElement_tid,
- IHTMLElement2_tid,
- IHTMLElement3_tid,
+ HTMLELEMENT_TIDS,
IHTMLFrameBase_tid,
IHTMLFrameBase2_tid,
+ IHTMLIFrameElement_tid,
0
};
ret = heap_alloc_zero(sizeof(HTMLIFrame));
+ ret->lpIHTMLIFrameElementVtbl = &HTMLIFrameElementVtbl;
ret->framebase.element.node.vtbl = &HTMLIFrameImplVtbl;
HTMLFrameBase_Init(&ret->framebase, doc, nselem, &HTMLIFrame_dispex);
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
- nsAString_Init(&alt_str, v);
+ nsAString_InitDepend(&alt_str, v);
nsres = nsIDOMHTMLImageElement_SetAlt(This->nsimg, &alt_str);
nsAString_Finish(&alt_str);
if(NS_FAILED(nsres))
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
- nsAString_Init(&src_str, v);
+ nsAString_InitDepend(&src_str, v);
nsres = nsIDOMHTMLImageElement_SetSrc(This->nsimg, &src_str);
nsAString_Finish(&src_str);
if(NS_FAILED(nsres))
static HRESULT WINAPI HTMLImgElement_put_width(IHTMLImgElement *iface, LONG v)
{
HTMLImgElement *This = HTMLIMG_THIS(iface);
- FIXME("(%p)->(%d)\n", This, v);
- return E_NOTIMPL;
+ nsresult nsres;
+
+ TRACE("(%p)->(%d)\n", This, v);
+
+ nsres = nsIDOMHTMLImageElement_SetWidth(This->nsimg, v);
+ if(NS_FAILED(nsres)) {
+ ERR("SetWidth failed: %08x\n", nsres);
+ return E_FAIL;
+ }
+
+ return S_OK;
}
static HRESULT WINAPI HTMLImgElement_get_width(IHTMLImgElement *iface, LONG *p)
{
HTMLImgElement *This = HTMLIMG_THIS(iface);
- FIXME("(%p)->(%p)\n", This, p);
- return E_NOTIMPL;
+ PRInt32 width;
+ nsresult nsres;
+
+ TRACE("(%p)->(%p)\n", This, p);
+
+ nsres = nsIDOMHTMLImageElement_GetWidth(This->nsimg, &width);
+ if(NS_FAILED(nsres)) {
+ ERR("GetWidth failed: %08x\n", nsres);
+ return E_FAIL;
+ }
+
+ *p = width;
+ return S_OK;
}
static HRESULT WINAPI HTMLImgElement_put_height(IHTMLImgElement *iface, LONG v)
{
HTMLImgElement *This = HTMLIMG_THIS(iface);
- FIXME("(%p)->(%d)\n", This, v);
- return E_NOTIMPL;
+ nsresult nsres;
+
+ TRACE("(%p)->(%d)\n", This, v);
+
+ nsres = nsIDOMHTMLImageElement_SetHeight(This->nsimg, v);
+ if(NS_FAILED(nsres)) {
+ ERR("SetHeight failed: %08x\n", nsres);
+ return E_FAIL;
+ }
+
+ return S_OK;
}
static HRESULT WINAPI HTMLImgElement_get_height(IHTMLImgElement *iface, LONG *p)
{
HTMLImgElement *This = HTMLIMG_THIS(iface);
- FIXME("(%p)->(%p)\n", This, p);
- return E_NOTIMPL;
+ PRInt32 height;
+ nsresult nsres;
+
+ TRACE("(%p)->(%p)\n", This, p);
+
+ nsres = nsIDOMHTMLImageElement_GetHeight(This->nsimg, &height);
+ if(NS_FAILED(nsres)) {
+ ERR("GetHeight failed: %08x\n", nsres);
+ return E_FAIL;
+ }
+
+ *p = height;
+ return S_OK;
}
static HRESULT WINAPI HTMLImgElement_put_start(IHTMLImgElement *iface, BSTR v)
};
static const tid_t HTMLImgElement_iface_tids[] = {
- IHTMLDOMNode_tid,
- IHTMLDOMNode2_tid,
- IHTMLElement_tid,
- IHTMLElement2_tid,
- IHTMLElement3_tid,
+ HTMLELEMENT_TIDS,
IHTMLImgElement_tid,
0
};
return E_NOTIMPL;
}
+static LONG var_to_size(const VARIANT *v)
+{
+ switch(V_VT(v)) {
+ case VT_EMPTY:
+ return 0;
+ case VT_I4:
+ return V_I4(v);
+ case VT_BSTR: {
+ LONG ret;
+ HRESULT hres;
+
+ hres = VarI4FromStr(V_BSTR(v), 0, 0, &ret);
+ if(FAILED(hres)) {
+ FIXME("VarI4FromStr failed: %08x\n", hres);
+ return 0;
+ }
+ return ret;
+ }
+ default:
+ FIXME("unsupported size %s\n", debugstr_variant(v));
+ }
+ return 0;
+}
+
static HRESULT WINAPI HTMLImageElementFactory_create(IHTMLImageElementFactory *iface,
VARIANT width, VARIANT height, IHTMLImgElement **img_elem)
{
HTMLImageElementFactory *This = HTMLIMGFACTORY_THIS(iface);
+ IHTMLImgElement *img;
HTMLElement *elem;
nsIDOMHTMLElement *nselem;
+ LONG l;
HRESULT hres;
static const PRUnichar imgW[] = {'I','M','G',0};
return E_FAIL;
}
- hres = IHTMLElement_QueryInterface(HTMLELEM(elem), &IID_IHTMLImgElement, (void**)img_elem);
+ hres = IHTMLElement_QueryInterface(HTMLELEM(elem), &IID_IHTMLImgElement, (void**)&img);
if(FAILED(hres)) {
ERR("IHTMLElement_QueryInterface failed: 0x%08x\n", hres);
return hres;
nsIDOMHTMLElement_Release(nselem);
- if(V_VT(&width) != VT_EMPTY || V_VT(&height) != VT_EMPTY)
- FIXME("Not setting image dimensions\n");
+ l = var_to_size(&width);
+ if(l)
+ IHTMLImgElement_put_width(img, l);
+ l = var_to_size(&height);
+ if(l)
+ IHTMLImgElement_put_height(img, l);
+ *img_elem = img;
return S_OK;
}
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
- nsAString_Init(&val_str, v);
+ nsAString_InitDepend(&val_str, v);
nsres = nsIDOMHTMLInputElement_SetValue(This->nsinput, &val_str);
nsAString_Finish(&val_str);
if(NS_FAILED(nsres))
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
- nsAString_Init(&nsstr, v);
+ nsAString_InitDepend(&nsstr, v);
nsres = nsIDOMHTMLInputElement_SetSrc(This->nsinput, &nsstr);
nsAString_Finish(&nsstr);
if(NS_FAILED(nsres))
};
static const tid_t HTMLInputElement_iface_tids[] = {
- IHTMLDOMNode_tid,
- IHTMLDOMNode2_tid,
- IHTMLElement_tid,
- IHTMLElement2_tid,
- IHTMLElement3_tid,
+ HTMLELEMENT_TIDS,
IHTMLInputElement_tid,
0
};
TRACE("bstr %s\n", debugstr_w(V_BSTR(&v)));
- nsAString_Init(&val_str, V_BSTR(&v));
+ nsAString_InitDepend(&val_str, V_BSTR(&v));
nsIDOMNode_SetNodeValue(This->nsnode, &val_str);
nsAString_Finish(&val_str);
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
- nsAString_Init(&value_str, v);
+ nsAString_InitDepend(&value_str, v);
nsres = nsIDOMHTMLOptionElement_SetValue(This->nsoption, &value_str);
nsAString_Finish(&value_str);
if(NS_FAILED(nsres))
}
}
- nsAString_Init(&text_str, v);
+ nsAString_InitDepend(&text_str, v);
nsres = nsIDOMHTMLDocument_CreateTextNode(This->element.node.doc->nsdoc, &text_str, &text_node);
nsAString_Finish(&text_str);
if(NS_FAILED(nsres)) {
};
static const tid_t HTMLOptionElement_iface_tids[] = {
- IHTMLDOMNode_tid,
- IHTMLDOMNode2_tid,
- IHTMLElement_tid,
- IHTMLElement2_tid,
- IHTMLElement3_tid,
+ HTMLELEMENT_TIDS,
IHTMLOptionElement_tid,
0
};
HTMLScriptElement_get_readystate
};
+static const tid_t HTMLScriptElement_iface_tids[] = {
+ HTMLELEMENT_TIDS,
+ IHTMLScriptElement_tid,
+ 0
+};
+
+static dispex_static_data_t HTMLScriptElement_dispex = {
+ NULL,
+ DispHTMLScriptElement_tid,
+ NULL,
+ HTMLScriptElement_iface_tids
+};
+
HTMLElement *HTMLScriptElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem)
{
HTMLScriptElement *ret = heap_alloc_zero(sizeof(HTMLScriptElement));
ret->lpHTMLScriptElementVtbl = &HTMLScriptElementVtbl;
ret->element.node.vtbl = &HTMLScriptElementImplVtbl;
- HTMLElement_Init(&ret->element, doc, nselem, NULL);
+ HTMLElement_Init(&ret->element, doc, nselem, &HTMLScriptElement_dispex);
nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLScriptElement, (void**)&ret->nsscript);
if(NS_FAILED(nsres))
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
- nsAString_Init(&value_str, v);
+ nsAString_InitDepend(&value_str, v);
nsres = nsIDOMHTMLSelectElement_SetValue(This->nsselect, &value_str);
nsAString_Finish(&value_str);
if(NS_FAILED(nsres))
VARIANT before)
{
HTMLSelectElement *This = HTMLSELECT_THIS(iface);
- FIXME("(%p)->(%p v)\n", This, element);
- return E_NOTIMPL;
+ IHTMLDOMNode *node, *tmp;
+ HRESULT hres;
+
+ FIXME("(%p)->(%p %s): semi-stub\n", This, element, debugstr_variant(&before));
+
+ if(V_VT(&before) != VT_EMPTY) {
+ FIXME("unhandled before %s\n", debugstr_variant(&before));
+ return E_NOTIMPL;
+ }
+
+ hres = IHTMLElement_QueryInterface(element, &IID_IHTMLDOMNode, (void**)&node);
+ if(FAILED(hres))
+ return hres;
+
+ hres = IHTMLDOMNode_appendChild(HTMLDOMNODE(&This->element.node), node, &tmp);
+ IHTMLDOMNode_Release(node);
+ if(SUCCEEDED(hres) && tmp)
+ IHTMLDOMNode_Release(tmp);
+
+ return hres;
}
static HRESULT WINAPI HTMLSelectElement_remove(IHTMLSelectElement *iface, LONG index)
};
static const tid_t HTMLSelectElement_tids[] = {
- IHTMLDOMNode_tid,
- IHTMLDOMNode2_tid,
- IHTMLElement_tid,
- IHTMLElement2_tid,
- IHTMLElement3_tid,
+ HTMLELEMENT_TIDS,
IHTMLSelectElement_tid,
0
};
if(flags & ATTR_FIX_URL)
val = fix_url_value(value);
- nsAString_Init(&str_name, style_tbl[sid].name);
- nsAString_Init(&str_value, val ? val : value);
- nsAString_Init(&str_empty, wszEmpty);
+ nsAString_InitDepend(&str_name, style_tbl[sid].name);
+ nsAString_InitDepend(&str_value, val ? val : value);
+ nsAString_InitDepend(&str_empty, wszEmpty);
heap_free(val);
nsres = nsIDOMCSSStyleDeclaration_SetProperty(nsstyle, &str_name, &str_value, &str_empty);
case VT_I4: {
WCHAR str[14];
+
static const WCHAR format[] = {'%','d',0};
+ static const WCHAR px_format[] = {'%','d','p','x',0};
- wsprintfW(str, format, V_I4(value));
- return set_nsstyle_attr(nsstyle, sid, str, flags);
+ wsprintfW(str, flags&ATTR_FIX_PX ? px_format : format, V_I4(value));
+ return set_nsstyle_attr(nsstyle, sid, str, flags & ~ATTR_FIX_PX);
}
default:
FIXME("not implemented vt %d\n", V_VT(value));
nsAString str_name;
nsresult nsres;
- nsAString_Init(&str_name, style_tbl[sid].name);
+ nsAString_InitDepend(&str_name, style_tbl[sid].name);
nsres = nsIDOMCSSStyleDeclaration_GetPropertyValue(nsstyle, &str_name, value);
if(NS_FAILED(nsres)) {
static HRESULT WINAPI HTMLStyle_get_borderTopColor(IHTMLStyle *iface, VARIANT *p)
{
HTMLStyle *This = HTMLSTYLE_THIS(iface);
- FIXME("(%p)->(%p)\n", This, p);
- return E_NOTIMPL;
+
+ TRACE("(%p)->(%p)\n", This, p);
+
+ return get_nsstyle_attr_var(This->nsstyle, STYLEID_BORDER_TOP_COLOR, p, 0);
}
static HRESULT WINAPI HTMLStyle_put_borderRightColor(IHTMLStyle *iface, VARIANT v)
static HRESULT WINAPI HTMLStyle_get_borderRightColor(IHTMLStyle *iface, VARIANT *p)
{
HTMLStyle *This = HTMLSTYLE_THIS(iface);
- FIXME("(%p)->(%p)\n", This, p);
- return E_NOTIMPL;
+
+ TRACE("(%p)->(%p)\n", This, p);
+
+ return get_nsstyle_attr_var(This->nsstyle, STYLEID_BORDER_RIGHT_COLOR, p, 0);
}
static HRESULT WINAPI HTMLStyle_put_borderBottomColor(IHTMLStyle *iface, VARIANT v)
static HRESULT WINAPI HTMLStyle_get_borderBottomColor(IHTMLStyle *iface, VARIANT *p)
{
HTMLStyle *This = HTMLSTYLE_THIS(iface);
- FIXME("(%p)->(%p)\n", This, p);
- return E_NOTIMPL;
+
+ TRACE("(%p)->(%p)\n", This, p);
+
+ return get_nsstyle_attr_var(This->nsstyle, STYLEID_BORDER_BOTTOM_COLOR, p, 0);
}
static HRESULT WINAPI HTMLStyle_put_borderLeftColor(IHTMLStyle *iface, VARIANT v)
static HRESULT WINAPI HTMLStyle_get_borderLeftColor(IHTMLStyle *iface, VARIANT *p)
{
HTMLStyle *This = HTMLSTYLE_THIS(iface);
- FIXME("(%p)->(%p)\n", This, p);
- return E_NOTIMPL;
+
+ TRACE("(%p)->(%p)\n", This, p);
+
+ return get_nsstyle_attr_var(This->nsstyle, STYLEID_BORDER_LEFT_COLOR, p, 0);
}
static HRESULT WINAPI HTMLStyle_put_borderWidth(IHTMLStyle *iface, BSTR v)
TRACE("(%p)->(v%d)\n", This, V_VT(&v));
- switch(V_VT(&v)) {
- case VT_BSTR:
- TRACE("%s\n", debugstr_w(V_BSTR(&v)));
- return set_style_attr(This, STYLEID_WIDTH, V_BSTR(&v), 0);
- default:
- FIXME("unsupported vt %d\n", V_VT(&v));
- }
-
- return E_NOTIMPL;
+ return set_nsstyle_attr_var(This->nsstyle, STYLEID_WIDTH, &v, ATTR_FIX_PX);
}
static HRESULT WINAPI HTMLStyle_get_width(IHTMLStyle *iface, VARIANT *p)
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
- nsAString_Init(&text_str, v);
+ nsAString_InitDepend(&text_str, v);
nsres = nsIDOMCSSStyleDeclaration_SetCssText(This->nsstyle, &text_str);
nsAString_Finish(&text_str);
if(NS_FAILED(nsres)) {
};
static const tid_t HTMLTable_iface_tids[] = {
- IHTMLDOMNode_tid,
- IHTMLDOMNode2_tid,
- IHTMLElement_tid,
- IHTMLElement2_tid,
- IHTMLElement3_tid,
+ HTMLELEMENT_TIDS,
IHTMLTable_tid,
0
};
};
static const tid_t HTMLTableRow_iface_tids[] = {
- IHTMLDOMNode_tid,
- IHTMLDOMNode2_tid,
- IHTMLElement_tid,
- IHTMLElement2_tid,
- IHTMLElement3_tid,
+ HTMLELEMENT_TIDS,
IHTMLTableRow_tid,
0
};
HTMLTextAreaElementImpl_get_disabled
};
+static const tid_t HTMLTextAreaElement_iface_tids[] = {
+ HTMLELEMENT_TIDS,
+ IHTMLTextAreaElement_tid,
+ 0
+};
+
+static dispex_static_data_t HTMLTextAreaElement_dispex = {
+ NULL,
+ DispHTMLTextAreaElement_tid,
+ NULL,
+ HTMLTextAreaElement_iface_tids
+};
+
HTMLElement *HTMLTextAreaElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem)
{
HTMLTextAreaElement *ret = heap_alloc_zero(sizeof(HTMLTextAreaElement));
ret->lpHTMLTextAreaElementVtbl = &HTMLTextAreaElementVtbl;
ret->element.node.vtbl = &HTMLTextAreaElementImplVtbl;
- HTMLElement_Init(&ret->element, doc, nselem, NULL);
+ HTMLElement_Init(&ret->element, doc, nselem, &HTMLTextAreaElement_dispex);
nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLTextAreaElement,
(void**)&ret->nstextarea);
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
- nsAString_Init(&name_str, v);
+ nsAString_InitDepend(&name_str, v);
nsres = nsIDOMWindow_SetName(This->nswindow, &name_str);
nsAString_Finish(&name_str);
if(NS_FAILED(nsres))
LCID lcid, DISPID *rgDispId)
{
HTMLWindow *This = DISPEX_THIS(iface);
+ UINT i;
+ HRESULT hres;
- TRACE("(%p)->(%s %p %u %u %p)\n", This, debugstr_guid(riid), rgszNames, cNames,
+ WARN("(%p)->(%s %p %u %u %p)\n", This, debugstr_guid(riid), rgszNames, cNames,
lcid, rgDispId);
- /* FIXME: Use script dispatch */
+ for(i=0; i < cNames; i++) {
+ /* We shouldn't use script's IDispatchEx here, so we shouldn't use GetDispID */
+ hres = IDispatchEx_GetDispID(DISPATCHEX(This), rgszNames[i], 0, rgDispId+i);
+ if(FAILED(hres))
+ return hres;
+ }
- return IDispatchEx_GetIDsOfNames(DISPATCHEX(&This->dispex), riid, rgszNames, cNames, lcid, rgDispId);
+ return S_OK;
}
static HRESULT WINAPI WindowDispEx_Invoke(IDispatchEx *iface, DISPID dispIdMember,
const char *debugstr_variant(const VARIANT *v)
{
+ if(!v)
+ return "(null)";
+
switch(V_VT(v)) {
case VT_EMPTY:
- return wine_dbg_sprintf("{VT_EMPTY}");
+ return "{VT_EMPTY}";
case VT_NULL:
- return wine_dbg_sprintf("{VT_NULL}");
+ return "{VT_NULL}";
case VT_I4:
return wine_dbg_sprintf("{VT_I4: %d}", V_I4(v));
case VT_R8:
;; CrSource
HKCR,"CLSID\%CLSID_CrSource%",,,"Microsoft CrSource 4.0"
-HKCR,"CLSID\%CLSID_CrSource%\BrowseInPlace",,,""
+HKCR,"CLSID\%CLSID_CrSource%\BrowseInPlace",,16
;; HKCR,"CLSID\%CLSID_CrSource%\DefaultIcon",,0x00020000,"%IEXPLORE%,1"
HKCR,"CLSID\%CLSID_CrSource%\EnablePlugin\.css",,,"PointPlus plugin"
HKCR,"CLSID\%CLSID_CrSource%\InProcServer32",,,"mshtml.dll"
;; HTADocument
HKCR,"CLSID\%CLSID_HTADocument%",,,"Microsoft HTA Document 6.0"
-HKCR,"CLSID\%CLSID_HTADocument%\BrowseInPlace",,,""
+HKCR,"CLSID\%CLSID_HTADocument%\BrowseInPlace",,16
HKCR,"CLSID\%CLSID_HTADocument%\InProcServer32",,,"mshtml.dll"
HKCR,"CLSID\%CLSID_HTADocument%\InProcServer32","ThreadingModel",,"Apartment"
HKCR,"CLSID\%CLSID_HTADocument%\MiscStatus",,,"2228625"
;; HTMLDocument
HKCR,"CLSID\%CLSID_HTMLDocument%",,,"HTML Document"
-HKCR,"CLSID\%CLSID_HTMLDocument%\BrowseInPlace",,,""
+HKCR,"CLSID\%CLSID_HTMLDocument%\BrowseInPlace",,16
;; HKCR,"CLSID\%CLSID_HTMLDocument%\DefaultIcon",,0x00020000,"%IEXPLORE%,1"
HKCR,"CLSID\%CLSID_HTMLDocument%\InProcServer32",,,"mshtml.dll"
HKCR,"CLSID\%CLSID_HTMLDocument%\InProcServer32","ThreadingModel",,"Apartment"
;; HTMLPluginDocument
HKCR,"CLSID\%CLSID_HTMLPluginDocument%",,,"Microsoft HTML Document 6.0"
-HKCR,"CLSID\%CLSID_HTMLPluginDocument%\BrowseInPlace",,,""
+HKCR,"CLSID\%CLSID_HTMLPluginDocument%\BrowseInPlace",,16
HKCR,"CLSID\%CLSID_HTMLPluginDocument%\InProcServer32",,,"mshtml.dll"
HKCR,"CLSID\%CLSID_HTMLPluginDocument%\InProcServer32","ThreadingModel",,"Apartment"
HKCR,"CLSID\%CLSID_HTMLPluginDocument%\MiscStatus",,,"0"
HKCR,"CLSID\%CLSID_HTMLWindowProxy%\InProcServer32","ThreadingModel",,"Apartment"
;; IImageDecodeFilter
-HKCR,"CLSID\%CLSID_IImageDecodeFilter%",,,""
+HKCR,"CLSID\%CLSID_IImageDecodeFilter%",,,"CoICOFilter Class"
HKCR,"CLSID\%CLSID_IImageDecodeFilter%\InProcServer32",,,%_MOD_PATH%
HKCR,"CLSID\%CLSID_IImageDecodeFilter%\InProcServer32","ThreadingModel",,"Apartment"
HKCR,"MIME\Database\Content Type\image/x-wmf","Image Filter CLSID",,"%CLSID_IImageDecodeFilter%"
;; MHTMLDocument
HKCR,"CLSID\%CLSID_MHTMLDocument%",,,"MHTML Document"
-HKCR,"CLSID\%CLSID_MHTMLDocument%\BrowseInPlace",,,""
+HKCR,"CLSID\%CLSID_MHTMLDocument%\BrowseInPlace",,16
;; HKCR,"CLSID\%CLSID_MHTMLDocument%\DefaultIcon",,0x00020000,"%IEXPLORE%,1"
HKCR,"CLSID\%CLSID_MHTMLDocument%\InProcServer32",,,"mshtml.dll"
HKCR,"CLSID\%CLSID_MHTMLDocument%\InProcServer32","ThreadingModel",,"Apartment"
;; Scriptlet
HKCR,"CLSID\%CLSID_Scriptlet%",,,"Microsoft Scriptlet Component"
-HKCR,"CLSID\%CLSID_Scriptlet%\Control"
+HKCR,"CLSID\%CLSID_Scriptlet%\Control",,16
HKCR,"CLSID\%CLSID_Scriptlet%\InProcServer32",,,"%_MOD_PATH%"
HKCR,"CLSID\%CLSID_Scriptlet%\InProcServer32","ThreadingModel",,"Apartment"
HKCR,"CLSID\%CLSID_Scriptlet%\MiscStatus",,,"0"
HKCR,"CLSID\%CLSID_Scriptlet%\MiscStatus\1",,,"131473"
HKCR,"CLSID\%CLSID_Scriptlet%\ProgID",,,"ScriptBridge.ScriptBridge.1"
-HKCR,"CLSID\%CLSID_Scriptlet%\Programmable"
+HKCR,"CLSID\%CLSID_Scriptlet%\Programmable",,16
;; HKCR,"CLSID\%CLSID_Scriptlet%\ToolboxBitmap32",,,"%IEXPLORE%,1"
HKCR,"CLSID\%CLSID_Scriptlet%\TypeLib",,,"%LIBID_MSHTML%"
HKCR,"CLSID\%CLSID_Scriptlet%\Version",,,"4.0"
HKCR,"htmlfile\shell\print\command",,,"rundll32.exe mshtml.dll,PrintHTML ""%%1"""
HKCR,"htmlfile\shell\printto\command",,,"rundll32.exe mshtml.dll,PrintHTML ""%%1"" ""%%2"" ""%%3"" ""%%4"""
HKCR,"htmlfile",,,"HTML Document"
-HKCR,"htmlfile\BrowseInPlace",,,""
+HKCR,"htmlfile\BrowseInPlace",,16
HKCR,"htmlfile\CLSID",,,"%CLSID_HTMLDocument%"
;; HKCR,"htmlfile\DefaultIcon",,0x00020000,"%IEXPLORE%,1"
HKCR,"htmlfile_FullWindowEmbed",,,"HTML Plugin Document"
-HKCR,"htmlfile_FullWindowEmbed\BrowseInPlace",,,""
+HKCR,"htmlfile_FullWindowEmbed\BrowseInPlace",,16
HKCR,"htmlfile_FullWindowEmbed\CLSID",,,"%CLSID_HTMLPluginDocument%"
HKCR,".htm",,,"htmlfile"
HKCR,".htm","Content Type",,"text/html"
HKCR,".mht",,2,"mhtmlfile"
HKCR,".mht","Content Type",,"message/rfc822"
HKCR,"mhtmlfile",,,"MHTML Document"
-HKCR,"mhtmlfile\BrowseInPlace",,,""
+HKCR,"mhtmlfile\BrowseInPlace",,16
HKCR,"mhtmlfile\CLSID",,,"%CLSID_MHTMLDocument%"
;; MPEG
<file>htmlelemcol.c</file>
<file>htmlevent.c</file>
<file>htmlform.c</file>
+ <file>htmlframe.c</file>
<file>htmlframebase.c</file>
<file>htmlgeneric.c</file>
<file>htmliframe.c</file>
DispHTMLElementCollection_tid,
DispHTMLFormElement_tid,
DispHTMLGenericElement_tid,
+ DispHTMLFrameElement_tid,
DispHTMLIFrame_tid,
DispHTMLImg_tid,
DispHTMLInputElement_tid,
DispHTMLNavigator_tid,
DispHTMLOptionElement_tid,
DispHTMLScreen_tid,
+ DispHTMLScriptElement_tid,
DispHTMLSelectElement_tid,
DispHTMLStyle_tid,
DispHTMLTable_tid,
DispHTMLTableRow_tid,
+ DispHTMLTextAreaElement_tid,
DispHTMLUnknownElement_tid,
DispHTMLWindow2_tid,
HTMLDocumentEvents_tid,
IHTMLFormElement_tid,
IHTMLFrameBase_tid,
IHTMLFrameBase2_tid,
+ IHTMLFrameElement3_tid,
IHTMLGenericElement_tid,
+ IHTMLIFrameElement_tid,
IHTMLImageElementFactory_tid,
IHTMLImgElement_tid,
IHTMLInputElement_tid,
IHTMLLocation_tid,
IHTMLOptionElement_tid,
IHTMLScreen_tid,
+ IHTMLScriptElement_tid,
IHTMLSelectElement_tid,
IHTMLStyle_tid,
IHTMLStyle2_tid,
IHTMLStyle4_tid,
IHTMLTable_tid,
IHTMLTableRow_tid,
+ IHTMLTextAreaElement_tid,
IHTMLTextContainer_tid,
IHTMLUniqueName_tid,
IHTMLWindow2_tid,
IOleInPlaceSite *ipsite;
IOleInPlaceFrame *frame;
IOleInPlaceUIWindow *ip_window;
+ IAdviseSink *view_sink;
DOCHOSTUIINFO hostinfo;
nsIDOMHTMLElement *nselem;
} HTMLElement;
+#define HTMLELEMENT_TIDS \
+ IHTMLDOMNode_tid, \
+ IHTMLDOMNode2_tid, \
+ IHTMLElement_tid, \
+ IHTMLElement2_tid, \
+ IHTMLElement3_tid, \
+ IHTMLElement4_tid
+
typedef struct {
HTMLElement element;
void nsACString_SetData(nsACString*,const char*);
PRUint32 nsACString_GetData(const nsACString*,const char**);
-void nsAString_Init(nsAString*,const PRUnichar*);
+BOOL nsAString_Init(nsAString*,const PRUnichar*);
+void nsAString_InitDepend(nsAString*,const PRUnichar*);
void nsAString_SetData(nsAString*,const PRUnichar*);
PRUint32 nsAString_GetData(const nsAString*,const PRUnichar**);
void nsAString_Finish(nsAString*);
memcpy(buf, ptr, (end-ptr)*sizeof(WCHAR));
buf[end-ptr] = 0;
- nsAString_Init(&nsstr, buf);
- heap_free(buf);
+ nsAString_InitDepend(&nsstr, buf);
/* FIXME: Find better way to insert HTML to document. */
nsres = nsIDOMHTMLDocument_Write(doc->nsdoc, &nsstr);
nsAString_Finish(&nsstr);
+ heap_free(buf);
if(NS_FAILED(nsres)) {
ERR("Write failed: %08x\n", nsres);
return FALSE;
init_editor(&doc->basedoc);
call_explorer_69(doc);
+ if(doc->view_sink)
+ IAdviseSink_OnViewChange(doc->view_sink, DVASPECT_CONTENT, -1);
call_property_onchanged(&doc->basedoc.cp_propnotif, 1005);
call_explorer_69(doc);
static const PRUnichar remove_comment_magicW[] =
{'#','!','w','i','n','e', 'r','e','m','o','v','e','!','#',0};
- nsAString_Init(&magic_str, remove_comment_magicW);
+ nsAString_InitDepend(&magic_str, remove_comment_magicW);
nsres = nsIDOMComment_SetData(nscomment, &magic_str);
nsAString_Finish(&magic_str);
if(NS_FAILED(nsres))
void *v;
void *d1;
PRUint32 d2;
- void *d3;
+ PRUint32 d3;
};
+#define NS_STRING_CONTAINER_INIT_DEPEND 0x0002
+
static nsresult (*NS_InitXPCOM2)(nsIServiceManager**,void*,void*);
static nsresult (*NS_ShutdownXPCOM)(nsIServiceManager*);
static nsresult (*NS_GetComponentRegistrar)(nsIComponentRegistrar**);
-static nsresult (*NS_StringContainerInit)(nsStringContainer*);
+static nsresult (*NS_StringContainerInit2)(nsStringContainer*,const PRUnichar*,PRUint32,PRUint32);
static nsresult (*NS_CStringContainerInit)(nsCStringContainer*);
static nsresult (*NS_StringContainerFinish)(nsStringContainer*);
static nsresult (*NS_CStringContainerFinish)(nsCStringContainer*);
NS_DLSYM(NS_InitXPCOM2);
NS_DLSYM(NS_ShutdownXPCOM);
NS_DLSYM(NS_GetComponentRegistrar);
- NS_DLSYM(NS_StringContainerInit);
+ NS_DLSYM(NS_StringContainerInit2);
NS_DLSYM(NS_CStringContainerInit);
NS_DLSYM(NS_StringContainerFinish);
NS_DLSYM(NS_CStringContainerFinish);
nsAString path;
nsIFile *gre_dir;
- nsAString_Init(&path, gre_path);
+ nsAString_InitDepend(&path, gre_path);
nsres = NS_NewLocalFile(&path, FALSE, &gre_dir);
nsAString_Finish(&path);
if(NS_FAILED(nsres)) {
NS_CStringContainerFinish(str);
}
-void nsAString_Init(nsAString *str, const PRUnichar *data)
+BOOL nsAString_Init(nsAString *str, const PRUnichar *data)
{
- NS_StringContainerInit(str);
- if(data)
- nsAString_SetData(str, data);
+ return NS_SUCCEEDED(NS_StringContainerInit2(str, data, PR_UINT32_MAX, 0));
+}
+
+/*
+ * Initializes nsAString with data owned by caller.
+ * Caller must ensure that data is valid during lifetime of string object.
+ */
+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)
set_ready_state(doc->basedoc.window, READYSTATE_COMPLETE);
if(doc == doc_obj->basedoc.doc_node) {
+ if(doc_obj->view_sink)
+ IAdviseSink_OnViewChange(doc_obj->view_sink, DVASPECT_CONTENT, -1);
+
if(doc_obj->frame) {
static const WCHAR wszDone[] = {'D','o','n','e',0};
IOleInPlaceFrame_SetStatusText(doc_obj->frame, wszDone);
nsAString type_str;
nsresult nsres;
- nsAString_Init(&type_str, type);
+ nsAString_InitDepend(&type_str, type);
nsres = nsIDOMEventTarget_AddEventListener(target, &type_str, listener, capture);
nsAString_Finish(&type_str);
if(NS_FAILED(nsres))
{
nsChannel *This = NSCHANNEL_THIS(iface);
- FIXME("(%p)->(%p)\n", This, aSecurityInfo);
+ TRACE("(%p)->(%p)\n", This, aSecurityInfo);
return NS_ERROR_NOT_IMPLEMENTED;
}
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
+#include "windef.h"
+#include "winuser.h"
+#include "commctrl.h"
+#include "mshtmcid.h"
+
+#include "resource.h"
+
#define WINE_OLESELFREGISTER
#define WINE_FILEDESCRIPTION_STR "Wine HTML Viewer"
#define WINE_FILENAME_STR "mshtml.dll"
#include "wine/wine_common_ver.rc"
+#include "Bg.rc"
+#include "Da.rc"
+#include "De.rc"
+#include "En.rc"
+#include "Es.rc"
+#include "Fi.rc"
+#include "Fr.rc"
+#include "Hu.rc"
+#include "It.rc"
+#include "Ja.rc"
+#include "Ko.rc"
+#include "Lt.rc"
+#include "Nl.rc"
+#include "No.rc"
+#include "Pl.rc"
+#include "Pt.rc"
+#include "Ro.rc"
+#include "Ru.rc"
+#include "Si.rc"
+#include "Sv.rc"
+#include "Tr.rc"
+#include "Uk.rc"
+#include "Zh.rc"
+
+LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
+
/* @makedep: mshtml.inf */
REGINST REGINST mshtml.inf
ERR("GetType failed: %08x\n", nsres);
}
- nsAString_Init(&attr_str, languageW);
-
+ nsAString_InitDepend(&attr_str, languageW);
nsres = nsIDOMHTMLScriptElement_GetAttribute(nsscript, &attr_str, &val_str);
+ nsAString_Finish(&attr_str);
if(NS_SUCCEEDED(nsres)) {
const PRUnichar *language;
ERR("GetAttribute(language) failed: %08x\n", nsres);
}
- nsAString_Finish(&attr_str);
nsAString_Finish(&val_str);
return ret;
if(!This->doc)
return MSHTML_E_NODOC;
- nsAString_Init(&text_str, v);
+ nsAString_InitDepend(&text_str, v);
nsres = nsIDOMHTMLDocument_CreateTextNode(This->doc->nsdoc, &text_str, &text_node);
nsAString_Finish(&text_str);
if(NS_FAILED(nsres)) {
static HRESULT WINAPI ViewObject_SetAdvise(IViewObjectEx *iface, DWORD aspects, DWORD advf, IAdviseSink *pAdvSink)
{
HTMLDocument *This = VIEWOBJ_THIS(iface);
- FIXME("(%p)->(%d %d %p)\n", This, aspects, advf, pAdvSink);
- return E_NOTIMPL;
+
+ TRACE("(%p)->(%d %d %p)\n", This, aspects, advf, pAdvSink);
+
+ if(aspects != DVASPECT_CONTENT || advf != ADVF_PRIMEFIRST)
+ FIXME("unsuported arguments\n");
+
+ if(This->doc_obj->view_sink)
+ IAdviseSink_Release(This->doc_obj->view_sink);
+ if(pAdvSink)
+ IAdviseSink_AddRef(pAdvSink);
+
+ This->doc_obj->view_sink = pAdvSink;
+ return S_OK;
}
static HRESULT WINAPI ViewObject_GetAdvise(IViewObjectEx *iface, DWORD *pAspects, DWORD *pAdvf, IAdviseSink **ppAdvSink)
#define DISPID_IE8_ELEMENTMAX (DISPID_SITE-1)
#define DISPID_IE8_ELEMENT DISPID_IE8_ELEMENTBASE
+#define DISPID_IE8_FRAMESITEBASE (DISPID_FRAMESITE+1120)
+#define DISPID_IE8_FRAMEMAX (WEBOC_DISPIDBASE-1)
+#define DISPID_IE8_FRAME DISPID_IE8_FRAMESITEBASE
+#define DISPID_IE8_IFRAME DISPID_IE8_FRAMESITEBASE
+
#define DISPID_COLLECTION (DISPID_NORMAL_FIRST+500)
#define DISPID_OPTIONS_COL (DISPID_NORMAL_FIRST+500)
#define DISPID_IMG (DISPID_IMGBASE+1000)
/* IHTMLScriptElement2 */
#define DISPID_IHTMLSCRIPTELEMENT2_CHARSET DISPID_SCRIPT+10
+/* IHTMLScriptElement3 */
+#define DISPID_IHTMLSCRIPTELEMENT3_IE8_SRC DISPID_IE8_SCRIPT
+
/* IHTMLFrameBase */
#define DISPID_IHTMLFRAMEBASE_SRC DISPID_FRAMESITE+0
#define DISPID_IHTMLFRAMEBASE_NAME STDPROPID_XOBJ_NAME
/* IHTMLFrameBase3 */
#define DISPID_IHTMLFRAMEBASE3_LONGDESC DISPID_FRAMESITE+10
+/* IHTMLFrameElement */
+#define DISPID_IHTMLFRAMEELEMENT_BORDERCOLOR DISPID_FRAME+1
+
+/* IHTMLFrameElement2 */
+#define DISPID_IHTMLFRAMEELEMENT2_HEIGHT STDPROPID_XOBJ_HEIGHT
+#define DISPID_IHTMLFRAMEELEMENT2_WIDTH STDPROPID_XOBJ_WIDTH
+
+/* IHTMLFrameElement3 */
+#define DISPID_IHTMLFRAMEELEMENT3_CONTENTDOCUMENT DISPID_IE8_FRAME
+#define DISPID_IHTMLFRAMEELEMENT3_IE8_SRC DISPID_IE8_FRAME+1
+#define DISPID_IHTMLFRAMEELEMENT3_IE8_LONGDESC DISPID_IE8_FRAME+2
+#define DISPID_IHTMLFRAMEELEMENT3_IE8_FRAMEBORDER DISPID_IE8_FRAME+3
+
/* IHTMLIFrameElement */
#define DISPID_IHTMLIFRAMEELEMENT_VSPACE DISPID_IFRAME+1
#define DISPID_IHTMLIFRAMEELEMENT_HSPACE DISPID_IFRAME+2
/*
- * Copyright 2004-2007 Jacek Caban for CodeWeavers
+ * Copyright 2004-2010 Jacek Caban for CodeWeavers
* Copyright 2008 Konstantin Kondratyuk (Etersoft)
*
* This library is free software; you can redistribute it and/or
[propget, id(DISPID_IHTMLCURRENTSTYLE4_MAXWIDTH), displaybind, bindable]
HRESULT maxWidth([retval, out] VARIANT * p);
-};
+}
/*****************************************************************************
* DispHTMLCurrentStyle dispinterface
[default] dispinterface DispHTMLStyleSheetPage;
interface IHTMLStyleSheetPage;
interface IHTMLDOMConstructor;
-};
+}
[
odl,
[id(DISPID_HTMLFORMELEMENTEVENTS_ONRESET)]
VARIANT_BOOL onreset();
-};
+}
interface IHTMLEventObj;
[id(DISPID_HTMLFORMELEMENTEVENTS2_ONRESET)]
VARIANT_BOOL onreset([in] IHTMLEventObj* pEvtObj);
-};
+}
[
noncreatable,
[propget, id(DISPID_IHTMLCONTROLELEMENT_CLIENTLEFT), displaybind, bindable]
HRESULT clientLeft([retval, out] LONG * p);
-};
+}
/*****************************************************************************
* IHTMLBodyElement interface
[propget, id(DISPID_IHTMLBODYELEMENT2_ONAFTERPRINT), displaybind, bindable]
VARIANT onafterprint();
-};
+}
[
uuid(3050f24a-98b5-11cf-bb82-00aa00bdce0b)
interface IHTMLTextContainer;
interface IHTMLBodyElement;
interface IHTMLBodyElement2;
-};
+}
/*****************************************************************************
* IHTMLAnchorElement interface
HRESULT createTextRange([retval, out] IHTMLTxtRange **range);
}
+/*****************************************************************************
+ * DispHTMLTextAreaElement dispinterface
+ */
+[
+ hidden,
+ uuid(3050f521-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLTextAreaElement
+{
+properties:
+methods:
+ WINE_HTMLDATAELEMENT_DISPINTERFACE_DECL;
+
+ [propget, id(DISPID_IHTMLTEXTAREAELEMENT_TYPE)]
+ BSTR type();
+
+ [propput, id(DISPID_IHTMLTEXTAREAELEMENT_VALUE), displaybind, bindable]
+ void value(BSTR v);
+
+ [propget, id(DISPID_IHTMLTEXTAREAELEMENT_VALUE), displaybind, bindable]
+ BSTR value();
+
+ [propput, id(DISPID_IHTMLTEXTAREAELEMENT_NAME), displaybind, bindable]
+ void name(BSTR v);
+
+ [propget, id(DISPID_IHTMLTEXTAREAELEMENT_NAME), displaybind, bindable]
+ BSTR name();
+
+ [propput, id(DISPID_IHTMLTEXTAREAELEMENT_STATUS)]
+ void status(VARIANT v);
+
+ [propget, id(DISPID_IHTMLTEXTAREAELEMENT_STATUS)]
+ VARIANT status();
+
+ [propget, id(DISPID_IHTMLTEXTAREAELEMENT_FORM)]
+ IHTMLFormElement *form();
+
+ [propput, id(DISPID_IHTMLTEXTAREAELEMENT_DEFAULTVALUE), displaybind, bindable, hidden]
+ void defaultValue(BSTR v);
+
+ [propget, id(DISPID_IHTMLTEXTAREAELEMENT_DEFAULTVALUE), displaybind, bindable, hidden]
+ BSTR defaultValue();
+
+ [id(DISPID_IHTMLTEXTAREAELEMENT_SELECT)]
+ void select();
+
+ [propput, id(DISPID_IHTMLTEXTAREAELEMENT_ONCHANGE), displaybind, bindable]
+ void onchange(VARIANT v);
+
+ [propget, id(DISPID_IHTMLTEXTAREAELEMENT_ONCHANGE), displaybind, bindable]
+ VARIANT onchange();
+
+ [propput, id(DISPID_IHTMLTEXTAREAELEMENT_ONSELECT), displaybind, bindable]
+ void onselect(VARIANT v);
+
+ [propget, id(DISPID_IHTMLTEXTAREAELEMENT_ONSELECT), displaybind, bindable]
+ VARIANT onselect();
+
+ [propput, id(DISPID_IHTMLTEXTAREAELEMENT_READONLY), displaybind, bindable]
+ void readOnly(VARIANT_BOOL v);
+
+ [propget, id(DISPID_IHTMLTEXTAREAELEMENT_READONLY), displaybind, bindable]
+ VARIANT_BOOL readOnly();
+
+ [propput, id(DISPID_IHTMLTEXTAREAELEMENT_ROWS), displaybind, bindable]
+ void rows(LONG v);
+
+ [propget, id(DISPID_IHTMLTEXTAREAELEMENT_ROWS), displaybind, bindable]
+ LONG rows();
+
+ [propput, id(DISPID_IHTMLTEXTAREAELEMENT_COLS), displaybind, bindable]
+ void cols(LONG v);
+
+ [propget, id(DISPID_IHTMLTEXTAREAELEMENT_COLS), displaybind, bindable]
+ LONG cols();
+
+ [propput, id(DISPID_IHTMLTEXTAREAELEMENT_WRAP), displaybind, bindable]
+ void wrap(BSTR v);
+
+ [propget, id(DISPID_IHTMLTEXTAREAELEMENT_WRAP), displaybind, bindable]
+ BSTR wrap();
+
+ [id(DISPID_IHTMLTEXTAREAELEMENT_CREATETEXTRANGE)]
+ IHTMLTxtRange *createTextRange();
+}
+
/*****************************************************************************
* DispHTMLUnknownElement interface
*/
[propget, id(DISPID_IHTMLWINDOW4_FRAMEELEMENT)]
HRESULT frameElement([retval, out] IHTMLFrameBase* * p);
-};
+}
/*****************************************************************************
* IHTMLWindow5 interface
[propget, id(DISPID_IHTMLWINDOW5_XMLHTTPREQUEST)]
HRESULT XMLHttpRequest([retval, out] VARIANT * p);
-};
+}
/*****************************************************************************
* DispHTMLScreen dispinterface
[propget, id(DISPID_IHTMLWINDOW5_XMLHTTPREQUEST)]
VARIANT XMLHttpRequest();
-};
+}
/*****************************************************************************
* HTMLWindowEvents interface
[id(DISPID_HTMLWINDOWEVENTS_ONAFTERPRINT)]
void onafterprint();
-};
+}
/*****************************************************************************
* HTMLWindowEvents2 interface
[id(DISPID_HTMLWINDOWEVENTS2_ONAFTERPRINT)]
void onafterprint([in] IHTMLEventObj* pEvtObj);
-};
+}
/*****************************************************************************
* HTMLWindowProxy class
interface IHTMLWindow3;
interface IHTMLWindow4;
interface IHTMLWindow5;
-};
+}
/*****************************************************************************
* HTMLDocumentEvents2 interface
[id(DISPID_HTMLTEXTCONTAINEREVENTS_ONSELECT)]
void onselect();
-};
+}
/*****************************************************************************
* HTMLTextContainerEvents2 interface
[id(DISPID_HTMLTEXTCONTAINEREVENTS2_ONSELECT)]
void onselect([in] IHTMLEventObj* pEvtObj);
-};
+}
/*****************************************************************************
* IHTMLDocument interface
[id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEWHEEL)]
VARIANT_BOOL onmousewheel([in] IHTMLEventObj* pEvtObj);
-};
+}
+
[
hidden,
uuid(3050f33c-98b5-11cf-bb82-00aa00bdce0b)
[id(DISPID_HTMLELEMENTEVENTS_ONFOCUSOUT)]
void onfocusout();
-
-};
+}
[
noncreatable,
[id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEWHEEL)]
VARIANT_BOOL onmousewheel([in] IHTMLEventObj* pEvtObj);
-};
+}
/*****************************************************************************
* IHTMLTableCaption interface
HRESULT moveRow([defaultvalue(-1), in] LONG indexFrom,
[defaultvalue(-1), in] LONG indexTo,
[retval, out] IDispatch** row);
-};
+}
[
odl,
[propget, id(DISPID_IHTMLTABLE3_SUMMARY), displaybind, bindable]
HRESULT summary([retval, out] BSTR * p);
-};
+}
[
noncreatable,
interface IHTMLTable;
interface IHTMLTable2;
interface IHTMLTable3;
-};
+}
[
odl,
HRESULT charset([retval, out] BSTR *p);
}
+/*****************************************************************************
+ * DispHTMLScriptElement dispinterface
+ */
+[
+ hidden,
+ uuid(3050f530-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLScriptElement
+{
+properties:
+methods:
+ WINE_HTMLELEMENT_DISPINTERFACE_DECL;
+
+ [propput, id(DISPID_IHTMLSCRIPTELEMENT_SRC), displaybind, bindable]
+ void src(BSTR v);
+
+ [propget, id(DISPID_IHTMLSCRIPTELEMENT_SRC), displaybind, bindable]
+ BSTR src();
+
+ [propput, id(DISPID_IHTMLSCRIPTELEMENT_HTMLFOR), displaybind, bindable]
+ void htmlFor(BSTR v);
+
+ [propget, id(DISPID_IHTMLSCRIPTELEMENT_HTMLFOR), displaybind, bindable]
+ BSTR htmlFor();
+
+ [propput, id(DISPID_IHTMLSCRIPTELEMENT_EVENT), displaybind, bindable]
+ void event(BSTR v);
+
+ [propget, id(DISPID_IHTMLSCRIPTELEMENT_EVENT), displaybind, bindable]
+ BSTR event();
+
+ [propput, id(DISPID_IHTMLSCRIPTELEMENT_TEXT), displaybind, bindable]
+ void text(BSTR v);
+
+ [propget, id(DISPID_IHTMLSCRIPTELEMENT_TEXT), displaybind, bindable]
+ BSTR text();
+
+ [propput, id(DISPID_IHTMLSCRIPTELEMENT_DEFER), displaybind, bindable]
+ void defer(VARIANT_BOOL v);
+
+ [propget, id(DISPID_IHTMLSCRIPTELEMENT_DEFER), displaybind, bindable]
+ VARIANT_BOOL defer();
+
+ [propput, id(DISPID_IHTMLSCRIPTELEMENT_ONERROR), displaybind, bindable]
+ void onerror(VARIANT v);
+
+ [propget, id(DISPID_IHTMLSCRIPTELEMENT_ONERROR), displaybind, bindable]
+ VARIANT onerror();
+
+ [propput, id(DISPID_IHTMLSCRIPTELEMENT_TYPE), displaybind, bindable]
+ void type(BSTR v);
+
+ [propget, id(DISPID_IHTMLSCRIPTELEMENT_TYPE), displaybind, bindable]
+ BSTR type();
+
+ [propput, id(DISPID_IHTMLSCRIPTELEMENT2_CHARSET), displaybind, bindable]
+ void charset(BSTR v);
+
+ [propget, id(DISPID_IHTMLSCRIPTELEMENT2_CHARSET), displaybind, bindable]
+ BSTR charset();
+
+ [propput, id(DISPID_IHTMLSCRIPTELEMENT3_IE8_SRC)]
+ void ie8_src(BSTR v);
+
+ [propget, id(DISPID_IHTMLSCRIPTELEMENT3_IE8_SRC)]
+ BSTR ie8_src();
+}
+
/*****************************************************************************
* IHTMLFrameBase interface
*/
HRESULT scrolling([out, retval] BSTR *p);
}
+#define WINE_IHTMLFRAMEBASE_DISPINTERFACE_DECL \
+ [propput, id(DISPID_IHTMLFRAMEBASE_SRC)] \
+ void src(BSTR v); \
+ \
+ [propget, id(DISPID_IHTMLFRAMEBASE_SRC)] \
+ BSTR src(); \
+ \
+ [propput, id(DISPID_IHTMLFRAMEBASE_NAME)] \
+ void name(BSTR v); \
+ \
+ [propget, id(DISPID_IHTMLFRAMEBASE_NAME)] \
+ BSTR name(); \
+ \
+ [propput, id(DISPID_IHTMLFRAMEBASE_BORDER)] \
+ void border(VARIANT v); \
+ \
+ [propget, id(DISPID_IHTMLFRAMEBASE_BORDER)] \
+ VARIANT border(); \
+ \
+ [propput, id(DISPID_IHTMLFRAMEBASE_FRAMEBORDER)] \
+ void frameBorder(BSTR v); \
+ \
+ [propget, id(DISPID_IHTMLFRAMEBASE_FRAMEBORDER)] \
+ BSTR frameBorder(); \
+ \
+ [propput, id(DISPID_IHTMLFRAMEBASE_FRAMESPACING)] \
+ void frameSpacing(VARIANT v); \
+ \
+ [propget, id(DISPID_IHTMLFRAMEBASE_FRAMESPACING)] \
+ VARIANT frameSpacing(); \
+ \
+ [propput, id(DISPID_IHTMLFRAMEBASE_MARGINWIDTH)] \
+ void marginWidth(VARIANT v); \
+ \
+ [propget, id(DISPID_IHTMLFRAMEBASE_MARGINWIDTH)] \
+ VARIANT marginWidth(); \
+ \
+ [propput, id(DISPID_IHTMLFRAMEBASE_MARGINHEIGHT)] \
+ void marginHeight(VARIANT v); \
+ \
+ [propget, id(DISPID_IHTMLFRAMEBASE_MARGINHEIGHT)] \
+ VARIANT marginHeight(); \
+ \
+ [propput, id(DISPID_IHTMLFRAMEBASE_NORESIZE)] \
+ void noResize(VARIANT_BOOL v); \
+ \
+ [propget, id(DISPID_IHTMLFRAMEBASE_NORESIZE)] \
+ VARIANT_BOOL noResize(); \
+ \
+ [propput, id(DISPID_IHTMLFRAMEBASE_SCROLLING)] \
+ void scrolling(BSTR v); \
+ \
+ [propget, id(DISPID_IHTMLFRAMEBASE_SCROLLING)] \
+ BSTR scrolling()
+
/*****************************************************************************
* IHTMLFrameBase2 interface
*/
HRESULT allowTransparency([retval, out] VARIANT_BOOL *p);
}
+#define WINE_IHTMLFRAMEBASE2_DISPINTERFACE_DECL \
+ [propget, id(DISPID_IHTMLFRAMEBASE2_CONTENTWINDOW)] \
+ IHTMLWindow2 *contentWindow(); \
+ \
+ [propput, id(DISPID_IHTMLFRAMEBASE2_ONLOAD), displaybind, bindable] \
+ void onload(VARIANT v); \
+ \
+ [propget, id(DISPID_IHTMLFRAMEBASE2_ONLOAD), displaybind, bindable] \
+ VARIANT onload(); \
+ \
+ [propput, id(DISPID_IHTMLFRAMEBASE2_ALLOWTRANSPARENCY)] \
+ void allowTransparency(VARIANT_BOOL v); \
+ \
+ [propget, id(DISPID_IHTMLFRAMEBASE2_ALLOWTRANSPARENCY)] \
+ VARIANT_BOOL allowTransparency()
+
+#define WINE_IHTMLFRAMEBASE3_DISPINTERFACE_DECL \
+ [propput, id(DISPID_IHTMLFRAMEBASE3_LONGDESC), displaybind, bindable] \
+ void longDesc(BSTR v); \
+ \
+ [propget, id(DISPID_IHTMLFRAMEBASE3_LONGDESC), displaybind, bindable] \
+ BSTR longDesc()
+
+
+#define WINE_HTMLFRAMEBASE_DISPINTERFACE_DECL \
+ WINE_HTMLDATAELEMENT_DISPINTERFACE_DECL; \
+ WINE_IHTMLFRAMEBASE_DISPINTERFACE_DECL; \
+ WINE_IHTMLFRAMEBASE2_DISPINTERFACE_DECL; \
+ WINE_IHTMLFRAMEBASE3_DISPINTERFACE_DECL
+
/*****************************************************************************
- * DispHTMLIFrame dispinterface
+ * IHTMLFrameElement3 interface
*/
[
- hidden,
- uuid(3050f51b-98b5-11cf-bb82-00aa00bdce0b)
+ odl,
+ oleautomation,
+ dual,
+ uuid(3051042d-98b5-11cf-bb82-00aa00bdce0b)
]
-dispinterface DispHTMLIFrame
+interface IHTMLFrameElement3 : IDispatch
{
-properties:
-methods:
- WINE_HTMLDATAELEMENT_DISPINTERFACE_DECL;
+ [propget, id(DISPID_IHTMLFRAMEELEMENT3_CONTENTDOCUMENT)]
+ HRESULT contentDocument([out, retval] IDispatch **p);
- [propput, id(DISPID_IHTMLFRAMEBASE_SRC)]
- void src(BSTR v);
+ [propput, id(DISPID_IHTMLFRAMEELEMENT3_IE8_SRC)]
+ HRESULT src([in] BSTR v);
- [propget, id(DISPID_IHTMLFRAMEBASE_SRC)]
- BSTR src();
+ [propget, id(DISPID_IHTMLFRAMEELEMENT3_IE8_SRC)]
+ HRESULT src([out, retval] BSTR *p);
- [propput, id(DISPID_IHTMLFRAMEBASE_NAME)]
- void name(BSTR v);
+ [propput, id(DISPID_IHTMLFRAMEELEMENT3_IE8_LONGDESC)]
+ HRESULT longDesc([in] BSTR v);
- [propget, id(DISPID_IHTMLFRAMEBASE_NAME)]
- BSTR name();
+ [propget, id(DISPID_IHTMLFRAMEELEMENT3_IE8_LONGDESC)]
+ HRESULT longDesc([out, retval] BSTR *p);
- [propput, id(DISPID_IHTMLFRAMEBASE_BORDER)]
- void border(VARIANT v);
+ [propput, id(DISPID_IHTMLFRAMEELEMENT3_IE8_FRAMEBORDER)]
+ HRESULT frameBorder([in] BSTR v);
- [propget, id(DISPID_IHTMLFRAMEBASE_BORDER)]
- VARIANT border();
+ [propget, id(DISPID_IHTMLFRAMEELEMENT3_IE8_FRAMEBORDER)]
+ HRESULT frameBorder([out, retval] BSTR * p);
+}
- [propput, id(DISPID_IHTMLFRAMEBASE_FRAMEBORDER)]
- void frameBorder(BSTR v);
+/*****************************************************************************
+ * DispHTMLFrameElement dispinterface
+ */
+[
+ hidden,
+ uuid(3050f513-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLFrameElement
+{
+properties:
+methods:
+ WINE_HTMLFRAMEBASE_DISPINTERFACE_DECL;
- [propget, id(DISPID_IHTMLFRAMEBASE_FRAMEBORDER)]
- BSTR frameBorder();
+ [propput, id(DISPID_IHTMLFRAMEELEMENT_BORDERCOLOR)]
+ void borderColor(VARIANT v);
- [propput, id(DISPID_IHTMLFRAMEBASE_FRAMESPACING)]
- void frameSpacing(VARIANT v);
+ [propget, id(DISPID_IHTMLFRAMEELEMENT_BORDERCOLOR)]
+ VARIANT borderColor();
- [propget, id(DISPID_IHTMLFRAMEBASE_FRAMESPACING)]
- VARIANT frameSpacing();
+ [propput, id(DISPID_IHTMLFRAMEELEMENT2_HEIGHT)]
+ void height(VARIANT v);
- [propput, id(DISPID_IHTMLFRAMEBASE_MARGINWIDTH)]
- void marginWidth(VARIANT v);
+ [propget, id(DISPID_IHTMLFRAMEELEMENT2_HEIGHT)]
+ VARIANT height();
- [propget, id(DISPID_IHTMLFRAMEBASE_MARGINWIDTH)]
- VARIANT marginWidth();
+ [propput, id(DISPID_IHTMLFRAMEELEMENT2_WIDTH)]
+ void width(VARIANT v);
- [propput, id(DISPID_IHTMLFRAMEBASE_MARGINHEIGHT)]
- void marginHeight(VARIANT v);
+ [propget, id(DISPID_IHTMLFRAMEELEMENT2_WIDTH)]
+ VARIANT width();
- [propget, id(DISPID_IHTMLFRAMEBASE_MARGINHEIGHT)]
- VARIANT marginHeight();
+ [propget, id(DISPID_IHTMLFRAMEELEMENT3_CONTENTDOCUMENT)]
+ IDispatch *contentDocument();
- [propput, id(DISPID_IHTMLFRAMEBASE_NORESIZE)]
- void noResize(VARIANT_BOOL v);
+ [propput, id(DISPID_IHTMLFRAMEELEMENT3_IE8_SRC)]
+ void ie8_src(BSTR v);
- [propget, id(DISPID_IHTMLFRAMEBASE_NORESIZE)]
- VARIANT_BOOL noResize();
+ [propget, id(DISPID_IHTMLFRAMEELEMENT3_IE8_SRC)]
+ BSTR ie8_src();
- [propput, id(DISPID_IHTMLFRAMEBASE_SCROLLING)]
- void scrolling(BSTR v);
+ [propput, id(DISPID_IHTMLFRAMEELEMENT3_IE8_LONGDESC)]
+ void ie8_longDesc(BSTR v);
- [propget, id(DISPID_IHTMLFRAMEBASE_SCROLLING)]
- BSTR scrolling();
+ [propget, id(DISPID_IHTMLFRAMEELEMENT3_IE8_LONGDESC)]
+ BSTR ie8_longDesc();
- [propget, id(DISPID_IHTMLFRAMEBASE2_CONTENTWINDOW)]
- IHTMLWindow2 *contentWindow();
+ [propput, id(DISPID_IHTMLFRAMEELEMENT3_IE8_FRAMEBORDER)]
+ void ie8_frameBorder(BSTR v);
- [propput, id(DISPID_IHTMLFRAMEBASE2_ONLOAD), displaybind, bindable]
- void onload(VARIANT v);
+ [propget, id(DISPID_IHTMLFRAMEELEMENT3_IE8_FRAMEBORDER)]
+ BSTR ie8_frameBorder();
+}
- [propget, id(DISPID_IHTMLFRAMEBASE2_ONLOAD), displaybind, bindable]
- VARIANT onload();
+/*****************************************************************************
+ * IHTMLIFrameElement interface
+ */
+[
+ odl,
+ oleautomation,
+ dual,
+ uuid(3050f315-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLIFrameElement : IDispatch
+{
+ [propput, id(DISPID_IHTMLIFRAMEELEMENT_VSPACE)]
+ HRESULT vspace([in] LONG v);
- [propput, id(DISPID_IHTMLFRAMEBASE2_ALLOWTRANSPARENCY)]
- void allowTransparency(VARIANT_BOOL v);
+ [propget, id(DISPID_IHTMLIFRAMEELEMENT_VSPACE)]
+ HRESULT vspace([retval, out] LONG *p);
- [propget, id(DISPID_IHTMLFRAMEBASE2_ALLOWTRANSPARENCY)]
- VARIANT_BOOL allowTransparency();
+ [propput, id(DISPID_IHTMLIFRAMEELEMENT_HSPACE)]
+ HRESULT hspace([in] LONG v);
- [propput, id(DISPID_IHTMLFRAMEBASE3_LONGDESC), displaybind, bindable]
- void longDesc(BSTR v);
+ [propget, id(DISPID_IHTMLIFRAMEELEMENT_HSPACE)]
+ HRESULT hspace([retval, out] LONG *p);
- [propget, id(DISPID_IHTMLFRAMEBASE3_LONGDESC), displaybind, bindable]
- BSTR longDesc();
+ [propput, id(DISPID_IHTMLIFRAMEELEMENT_ALIGN), displaybind, bindable]
+ HRESULT align([in] BSTR v);
+
+ [propget, id(DISPID_IHTMLIFRAMEELEMENT_ALIGN), displaybind, bindable]
+ HRESULT align([retval, out] BSTR *p);
+}
+
+/*****************************************************************************
+ * DispHTMLIFrame dispinterface
+ */
+[
+ hidden,
+ uuid(3050f51b-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLIFrame
+{
+properties:
+methods:
+ WINE_HTMLFRAMEBASE_DISPINTERFACE_DECL;
[propput, id(DISPID_IHTMLIFRAMEELEMENT_VSPACE)]
void vspace(LONG v);