mirror of
https://github.com/reactos/reactos.git
synced 2024-10-01 06:57:08 +00:00
[MSHTML]
-sync to wine 1.2 RC2 -add ros_diff.patch svn path=/trunk/; revision=47416
This commit is contained in:
parent
bc9b61ca21
commit
7f10ebad54
|
@ -35,9 +35,9 @@ STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMEN
|
|||
CAPTION "Wine-Gecko-Installatie"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
{
|
||||
LTEXT "Wine could not find a Gecko package which is needed for applications embedding HTML " \
|
||||
"to work correctly. Wine can automatically download and install it for you.\n\n" \
|
||||
"Note: it's recommended to use distro packages instead. See http://wiki.winehq.org/Gecko for details.",
|
||||
LTEXT "Wine kon geen Gecko pakket vinden. Gecko is nodig voor programma's die gebruik maken " \
|
||||
"van embedded HTML. Wine kan het automatisch voor u downloaden en installeren.\n\n" \
|
||||
"Noot: het is aanbevolen om distro pakketten te gebruiken. Zie http://wiki.winehq.org/Gecko voor details.",
|
||||
ID_DWL_STATUS, 10, 10, 240, 50, SS_LEFT
|
||||
CONTROL "Voortgang", ID_DWL_PROGRESS, PROGRESS_CLASSA, WS_BORDER|PBS_SMOOTH, 10, 50, 240, 12
|
||||
DEFPUSHBUTTON "&Installeren", ID_DWL_INSTALL, 200, 70, 50, 15, WS_GROUP | WS_TABSTOP
|
||||
|
|
|
@ -36,10 +36,12 @@ STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMEN
|
|||
CAPTION "Установка Wine Gecko"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
{
|
||||
LTEXT "Wine не может найти пакет Gecko который нужен для приложений со встроенным HTML " \
|
||||
"для корректной работы. Wine может автоматически загрузить и установить его для Вас.\n\n" \
|
||||
"Примечание: Рекомендовано использовать пакет из Вашего дистрибутива. Посетите http://wiki.winehq.org/Gecko для деталей.",
|
||||
ID_DWL_STATUS, 10, 10, 240, 50, SS_LEFT
|
||||
LTEXT "Wine не может найти пакет Gecko, который необходим для корректной работы приложений"\
|
||||
"с поддержкой HTML. " \
|
||||
"Wine может автоматически загрузить и установить его для вас.\n\n" \
|
||||
"Примечание: рекомендуется использовать пакет, предоставляемый вашим дистрибутивом. "\
|
||||
"Посетите http://wiki.winehq.org/Gecko для получения более подробной информации.",
|
||||
ID_DWL_STATUS, 10, 10, 240, 70, SS_LEFT
|
||||
CONTROL "Прогресс", ID_DWL_PROGRESS, PROGRESS_CLASSA, WS_BORDER|PBS_SMOOTH, 10, 65, 240, 12
|
||||
DEFPUSHBUTTON "&Установить", ID_DWL_INSTALL, 180, 85, 70, 15, WS_GROUP | WS_TABSTOP
|
||||
PUSHBUTTON "&Отмена", IDCANCEL, 100, 85, 70, 15, WS_GROUP | WS_TABSTOP
|
||||
|
|
|
@ -434,6 +434,10 @@ static HRESULT WINAPI HTMLBodyElement_put_text(IHTMLBodyElement *iface, VARIANT
|
|||
|
||||
nsres = nsIDOMHTMLBodyElement_SetText(This->nsbody, &text);
|
||||
nsAString_Finish(&text);
|
||||
if(NS_FAILED(nsres)) {
|
||||
ERR("SetText failed: %08x\n", nsres);
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
@ -462,7 +466,7 @@ static HRESULT WINAPI HTMLBodyElement_get_text(IHTMLBodyElement *iface, VARIANT
|
|||
|
||||
nsAString_Finish(&text);
|
||||
|
||||
return S_OK;
|
||||
return hres;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLBodyElement_put_link(IHTMLBodyElement *iface, VARIANT v)
|
||||
|
|
|
@ -889,8 +889,25 @@ static HRESULT WINAPI HTMLDocument_close(IHTMLDocument2 *iface)
|
|||
static HRESULT WINAPI HTMLDocument_clear(IHTMLDocument2 *iface)
|
||||
{
|
||||
HTMLDocument *This = HTMLDOC_THIS(iface);
|
||||
FIXME("(%p)\n", This);
|
||||
return E_NOTIMPL;
|
||||
nsIDOMNSHTMLDocument *nsdoc;
|
||||
nsresult nsres;
|
||||
|
||||
TRACE("(%p)\n", This);
|
||||
|
||||
nsres = nsIDOMHTMLDocument_QueryInterface(This->doc_node->nsdoc, &IID_nsIDOMNSHTMLDocument, (void**)&nsdoc);
|
||||
if(NS_FAILED(nsres)) {
|
||||
ERR("Could not get nsIDOMNSHTMLDocument iface: %08x\n", nsres);
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
nsres = nsIDOMNSHTMLDocument_Clear(nsdoc);
|
||||
nsIDOMNSHTMLDocument_Release(nsdoc);
|
||||
if(NS_FAILED(nsres)) {
|
||||
ERR("Clear failed: %08x\n", nsres);
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLDocument_queryCommandSupported(IHTMLDocument2 *iface, BSTR cmdID,
|
||||
|
|
|
@ -308,15 +308,19 @@ static HRESULT WINAPI HTMLDocument3_get_dir(IHTMLDocument3 *iface, BSTR *p)
|
|||
static HRESULT WINAPI HTMLDocument3_put_oncontextmenu(IHTMLDocument3 *iface, VARIANT v)
|
||||
{
|
||||
HTMLDocument *This = HTMLDOC3_THIS(iface);
|
||||
FIXME("(%p)->()\n", This);
|
||||
return E_NOTIMPL;
|
||||
|
||||
TRACE("(%p)->()\n", This);
|
||||
|
||||
return set_doc_event(This, EVENTID_CONTEXTMENU, &v);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLDocument3_get_oncontextmenu(IHTMLDocument3 *iface, VARIANT *p)
|
||||
{
|
||||
HTMLDocument *This = HTMLDOC3_THIS(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
|
||||
TRACE("(%p)->(%p)\n", This, p);
|
||||
|
||||
return get_doc_event(This, EVENTID_CONTEXTMENU, p);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLDocument3_put_onstop(IHTMLDocument3 *iface, VARIANT v)
|
||||
|
|
|
@ -1803,13 +1803,11 @@ static HRESULT WINAPI HTMLFiltersCollection_get_length(IHTMLFiltersCollection *i
|
|||
{
|
||||
HTMLFiltersCollection *This = HTMLFILTERSCOLLECTION_THIS(iface);
|
||||
|
||||
if(!p)
|
||||
return E_POINTER;
|
||||
|
||||
FIXME("(%p)->(%p) Always returning 0\n", This, p);
|
||||
|
||||
if(!p)
|
||||
return E_POINTER;
|
||||
|
||||
if(p)
|
||||
*p = 0;
|
||||
*p = 0;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
|
|
@ -56,6 +56,9 @@ static const WCHAR onchangeW[] = {'o','n','c','h','a','n','g','e',0};
|
|||
static const WCHAR clickW[] = {'c','l','i','c','k',0};
|
||||
static const WCHAR onclickW[] = {'o','n','c','l','i','c','k',0};
|
||||
|
||||
static const WCHAR contextmenuW[] = {'c','o','n','t','e','x','t','m','e','n','u',0};
|
||||
static const WCHAR oncontextmenuW[] = {'o','n','c','o','n','t','e','x','t','m','e','n','u',0};
|
||||
|
||||
static const WCHAR dblclickW[] = {'d','b','l','c','l','i','c','k',0};
|
||||
static const WCHAR ondblclickW[] = {'o','n','d','b','l','c','l','i','c','k',0};
|
||||
|
||||
|
@ -141,6 +144,8 @@ static const event_info_t event_info[] = {
|
|||
EVENT_DEFAULTLISTENER|EVENT_BUBBLE},
|
||||
{clickW, onclickW, EVENTT_MOUSE, DISPID_EVMETH_ONCLICK,
|
||||
EVENT_DEFAULTLISTENER|EVENT_BUBBLE},
|
||||
{contextmenuW, oncontextmenuW, EVENTT_MOUSE, DISPID_EVMETH_ONCONTEXTMENU,
|
||||
EVENT_BUBBLE},
|
||||
{dblclickW, ondblclickW, EVENTT_MOUSE, DISPID_EVMETH_ONDBLCLICK,
|
||||
EVENT_DEFAULTLISTENER|EVENT_BUBBLE},
|
||||
{dragW, ondragW, EVENTT_MOUSE, DISPID_EVMETH_ONDRAG,
|
||||
|
@ -283,16 +288,14 @@ static ULONG WINAPI HTMLEventObj_Release(IHTMLEventObj *iface)
|
|||
static HRESULT WINAPI HTMLEventObj_GetTypeInfoCount(IHTMLEventObj *iface, UINT *pctinfo)
|
||||
{
|
||||
HTMLEventObj *This = HTMLEVENTOBJ_THIS(iface);
|
||||
FIXME("(%p)->(%p)\n", This, pctinfo);
|
||||
return E_NOTIMPL;
|
||||
return IDispatchEx_GetTypeInfoCount(DISPATCHEX(&This->dispex), pctinfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLEventObj_GetTypeInfo(IHTMLEventObj *iface, UINT iTInfo,
|
||||
LCID lcid, ITypeInfo **ppTInfo)
|
||||
{
|
||||
HTMLEventObj *This = HTMLEVENTOBJ_THIS(iface);
|
||||
FIXME("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo);
|
||||
return E_NOTIMPL;
|
||||
return IDispatchEx_GetTypeInfo(DISPATCHEX(&This->dispex), iTInfo, lcid, ppTInfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLEventObj_GetIDsOfNames(IHTMLEventObj *iface, REFIID riid,
|
||||
|
@ -300,9 +303,7 @@ static HRESULT WINAPI HTMLEventObj_GetIDsOfNames(IHTMLEventObj *iface, REFIID ri
|
|||
LCID lcid, DISPID *rgDispId)
|
||||
{
|
||||
HTMLEventObj *This = HTMLEVENTOBJ_THIS(iface);
|
||||
FIXME("(%p)->(%s %p %u %u %p)\n", This, debugstr_guid(riid), rgszNames, cNames,
|
||||
lcid, rgDispId);
|
||||
return E_NOTIMPL;
|
||||
return IDispatchEx_GetIDsOfNames(DISPATCHEX(&This->dispex), riid, rgszNames, cNames, lcid, rgDispId);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLEventObj_Invoke(IHTMLEventObj *iface, DISPID dispIdMember,
|
||||
|
@ -310,9 +311,8 @@ static HRESULT WINAPI HTMLEventObj_Invoke(IHTMLEventObj *iface, DISPID dispIdMem
|
|||
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
|
||||
{
|
||||
HTMLEventObj *This = HTMLEVENTOBJ_THIS(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(DISPATCHEX(&This->dispex), dispIdMember, riid, lcid,
|
||||
wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLEventObj_get_srcElement(IHTMLEventObj *iface, IHTMLElement **p)
|
||||
|
|
|
@ -21,6 +21,7 @@ typedef enum {
|
|||
EVENTID_BLUR,
|
||||
EVENTID_CHANGE,
|
||||
EVENTID_CLICK,
|
||||
EVENTID_CONTEXTMENU,
|
||||
EVENTID_DBLCLICK,
|
||||
EVENTID_DRAG,
|
||||
EVENTID_DRAGSTART,
|
||||
|
|
|
@ -41,6 +41,41 @@ struct HTMLFormElement {
|
|||
|
||||
#define HTMLFORM(x) (&(x)->lpHTMLFormElementVtbl)
|
||||
|
||||
static HRESULT htmlform_item(HTMLFormElement *This, int i, IDispatch **ret)
|
||||
{
|
||||
nsIDOMHTMLCollection *elements;
|
||||
nsIDOMNode *item;
|
||||
HTMLDOMNode *node;
|
||||
nsresult nsres;
|
||||
|
||||
nsres = nsIDOMHTMLFormElement_GetElements(This->nsform, &elements);
|
||||
if(NS_FAILED(nsres)) {
|
||||
FIXME("GetElements failed: 0x%08x\n", nsres);
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
nsres = nsIDOMHTMLCollection_Item(elements, i, &item);
|
||||
nsIDOMHTMLCollection_Release(elements);
|
||||
if(NS_FAILED(nsres)) {
|
||||
FIXME("Item failed: 0x%08x\n", nsres);
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
if(item) {
|
||||
node = get_node(This->element.node.doc, item, TRUE);
|
||||
if(!node)
|
||||
return E_OUTOFMEMORY;
|
||||
|
||||
IHTMLDOMNode_AddRef(HTMLDOMNODE(node));
|
||||
nsIDOMNode_Release(item);
|
||||
*ret = (IDispatch*)HTMLDOMNODE(node);
|
||||
}else {
|
||||
*ret = NULL;
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
#define HTMLFORM_THIS(iface) DEFINE_THIS(HTMLFormElement, HTMLFormElement, iface)
|
||||
|
||||
static HRESULT WINAPI HTMLFormElement_QueryInterface(IHTMLFormElement *iface,
|
||||
|
@ -98,15 +133,43 @@ static HRESULT WINAPI HTMLFormElement_Invoke(IHTMLFormElement *iface, DISPID dis
|
|||
static HRESULT WINAPI HTMLFormElement_put_action(IHTMLFormElement *iface, BSTR v)
|
||||
{
|
||||
HTMLFormElement *This = HTMLFORM_THIS(iface);
|
||||
FIXME("(%p)->(%s)\n", This, wine_dbgstr_w(v));
|
||||
return E_NOTIMPL;
|
||||
nsAString action_str;
|
||||
nsresult nsres;
|
||||
|
||||
TRACE("(%p)->(%s)\n", This, wine_dbgstr_w(v));
|
||||
|
||||
nsAString_InitDepend(&action_str, v);
|
||||
nsres = nsIDOMHTMLFormElement_SetAction(This->nsform, &action_str);
|
||||
nsAString_Finish(&action_str);
|
||||
if(NS_FAILED(nsres)) {
|
||||
ERR("SetAction failed: %08x\n", nsres);
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLFormElement_get_action(IHTMLFormElement *iface, BSTR *p)
|
||||
{
|
||||
HTMLFormElement *This = HTMLFORM_THIS(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
nsAString action_str;
|
||||
nsresult nsres;
|
||||
HRESULT hres;
|
||||
|
||||
TRACE("(%p)->(%p)\n", This, p);
|
||||
|
||||
nsAString_Init(&action_str, NULL);
|
||||
nsres = nsIDOMHTMLFormElement_GetAction(This->nsform, &action_str);
|
||||
if(NS_SUCCEEDED(nsres)) {
|
||||
const PRUnichar *action;
|
||||
nsAString_GetData(&action_str, &action);
|
||||
hres = nsuri_to_url(action, FALSE, p);
|
||||
}else {
|
||||
ERR("GetAction failed: %08x\n", nsres);
|
||||
hres = E_FAIL;
|
||||
}
|
||||
|
||||
return hres;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLFormElement_put_dir(IHTMLFormElement *iface, BSTR v)
|
||||
|
@ -238,8 +301,19 @@ static HRESULT WINAPI HTMLFormElement_put_length(IHTMLFormElement *iface, LONG v
|
|||
static HRESULT WINAPI HTMLFormElement_get_length(IHTMLFormElement *iface, LONG *p)
|
||||
{
|
||||
HTMLFormElement *This = HTMLFORM_THIS(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
PRInt32 length;
|
||||
nsresult nsres;
|
||||
|
||||
TRACE("(%p)->(%p)\n", This, p);
|
||||
|
||||
nsres = nsIDOMHTMLFormElement_GetLength(This->nsform, &length);
|
||||
if(NS_FAILED(nsres)) {
|
||||
ERR("GetLength failed: %08x\n", nsres);
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
*p = length;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLFormElement__newEnum(IHTMLFormElement *iface, IUnknown **p)
|
||||
|
@ -253,7 +327,20 @@ static HRESULT WINAPI HTMLFormElement_item(IHTMLFormElement *iface, VARIANT name
|
|||
VARIANT index, IDispatch **pdisp)
|
||||
{
|
||||
HTMLFormElement *This = HTMLFORM_THIS(iface);
|
||||
FIXME("(%p)->(v v %p)\n", This, pdisp);
|
||||
|
||||
TRACE("(%p)->(%s %s %p)\n", This, debugstr_variant(&name), debugstr_variant(&index), pdisp);
|
||||
|
||||
if(!pdisp)
|
||||
return E_INVALIDARG;
|
||||
*pdisp = NULL;
|
||||
|
||||
if(V_VT(&name) == VT_I4) {
|
||||
if(V_I4(&name) < 0)
|
||||
return E_INVALIDARG;
|
||||
return htmlform_item(This, V_I4(&name), pdisp);
|
||||
}
|
||||
|
||||
FIXME("Unsupported args\n");
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -428,34 +515,21 @@ static HRESULT HTMLFormElement_invoke(HTMLDOMNode *iface,
|
|||
EXCEPINFO *ei, IServiceProvider *caller)
|
||||
{
|
||||
HTMLFormElement *This = HTMLFORM_NODE_THIS(iface);
|
||||
nsIDOMHTMLCollection *elements;
|
||||
nsIDOMNode *item;
|
||||
HTMLDOMNode *node;
|
||||
nsresult nsres;
|
||||
IDispatch *ret;
|
||||
HRESULT hres;
|
||||
|
||||
TRACE("(%p)->(%x %x %x %p %p %p %p)\n", This, id, lcid, flags, params, res, ei, caller);
|
||||
|
||||
nsres = nsIDOMHTMLFormElement_GetElements(This->nsform, &elements);
|
||||
if(NS_FAILED(nsres)) {
|
||||
FIXME("GetElements failed: 0x%08x\n", nsres);
|
||||
return E_FAIL;
|
||||
hres = htmlform_item(This, id - MSHTML_DISPID_CUSTOM_MIN, &ret);
|
||||
if(FAILED(hres))
|
||||
return hres;
|
||||
|
||||
if(ret) {
|
||||
V_VT(res) = VT_DISPATCH;
|
||||
V_DISPATCH(res) = ret;
|
||||
}else {
|
||||
V_VT(res) = VT_NULL;
|
||||
}
|
||||
|
||||
nsres = nsIDOMHTMLCollection_Item(elements, id - MSHTML_DISPID_CUSTOM_MIN, &item);
|
||||
nsIDOMHTMLCollection_Release(elements);
|
||||
if(NS_FAILED(nsres)) {
|
||||
FIXME("Item failed: 0x%08x\n", nsres);
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
node = get_node(This->element.node.doc, item, TRUE);
|
||||
|
||||
V_VT(res) = VT_DISPATCH;
|
||||
V_DISPATCH(res) = (IDispatch*)node;
|
||||
|
||||
IHTMLDOMNode_AddRef(HTMLDOMNODE(node));
|
||||
nsIDOMNode_Release(item);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
|
|
@ -106,8 +106,24 @@ static HRESULT WINAPI HTMLInputElement_Invoke(IHTMLInputElement *iface, DISPID d
|
|||
static HRESULT WINAPI HTMLInputElement_put_type(IHTMLInputElement *iface, BSTR v)
|
||||
{
|
||||
HTMLInputElement *This = HTMLINPUT_THIS(iface);
|
||||
FIXME("(%p)->(%s)\n", This, debugstr_w(v));
|
||||
return E_NOTIMPL;
|
||||
nsAString type_str;
|
||||
nsresult nsres;
|
||||
|
||||
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
|
||||
|
||||
/*
|
||||
* FIXME:
|
||||
* On IE setting type works only on dynamically created elements before adding them to DOM tree.
|
||||
*/
|
||||
nsAString_InitDepend(&type_str, v);
|
||||
nsres = nsIDOMHTMLInputElement_SetType(This->nsinput, &type_str);
|
||||
nsAString_Finish(&type_str);
|
||||
if(NS_FAILED(nsres)) {
|
||||
ERR("SetType failed: %08x\n", nsres);
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLInputElement_get_type(IHTMLInputElement *iface, BSTR *p)
|
||||
|
@ -180,8 +196,20 @@ static HRESULT WINAPI HTMLInputElement_get_value(IHTMLInputElement *iface, BSTR
|
|||
static HRESULT WINAPI HTMLInputElement_put_name(IHTMLInputElement *iface, BSTR v)
|
||||
{
|
||||
HTMLInputElement *This = HTMLINPUT_THIS(iface);
|
||||
FIXME("(%p)->(%s)\n", This, debugstr_w(v));
|
||||
return E_NOTIMPL;
|
||||
nsAString name_str;
|
||||
nsresult nsres;
|
||||
|
||||
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
|
||||
|
||||
nsAString_InitDepend(&name_str, v);
|
||||
nsres = nsIDOMHTMLInputElement_SetName(This->nsinput, &name_str);
|
||||
nsAString_Finish(&name_str);
|
||||
if(NS_FAILED(nsres)) {
|
||||
ERR("SetName failed: %08x\n", nsres);
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLInputElement_get_name(IHTMLInputElement *iface, BSTR *p)
|
||||
|
@ -190,6 +218,7 @@ static HRESULT WINAPI HTMLInputElement_get_name(IHTMLInputElement *iface, BSTR *
|
|||
nsAString name_str;
|
||||
const PRUnichar *name;
|
||||
nsresult nsres;
|
||||
HRESULT hres = S_OK;
|
||||
|
||||
TRACE("(%p)->(%p)\n", This, p);
|
||||
|
||||
|
@ -198,16 +227,14 @@ static HRESULT WINAPI HTMLInputElement_get_name(IHTMLInputElement *iface, BSTR *
|
|||
nsres = nsIDOMHTMLInputElement_GetName(This->nsinput, &name_str);
|
||||
if(NS_SUCCEEDED(nsres)) {
|
||||
nsAString_GetData(&name_str, &name);
|
||||
*p = SysAllocString(name);
|
||||
*p = *name ? SysAllocString(name) : NULL;
|
||||
}else {
|
||||
ERR("GetName failed: %08x\n", nsres);
|
||||
return E_FAIL;
|
||||
hres = E_FAIL;
|
||||
}
|
||||
|
||||
nsAString_Finish(&name_str);
|
||||
|
||||
TRACE("name=%s\n", debugstr_w(*p));
|
||||
return S_OK;
|
||||
return hres;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLInputElement_put_status(IHTMLInputElement *iface, VARIANT_BOOL v)
|
||||
|
|
|
@ -98,15 +98,35 @@ static HRESULT WINAPI HTMLOptionElement_Invoke(IHTMLOptionElement *iface, DISPID
|
|||
static HRESULT WINAPI HTMLOptionElement_put_selected(IHTMLOptionElement *iface, VARIANT_BOOL v)
|
||||
{
|
||||
HTMLOptionElement *This = HTMLOPTION_THIS(iface);
|
||||
FIXME("(%p)->(%x)\n", This, v);
|
||||
return E_NOTIMPL;
|
||||
nsresult nsres;
|
||||
|
||||
TRACE("(%p)->(%x)\n", This, v);
|
||||
|
||||
nsres = nsIDOMHTMLOptionElement_SetSelected(This->nsoption, v != VARIANT_FALSE);
|
||||
if(NS_FAILED(nsres)) {
|
||||
ERR("SetSelected failed: %08x\n", nsres);
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLOptionElement_get_selected(IHTMLOptionElement *iface, VARIANT_BOOL *p)
|
||||
{
|
||||
HTMLOptionElement *This = HTMLOPTION_THIS(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
PRBool selected;
|
||||
nsresult nsres;
|
||||
|
||||
TRACE("(%p)->(%p)\n", This, p);
|
||||
|
||||
nsres = nsIDOMHTMLOptionElement_GetSelected(This->nsoption, &selected);
|
||||
if(NS_FAILED(nsres)) {
|
||||
ERR("GetSelected failed: %08x\n", nsres);
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
*p = selected ? VARIANT_TRUE : VARIANT_FALSE;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLOptionElement_put_value(IHTMLOptionElement *iface, BSTR v)
|
||||
|
|
|
@ -42,6 +42,43 @@ typedef struct {
|
|||
|
||||
#define HTMLSELECT(x) ((IHTMLSelectElement*) &(x)->lpHTMLSelectElementVtbl)
|
||||
|
||||
static HRESULT htmlselect_item(HTMLSelectElement *This, int i, IDispatch **ret)
|
||||
{
|
||||
nsIDOMHTMLOptionsCollection *nscol;
|
||||
nsIDOMNode *nsnode;
|
||||
nsresult nsres;
|
||||
|
||||
nsres = nsIDOMHTMLSelectElement_GetOptions(This->nsselect, &nscol);
|
||||
if(NS_FAILED(nsres)) {
|
||||
ERR("GetOptions failed: %08x\n", nsres);
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
nsres = nsIDOMHTMLOptionsCollection_Item(nscol, i, &nsnode);
|
||||
nsIDOMHTMLOptionsCollection_Release(nscol);
|
||||
if(NS_FAILED(nsres)) {
|
||||
ERR("Item failed: %08x\n", nsres);
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
if(nsnode) {
|
||||
HTMLDOMNode *node;
|
||||
|
||||
node = get_node(This->element.node.doc, nsnode, TRUE);
|
||||
nsIDOMNode_Release(nsnode);
|
||||
if(!node) {
|
||||
ERR("Could not find node\n");
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
IHTMLDOMNode_AddRef(HTMLDOMNODE(node));
|
||||
*ret = (IDispatch*)HTMLDOMNODE(node);
|
||||
}else {
|
||||
*ret = NULL;
|
||||
}
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
#define HTMLSELECT_THIS(iface) DEFINE_THIS(HTMLSelectElement, HTMLSelectElement, iface)
|
||||
|
||||
static HRESULT WINAPI HTMLSelectElement_QueryInterface(IHTMLSelectElement *iface,
|
||||
|
@ -170,8 +207,12 @@ static HRESULT WINAPI HTMLSelectElement_get_name(IHTMLSelectElement *iface, BSTR
|
|||
static HRESULT WINAPI HTMLSelectElement_get_options(IHTMLSelectElement *iface, IDispatch **p)
|
||||
{
|
||||
HTMLSelectElement *This = HTMLSELECT_THIS(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
|
||||
TRACE("(%p)->(%p)\n", This, p);
|
||||
|
||||
*p = (IDispatch*)HTMLSELECT(This);
|
||||
IDispatch_AddRef(*p);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLSelectElement_put_onchange(IHTMLSelectElement *iface, VARIANT v)
|
||||
|
@ -364,8 +405,15 @@ static HRESULT WINAPI HTMLSelectElement_remove(IHTMLSelectElement *iface, LONG i
|
|||
static HRESULT WINAPI HTMLSelectElement_put_length(IHTMLSelectElement *iface, LONG v)
|
||||
{
|
||||
HTMLSelectElement *This = HTMLSELECT_THIS(iface);
|
||||
FIXME("(%p)->(%d)\n", This, v);
|
||||
return E_NOTIMPL;
|
||||
nsresult nsres;
|
||||
|
||||
TRACE("(%p)->(%d)\n", This, v);
|
||||
|
||||
nsres = nsIDOMHTMLSelectElement_SetLength(This->nsselect, v);
|
||||
if(NS_FAILED(nsres))
|
||||
ERR("SetLength failed: %08x\n", nsres);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLSelectElement_get_length(IHTMLSelectElement *iface, LONG *p)
|
||||
|
@ -397,7 +445,20 @@ static HRESULT WINAPI HTMLSelectElement_item(IHTMLSelectElement *iface, VARIANT
|
|||
VARIANT index, IDispatch **pdisp)
|
||||
{
|
||||
HTMLSelectElement *This = HTMLSELECT_THIS(iface);
|
||||
FIXME("(%p)->(v v %p)\n", This, pdisp);
|
||||
|
||||
TRACE("(%p)->(%s %s %p)\n", This, debugstr_variant(&name), debugstr_variant(&index), pdisp);
|
||||
|
||||
if(!pdisp)
|
||||
return E_POINTER;
|
||||
*pdisp = NULL;
|
||||
|
||||
if(V_VT(&name) == VT_I4) {
|
||||
if(V_I4(&name) < 0)
|
||||
return E_INVALIDARG;
|
||||
return htmlselect_item(This, V_I4(&name), pdisp);
|
||||
}
|
||||
|
||||
FIXME("Unsupported args\n");
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -493,6 +554,60 @@ static HRESULT HTMLSelectElementImpl_get_disabled(HTMLDOMNode *iface, VARIANT_BO
|
|||
return IHTMLSelectElement_get_disabled(HTMLSELECT(This), p);
|
||||
}
|
||||
|
||||
#define DISPID_OPTIONCOL_0 MSHTML_DISPID_CUSTOM_MIN
|
||||
|
||||
static HRESULT HTMLSelectElement_get_dispid(HTMLDOMNode *iface, BSTR name, DWORD flags, DISPID *dispid)
|
||||
{
|
||||
const WCHAR *ptr;
|
||||
DWORD idx = 0;
|
||||
|
||||
for(ptr = name; *ptr && isdigitW(*ptr); ptr++) {
|
||||
idx = idx*10 + (*ptr-'0');
|
||||
if(idx > MSHTML_CUSTOM_DISPID_CNT) {
|
||||
WARN("too big idx\n");
|
||||
return DISP_E_UNKNOWNNAME;
|
||||
}
|
||||
}
|
||||
if(*ptr)
|
||||
return DISP_E_UNKNOWNNAME;
|
||||
|
||||
*dispid = DISPID_OPTIONCOL_0 + idx;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT HTMLSelectElement_invoke(HTMLDOMNode *iface, DISPID id, LCID lcid, WORD flags, DISPPARAMS *params,
|
||||
VARIANT *res, EXCEPINFO *ei, IServiceProvider *caller)
|
||||
{
|
||||
HTMLSelectElement *This = HTMLSELECT_NODE_THIS(iface);
|
||||
|
||||
TRACE("(%p)->(%x %x %x %p %p %p %p)\n", This, id, lcid, flags, params, res, ei, caller);
|
||||
|
||||
switch(flags) {
|
||||
case DISPATCH_PROPERTYGET: {
|
||||
IDispatch *ret;
|
||||
HRESULT hres;
|
||||
|
||||
hres = htmlselect_item(This, id-DISPID_OPTIONCOL_0, &ret);
|
||||
if(FAILED(hres))
|
||||
return hres;
|
||||
|
||||
if(ret) {
|
||||
V_VT(res) = VT_DISPATCH;
|
||||
V_DISPATCH(res) = ret;
|
||||
}else {
|
||||
V_VT(res) = VT_NULL;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
FIXME("unimplemented flags %x\n", flags);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
#undef HTMLSELECT_NODE_THIS
|
||||
|
||||
static const NodeImplVtbl HTMLSelectElementImplVtbl = {
|
||||
|
@ -501,7 +616,11 @@ static const NodeImplVtbl HTMLSelectElementImplVtbl = {
|
|||
NULL,
|
||||
NULL,
|
||||
HTMLSelectElementImpl_put_disabled,
|
||||
HTMLSelectElementImpl_get_disabled
|
||||
HTMLSelectElementImpl_get_disabled,
|
||||
NULL,
|
||||
NULL,
|
||||
HTMLSelectElement_get_dispid,
|
||||
HTMLSelectElement_invoke
|
||||
};
|
||||
|
||||
static const tid_t HTMLSelectElement_tids[] = {
|
||||
|
|
|
@ -105,8 +105,20 @@ static HRESULT WINAPI HTMLTextAreaElement_get_type(IHTMLTextAreaElement *iface,
|
|||
static HRESULT WINAPI HTMLTextAreaElement_put_value(IHTMLTextAreaElement *iface, BSTR v)
|
||||
{
|
||||
HTMLTextAreaElement *This = HTMLTXTAREA_THIS(iface);
|
||||
FIXME("(%p)->(%s)\n", This, debugstr_w(v));
|
||||
return E_NOTIMPL;
|
||||
nsAString value_str;
|
||||
nsresult nsres;
|
||||
|
||||
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
|
||||
|
||||
nsAString_InitDepend(&value_str, v);
|
||||
nsres = nsIDOMHTMLTextAreaElement_SetValue(This->nstextarea, &value_str);
|
||||
nsAString_Finish(&value_str);
|
||||
if(NS_FAILED(nsres)) {
|
||||
ERR("SetValue failed: %08x\n", nsres);
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLTextAreaElement_get_value(IHTMLTextAreaElement *iface, BSTR *p)
|
||||
|
@ -115,6 +127,7 @@ static HRESULT WINAPI HTMLTextAreaElement_get_value(IHTMLTextAreaElement *iface,
|
|||
nsAString value_str;
|
||||
const PRUnichar *value;
|
||||
nsresult nsres;
|
||||
HRESULT hres = S_OK;
|
||||
|
||||
TRACE("(%p)->(%p)\n", This, p);
|
||||
|
||||
|
@ -123,15 +136,14 @@ static HRESULT WINAPI HTMLTextAreaElement_get_value(IHTMLTextAreaElement *iface,
|
|||
nsres = nsIDOMHTMLTextAreaElement_GetValue(This->nstextarea, &value_str);
|
||||
if(NS_SUCCEEDED(nsres)) {
|
||||
nsAString_GetData(&value_str, &value);
|
||||
*p = SysAllocString(value);
|
||||
*p = *value ? SysAllocString(value) : NULL;
|
||||
}else {
|
||||
ERR("GetValue failed: %08x\n", nsres);
|
||||
hres = E_FAIL;
|
||||
}
|
||||
|
||||
nsAString_Finish(&value_str);
|
||||
|
||||
TRACE("%s\n", debugstr_w(*p));
|
||||
return S_OK;
|
||||
return hres;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLTextAreaElement_put_name(IHTMLTextAreaElement *iface, BSTR v)
|
||||
|
@ -253,15 +265,35 @@ static HRESULT WINAPI HTMLTextAreaElement_get_onselect(IHTMLTextAreaElement *ifa
|
|||
static HRESULT WINAPI HTMLTextAreaElement_put_readOnly(IHTMLTextAreaElement *iface, VARIANT_BOOL v)
|
||||
{
|
||||
HTMLTextAreaElement *This = HTMLTXTAREA_THIS(iface);
|
||||
FIXME("(%p)->(%x)\n", This, v);
|
||||
return E_NOTIMPL;
|
||||
nsresult nsres;
|
||||
|
||||
TRACE("(%p)->(%x)\n", This, v);
|
||||
|
||||
nsres = nsIDOMHTMLTextAreaElement_SetReadOnly(This->nstextarea, v != VARIANT_FALSE);
|
||||
if(NS_FAILED(nsres)) {
|
||||
ERR("SetReadOnly failed: %08x\n", nsres);
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLTextAreaElement_get_readOnly(IHTMLTextAreaElement *iface, VARIANT_BOOL *p)
|
||||
{
|
||||
HTMLTextAreaElement *This = HTMLTXTAREA_THIS(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
PRBool b;
|
||||
nsresult nsres;
|
||||
|
||||
TRACE("(%p)->(%p)\n", This, p);
|
||||
|
||||
nsres = nsIDOMHTMLTextAreaElement_GetReadOnly(This->nstextarea, &b);
|
||||
if(NS_FAILED(nsres)) {
|
||||
ERR("GetReadOnly failed: %08x\n", nsres);
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
*p = b ? VARIANT_TRUE : VARIANT_FALSE;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLTextAreaElement_put_rows(IHTMLTextAreaElement *iface, LONG v)
|
||||
|
|
|
@ -511,20 +511,34 @@ static HRESULT WINAPI HTMLWindow2_clearTimeout(IHTMLWindow2 *iface, LONG timerID
|
|||
return clear_task_timer(&This->doc->basedoc, FALSE, timerID);
|
||||
}
|
||||
|
||||
#define MAX_MESSAGE_LEN 2000
|
||||
|
||||
static HRESULT WINAPI HTMLWindow2_alert(IHTMLWindow2 *iface, BSTR message)
|
||||
{
|
||||
HTMLWindow *This = HTMLWINDOW2_THIS(iface);
|
||||
WCHAR wszTitle[100];
|
||||
WCHAR title[100], *msg = message;
|
||||
DWORD len;
|
||||
|
||||
TRACE("(%p)->(%s)\n", This, debugstr_w(message));
|
||||
|
||||
if(!LoadStringW(get_shdoclc(), IDS_MESSAGE_BOX_TITLE, wszTitle,
|
||||
sizeof(wszTitle)/sizeof(WCHAR))) {
|
||||
if(!LoadStringW(get_shdoclc(), IDS_MESSAGE_BOX_TITLE, title,
|
||||
sizeof(title)/sizeof(WCHAR))) {
|
||||
WARN("Could not load message box title: %d\n", GetLastError());
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
MessageBoxW(This->doc_obj->hwnd, message, wszTitle, MB_ICONWARNING);
|
||||
len = SysStringLen(message);
|
||||
if(len > MAX_MESSAGE_LEN) {
|
||||
msg = heap_alloc((MAX_MESSAGE_LEN+1)*sizeof(WCHAR));
|
||||
if(!msg)
|
||||
return E_OUTOFMEMORY;
|
||||
memcpy(msg, message, MAX_MESSAGE_LEN*sizeof(WCHAR));
|
||||
msg[MAX_MESSAGE_LEN] = 0;
|
||||
}
|
||||
|
||||
MessageBoxW(This->doc_obj->hwnd, msg, title, MB_ICONWARNING);
|
||||
if(msg != message)
|
||||
heap_free(msg);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
|
|
@ -144,6 +144,7 @@ typedef struct dispex_dynamic_data_t dispex_dynamic_data_t;
|
|||
|
||||
#define MSHTML_DISPID_CUSTOM_MIN 0x60000000
|
||||
#define MSHTML_DISPID_CUSTOM_MAX 0x6fffffff
|
||||
#define MSHTML_CUSTOM_DISPID_CNT (MSHTML_DISPID_CUSTOM_MAX-MSHTML_DISPID_CUSTOM_MIN)
|
||||
|
||||
typedef struct {
|
||||
HRESULT (*value)(IUnknown*,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,IServiceProvider*);
|
||||
|
@ -727,8 +728,10 @@ HRESULT call_set_active_object(IOleInPlaceUIWindow*,IOleInPlaceActiveObject*);
|
|||
void *nsalloc(size_t) __WINE_ALLOC_SIZE(1);
|
||||
void nsfree(void*);
|
||||
|
||||
void nsACString_InitDepend(nsACString*,const char*);
|
||||
void nsACString_SetData(nsACString*,const char*);
|
||||
PRUint32 nsACString_GetData(const nsACString*,const char**);
|
||||
void nsACString_Finish(nsACString*);
|
||||
|
||||
BOOL nsAString_Init(nsAString*,const PRUnichar*);
|
||||
void nsAString_InitDepend(nsAString*,const PRUnichar*);
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
#include "wine/unicode.h"
|
||||
|
||||
#include "mshtml_private.h"
|
||||
#include "htmlevent.h"
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
|
||||
WINE_DECLARE_DEBUG_CHANNEL(gecko);
|
||||
|
@ -48,20 +49,14 @@ WINE_DECLARE_DEBUG_CHANNEL(gecko);
|
|||
|
||||
#define PR_UINT32_MAX 0xffffffff
|
||||
|
||||
struct nsCStringContainer {
|
||||
void *v;
|
||||
void *d1;
|
||||
PRUint32 d2;
|
||||
PRUint32 d3;
|
||||
};
|
||||
|
||||
#define NS_STRING_CONTAINER_INIT_DEPEND 0x0002
|
||||
#define NS_CSTRING_CONTAINER_INIT_DEPEND 0x0002
|
||||
|
||||
static nsresult (*NS_InitXPCOM2)(nsIServiceManager**,void*,void*);
|
||||
static nsresult (*NS_ShutdownXPCOM)(nsIServiceManager*);
|
||||
static nsresult (*NS_GetComponentRegistrar)(nsIComponentRegistrar**);
|
||||
static nsresult (*NS_StringContainerInit2)(nsStringContainer*,const PRUnichar*,PRUint32,PRUint32);
|
||||
static nsresult (*NS_CStringContainerInit)(nsCStringContainer*);
|
||||
static nsresult (*NS_CStringContainerInit2)(nsCStringContainer*,const char*,PRUint32,PRUint32);
|
||||
static nsresult (*NS_StringContainerFinish)(nsStringContainer*);
|
||||
static nsresult (*NS_CStringContainerFinish)(nsCStringContainer*);
|
||||
static nsresult (*NS_StringSetData)(nsAString*,const PRUnichar*,PRUint32);
|
||||
|
@ -188,7 +183,7 @@ static BOOL load_xpcom(const PRUnichar *gre_path)
|
|||
NS_DLSYM(NS_ShutdownXPCOM);
|
||||
NS_DLSYM(NS_GetComponentRegistrar);
|
||||
NS_DLSYM(NS_StringContainerInit2);
|
||||
NS_DLSYM(NS_CStringContainerInit);
|
||||
NS_DLSYM(NS_CStringContainerInit2);
|
||||
NS_DLSYM(NS_StringContainerFinish);
|
||||
NS_DLSYM(NS_CStringContainerFinish);
|
||||
NS_DLSYM(NS_StringSetData);
|
||||
|
@ -526,11 +521,18 @@ void nsfree(void *mem)
|
|||
nsIMemory_Free(nsmem, mem);
|
||||
}
|
||||
|
||||
static void nsACString_Init(nsACString *str, const char *data)
|
||||
static BOOL nsACString_Init(nsACString *str, const char *data)
|
||||
{
|
||||
NS_CStringContainerInit(str);
|
||||
if(data)
|
||||
nsACString_SetData(str, data);
|
||||
return NS_SUCCEEDED(NS_CStringContainerInit2(str, data, PR_UINT32_MAX, 0));
|
||||
}
|
||||
|
||||
/*
|
||||
* Initializes nsACString with data owned by caller.
|
||||
* Caller must ensure that data is valid during lifetime of string object.
|
||||
*/
|
||||
void nsACString_InitDepend(nsACString *str, const char *data)
|
||||
{
|
||||
NS_CStringContainerInit2(str, data, PR_UINT32_MAX, NS_CSTRING_CONTAINER_INIT_DEPEND);
|
||||
}
|
||||
|
||||
void nsACString_SetData(nsACString *str, const char *data)
|
||||
|
@ -543,7 +545,7 @@ PRUint32 nsACString_GetData(const nsACString *str, const char **data)
|
|||
return NS_CStringGetData(str, data, NULL);
|
||||
}
|
||||
|
||||
static void nsACString_Finish(nsACString *str)
|
||||
void nsACString_Finish(nsACString *str)
|
||||
{
|
||||
NS_CStringContainerFinish(str);
|
||||
}
|
||||
|
@ -1006,6 +1008,8 @@ static nsresult NSAPI nsContextMenuListener_OnShowContextMenu(nsIContextMenuList
|
|||
|
||||
TRACE("(%p)->(%08x %p %p)\n", This, aContextFlags, aEvent, aNode);
|
||||
|
||||
fire_event(This->doc->basedoc.doc_node /* FIXME */, EVENTID_CONTEXTMENU, TRUE, aNode, aEvent);
|
||||
|
||||
nsres = nsIDOMEvent_QueryInterface(aEvent, &IID_nsIDOMMouseEvent, (void**)&event);
|
||||
if(NS_FAILED(nsres)) {
|
||||
ERR("Could not get nsIDOMMouseEvent interface: %08x\n", nsres);
|
||||
|
|
|
@ -119,7 +119,6 @@ typedef nsISupports nsIDOMDOMImplementation;
|
|||
typedef nsISupports nsIDOMCDATASection;
|
||||
typedef nsISupports nsIDOMProcessingInstruction;
|
||||
typedef nsISupports nsIDOMEntityReference;
|
||||
typedef nsISupports nsIDOMHTMLOptionsCollection;
|
||||
typedef nsISupports nsIWebProgressListener;
|
||||
typedef nsISupports nsIDOMCSSValue;
|
||||
typedef nsISupports nsIPrintSession;
|
||||
|
@ -1319,6 +1318,20 @@ interface nsIDOMHTMLOptionElement : nsIDOMHTMLElement
|
|||
nsresult SetValue(const nsAString *aValue);
|
||||
}
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(bce0213c-f70f-488f-b93f-688acca55d63),
|
||||
local
|
||||
/* FROZEN */
|
||||
]
|
||||
interface nsIDOMHTMLOptionsCollection : nsISupports
|
||||
{
|
||||
nsresult GetLength(PRUint32 *aLength);
|
||||
nsresult SetLength(PRUint32 aLength);
|
||||
nsresult Item(PRUint32 index, nsIDOMNode **_retval);
|
||||
nsresult NamedItem(const nsAString *name, nsIDOMNode **_retval);
|
||||
}
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(a6cf9090-15b3-11d2-932e-00805f8add32),
|
||||
|
|
|
@ -196,16 +196,15 @@ static BOOL translate_url(HTMLDocumentObj *doc, nsWineURI *uri)
|
|||
|
||||
url = heap_strdupW(uri->wine_url);
|
||||
hres = IDocHostUIHandler_TranslateUrl(doc->hostui, 0, url, &new_url);
|
||||
heap_free(url);
|
||||
if(hres != S_OK || !new_url)
|
||||
return FALSE;
|
||||
|
||||
if(strcmpW(url, new_url)) {
|
||||
FIXME("TranslateUrl returned new URL %s -> %s\n", debugstr_w(url), debugstr_w(new_url));
|
||||
ret = TRUE;
|
||||
if(hres == S_OK && new_url) {
|
||||
if(strcmpW(url, new_url)) {
|
||||
FIXME("TranslateUrl returned new URL %s -> %s\n", debugstr_w(url), debugstr_w(new_url));
|
||||
ret = TRUE;
|
||||
}
|
||||
CoTaskMemFree(new_url);
|
||||
}
|
||||
|
||||
CoTaskMemFree(new_url);
|
||||
heap_free(url);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -229,7 +228,7 @@ nsresult on_start_uri_open(NSContainer *nscontainer, nsIURI *uri, PRBool *_retva
|
|||
}
|
||||
|
||||
wine_uri->is_doc_uri = TRUE;
|
||||
*_retval = translate_url(nscontainer->doc->basedoc.doc_obj, wine_uri);
|
||||
*_retval = translate_url(nscontainer->doc, wine_uri);
|
||||
}
|
||||
|
||||
nsIURI_Release(NSURI(wine_uri));
|
||||
|
@ -2453,6 +2452,7 @@ static nsresult NSAPI nsIOService_NewURI(nsIIOService *iface, const nsACString *
|
|||
HTMLWindow *window = NULL;
|
||||
nsIURI *uri = NULL;
|
||||
LPCWSTR base_wine_url = NULL;
|
||||
nsACString spec_str;
|
||||
nsresult nsres;
|
||||
|
||||
nsACString_GetData(aSpec, &spec);
|
||||
|
@ -2485,7 +2485,9 @@ static nsresult NSAPI nsIOService_NewURI(nsIIOService *iface, const nsACString *
|
|||
}
|
||||
}
|
||||
|
||||
nsACString_InitDepend(&spec_str, spec);
|
||||
nsres = nsIIOService_NewURI(nsio, aSpec, aOriginCharset, aBaseURI, &uri);
|
||||
nsACString_Finish(&spec_str);
|
||||
if(NS_FAILED(nsres))
|
||||
TRACE("NewURI failed: %08x\n", nsres);
|
||||
|
||||
|
|
43
reactos/dll/win32/mshtml/ros_diff.patch
Normal file
43
reactos/dll/win32/mshtml/ros_diff.patch
Normal file
|
@ -0,0 +1,43 @@
|
|||
--- C:/Users/CHRIST~1/AppData/Local/Temp/install.-rev47414.svn001.tmp.c Sa Mai 29 16:46:40 2010
|
||||
+++ C:/Users/Christoph/Desktop/Projekte/ReactOS/dll/win32/mshtml/install.c Sa Mai 29 16:43:49 2010
|
||||
@@ -60,6 +60,11 @@
|
||||
'\\','W','i','n','e',
|
||||
'\\','M','S','H','T','M','L',0};
|
||||
|
||||
+static const CHAR mshtml_keyA[] =
|
||||
+ {'S','o','f','t','w','a','r','e',
|
||||
+ '\\','W','i','n','e',
|
||||
+ '\\','M','S','H','T','M','L',0};
|
||||
+
|
||||
static HWND install_dialog = NULL;
|
||||
static LPWSTR tmp_file_name = NULL;
|
||||
static HANDLE tmp_file = INVALID_HANDLE_VALUE;
|
||||
@@ -225,23 +230,18 @@
|
||||
static BOOL install_from_registered_dir(void)
|
||||
{
|
||||
char *file_name;
|
||||
- HKEY hkey;
|
||||
DWORD res, type, size = MAX_PATH;
|
||||
BOOL ret;
|
||||
|
||||
+ file_name = heap_alloc(size+sizeof(GECKO_FILE_NAME));
|
||||
/* @@ Wine registry key: HKCU\Software\Wine\MSHTML */
|
||||
- res = RegOpenKeyW(HKEY_CURRENT_USER, mshtml_keyW, &hkey);
|
||||
- if(res != ERROR_SUCCESS)
|
||||
- return FALSE;
|
||||
-
|
||||
- file_name = heap_alloc(size+sizeof(GECKO_FILE_NAME));
|
||||
- res = RegQueryValueExA(hkey, "GeckoCabDir", NULL, &type, (PBYTE)file_name, &size);
|
||||
+ res = RegGetValueA(HKEY_CURRENT_USER, mshtml_keyA, "GeckoCabDir", RRF_RT_ANY, &type, (PBYTE)file_name, &size);
|
||||
if(res == ERROR_MORE_DATA) {
|
||||
file_name = heap_realloc(file_name, size+sizeof(GECKO_FILE_NAME));
|
||||
- res = RegQueryValueExA(hkey, "GeckoCabDir", NULL, &type, (PBYTE)file_name, &size);
|
||||
+ res = RegGetValueA(HKEY_CURRENT_USER, mshtml_keyA, "GeckoCabDir", RRF_RT_ANY, &type, (PBYTE)file_name, &size);
|
||||
}
|
||||
- RegCloseKey(hkey);
|
||||
- if(res != ERROR_SUCCESS || type != REG_SZ) {
|
||||
+
|
||||
+ if(res != ERROR_SUCCESS || (type != REG_SZ && type != REG_EXPAND_SZ)) {
|
||||
heap_free(file_name);
|
||||
return FALSE;
|
||||
}
|
|
@ -90,6 +90,8 @@ static HRESULT confirm_safety(HTMLDocumentNode *This, const WCHAR *url, struct C
|
|||
IObjectSafety *obj_safety;
|
||||
HRESULT hres;
|
||||
|
||||
TRACE("%s %p %s\n", debugstr_w(url), cs->pUnk, debugstr_guid(&cs->clsid));
|
||||
|
||||
/* FIXME: Check URLACTION_ACTIVEX_OVERRIDE_SCRIPT_SAFETY */
|
||||
|
||||
hres = IInternetSecurityManager_ProcessUrlAction(This->secmgr, url, URLACTION_SCRIPT_SAFE_ACTIVEX,
|
||||
|
@ -119,11 +121,17 @@ static HRESULT confirm_safety(HTMLDocumentNode *This, const WCHAR *url, struct C
|
|||
}
|
||||
|
||||
hres = IObjectSafety_GetInterfaceSafetyOptions(obj_safety, &IID_IDispatchEx, &supported_opts, &enabled_opts);
|
||||
if(SUCCEEDED(hres)) {
|
||||
enabled_opts = INTERFACESAFE_FOR_UNTRUSTED_CALLER;
|
||||
if(supported_opts & INTERFACE_USES_SECURITY_MANAGER)
|
||||
enabled_opts |= INTERFACE_USES_SECURITY_MANAGER;
|
||||
hres = IObjectSafety_SetInterfaceSafetyOptions(obj_safety, &IID_IDispatchEx, enabled_opts, enabled_opts);
|
||||
if(FAILED(hres))
|
||||
supported_opts = 0;
|
||||
|
||||
enabled_opts = INTERFACESAFE_FOR_UNTRUSTED_CALLER;
|
||||
if(supported_opts & INTERFACE_USES_SECURITY_MANAGER)
|
||||
enabled_opts |= INTERFACE_USES_SECURITY_MANAGER;
|
||||
|
||||
hres = IObjectSafety_SetInterfaceSafetyOptions(obj_safety, &IID_IDispatchEx, enabled_opts, enabled_opts);
|
||||
if(FAILED(hres)) {
|
||||
enabled_opts &= ~INTERFACE_USES_SECURITY_MANAGER;
|
||||
hres = IObjectSafety_SetInterfaceSafetyOptions(obj_safety, &IID_IDispatch, enabled_opts, enabled_opts);
|
||||
}
|
||||
IObjectSafety_Release(obj_safety);
|
||||
|
||||
|
@ -175,6 +183,7 @@ static HRESULT WINAPI InternetHostSecurityManager_QueryCustomPolicy(IInternetHos
|
|||
|
||||
*(DWORD*)*ppPolicy = policy;
|
||||
*pcbPolicy = sizeof(policy);
|
||||
TRACE("policy %x\n", policy);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
|
|
@ -222,7 +222,6 @@ static void call_timer_disp(IDispatch *disp)
|
|||
static LRESULT process_timer(void)
|
||||
{
|
||||
thread_data_t *thread_data = get_thread_data(TRUE);
|
||||
HTMLDocument *doc;
|
||||
IDispatch *disp;
|
||||
DWORD tc;
|
||||
task_timer_t *timer;
|
||||
|
@ -238,7 +237,6 @@ static LRESULT process_timer(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
doc = timer->doc;
|
||||
disp = timer->disp;
|
||||
IDispatch_AddRef(disp);
|
||||
|
||||
|
|
Loading…
Reference in a new issue