Jacek Caban : mshtml: Moved readystate to HTMLWindow.
Alexandre Julliard
julliard at winehq.org
Tue Nov 3 15:37:18 CST 2009
Module: wine
Branch: master
Commit: deef1401860ecdebb6bf24950ecc0bcf766bb95e
URL: http://source.winehq.org/git/wine.git/?a=commit;h=deef1401860ecdebb6bf24950ecc0bcf766bb95e
Author: Jacek Caban <jacek at codeweavers.com>
Date: Sun Nov 1 19:25:13 2009 +0100
mshtml: Moved readystate to HTMLWindow.
---
dlls/mshtml/editor.c | 6 +++---
dlls/mshtml/htmldoc.c | 5 ++---
dlls/mshtml/htmldoc3.c | 2 +-
dlls/mshtml/htmlwindow.c | 1 +
dlls/mshtml/mshtml_private.h | 2 +-
dlls/mshtml/mutation.c | 2 +-
dlls/mshtml/nsevents.c | 5 ++++-
dlls/mshtml/olecmd.c | 2 +-
dlls/mshtml/persist.c | 2 +-
9 files changed, 15 insertions(+), 12 deletions(-)
diff --git a/dlls/mshtml/editor.c b/dlls/mshtml/editor.c
index 651e856..568e127 100644
--- a/dlls/mshtml/editor.c
+++ b/dlls/mshtml/editor.c
@@ -150,7 +150,7 @@ static DWORD query_ns_edit_status(HTMLDocument *This, const char *nscmd)
nsICommandParams *nsparam;
PRBool b = FALSE;
- if(This->doc_obj->usermode != EDITMODE || This->doc_obj->readystate < READYSTATE_INTERACTIVE)
+ if(This->doc_obj->usermode != EDITMODE || This->window->readystate < READYSTATE_INTERACTIVE)
return OLECMDF_SUPPORTED;
if(This->doc_obj->nscontainer && nscmd) {
@@ -185,7 +185,7 @@ static DWORD query_align_status(HTMLDocument *This, const char *align_str)
nsICommandParams *nsparam;
char *align = NULL;
- if(This->doc_obj->usermode != EDITMODE || This->doc_obj->readystate < READYSTATE_INTERACTIVE)
+ if(This->doc_obj->usermode != EDITMODE || This->window->readystate < READYSTATE_INTERACTIVE)
return OLECMDF_SUPPORTED;
if(This->doc_obj->nscontainer) {
@@ -713,7 +713,7 @@ static HRESULT query_justify(HTMLDocument *This, OLECMD *cmd)
case IDM_JUSTIFYLEFT:
TRACE("(%p) IDM_JUSTIFYLEFT\n", This);
/* FIXME: We should set OLECMDF_LATCHED only if it's set explicitly. */
- if(This->doc_obj->usermode != EDITMODE || This->doc_obj->readystate < READYSTATE_INTERACTIVE)
+ if(This->doc_obj->usermode != EDITMODE || This->window->readystate < READYSTATE_INTERACTIVE)
cmd->cmdf = OLECMDF_SUPPORTED;
else
cmd->cmdf = OLECMDF_SUPPORTED | OLECMDF_ENABLED;
diff --git a/dlls/mshtml/htmldoc.c b/dlls/mshtml/htmldoc.c
index bc20a2d..836f1ae 100644
--- a/dlls/mshtml/htmldoc.c
+++ b/dlls/mshtml/htmldoc.c
@@ -455,7 +455,7 @@ static HRESULT WINAPI HTMLDocument_get_readyState(IHTMLDocument2 *iface, BSTR *p
if(!p)
return E_POINTER;
- *p = SysAllocString(readystate_str[This->doc_obj->readystate]);
+ *p = SysAllocString(readystate_str[This->window->readystate]);
return S_OK;
}
@@ -1503,7 +1503,7 @@ static HRESULT WINAPI DocDispatchEx_Invoke(IDispatchEx *iface, DISPID dispIdMemb
return E_INVALIDARG;
V_VT(pVarResult) = VT_I4;
- V_I4(pVarResult) = This->doc_obj->readystate;
+ V_I4(pVarResult) = This->window->readystate;
return S_OK;
}
@@ -1978,7 +1978,6 @@ HRESULT HTMLDocument_Create(IUnknown *pUnkOuter, REFIID riid, void** ppvObject)
doc->basedoc.doc_obj = doc;
doc->usermode = UNKNOWN_USERMODE;
- doc->readystate = READYSTATE_UNINITIALIZED;
doc->nscontainer = NSContainer_Create(doc, NULL);
if(!doc->nscontainer) {
diff --git a/dlls/mshtml/htmldoc3.c b/dlls/mshtml/htmldoc3.c
index e4c2d4f..a00fa95 100644
--- a/dlls/mshtml/htmldoc3.c
+++ b/dlls/mshtml/htmldoc3.c
@@ -141,7 +141,7 @@ static HRESULT WINAPI HTMLDocument3_get_documentElement(IHTMLDocument3 *iface, I
TRACE("(%p)->(%p)\n", This, p);
- if(This->doc_obj->readystate == READYSTATE_UNINITIALIZED) {
+ if(This->window->readystate == READYSTATE_UNINITIALIZED) {
*p = NULL;
return S_OK;
}
diff --git a/dlls/mshtml/htmlwindow.c b/dlls/mshtml/htmlwindow.c
index 6158b32..9f3b3e7 100644
--- a/dlls/mshtml/htmlwindow.c
+++ b/dlls/mshtml/htmlwindow.c
@@ -1648,6 +1648,7 @@ HRESULT HTMLWindow_Create(HTMLDocumentObj *doc_obj, nsIDOMWindow *nswindow, HTML
}
window->scriptmode = parent ? parent->scriptmode : SCRIPTMODE_GECKO;
+ window->readystate = READYSTATE_UNINITIALIZED;
list_init(&window->script_hosts);
window->task_magic = get_task_target_magic();
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h
index 175dce7..94d835d 100644
--- a/dlls/mshtml/mshtml_private.h
+++ b/dlls/mshtml/mshtml_private.h
@@ -227,6 +227,7 @@ struct HTMLWindow {
nsIDOMWindow *nswindow;
HTMLWindow *parent;
HTMLFrameBase *frame_element;
+ READYSTATE readystate;
nsChannelBSC *bscallback;
IMoniker *mon;
@@ -366,7 +367,6 @@ struct HTMLDocumentObj {
BOOL focus;
USERMODE usermode;
- READYSTATE readystate;
LPWSTR mime;
DWORD update;
diff --git a/dlls/mshtml/mutation.c b/dlls/mshtml/mutation.c
index ba636dd..b3cc62a 100644
--- a/dlls/mshtml/mutation.c
+++ b/dlls/mshtml/mutation.c
@@ -366,7 +366,7 @@ static void handle_end_load(HTMLDocumentNode *This)
TRACE("\n");
if(This != This->basedoc.doc_obj->basedoc.doc_node) {
- set_ready_state(This, READYSTATE_INTERACTIVE);
+ set_ready_state(This->basedoc.window, READYSTATE_INTERACTIVE);
return;
}
diff --git a/dlls/mshtml/nsevents.c b/dlls/mshtml/nsevents.c
index aa87442..096dcb3 100644
--- a/dlls/mshtml/nsevents.c
+++ b/dlls/mshtml/nsevents.c
@@ -123,7 +123,7 @@ static nsresult NSAPI handle_blur(nsIDOMEventListener *iface, nsIDOMEvent *event
TRACE("(%p)\n", doc);
- if(!doc)
+ if(!doc || !doc->basedoc.doc_obj)
return NS_ERROR_FAILURE;
doc_obj = doc->basedoc.doc_obj;
@@ -195,6 +195,9 @@ static nsresult NSAPI handle_load(nsIDOMEventListener *iface, nsIDOMEvent *event
if(doc_obj->usermode == EDITMODE)
handle_edit_load(&doc_obj->basedoc);
+ if(doc->basedoc.window->readystate != READYSTATE_COMPLETE)
+ set_ready_state(doc->basedoc.window, READYSTATE_COMPLETE);
+
if(!doc->nsdoc) {
ERR("NULL nsdoc\n");
return NS_ERROR_FAILURE;
diff --git a/dlls/mshtml/olecmd.c b/dlls/mshtml/olecmd.c
index bd3b162..b54f064 100644
--- a/dlls/mshtml/olecmd.c
+++ b/dlls/mshtml/olecmd.c
@@ -555,7 +555,7 @@ static HRESULT exec_editmode(HTMLDocument *This, DWORD cmdexecopt, VARIANT *in,
if(This->doc_obj->frame)
IOleInPlaceFrame_SetStatusText(This->doc_obj->frame, NULL);
- This->doc_obj->readystate = READYSTATE_UNINITIALIZED;
+ This->window->readystate = READYSTATE_UNINITIALIZED;
if(This->doc_obj->client) {
IOleCommandTarget *cmdtrg;
diff --git a/dlls/mshtml/persist.c b/dlls/mshtml/persist.c
index ec2c830..805d7f0 100644
--- a/dlls/mshtml/persist.c
+++ b/dlls/mshtml/persist.c
@@ -275,7 +275,7 @@ static HRESULT set_moniker(HTMLDocument *This, IMoniker *mon, IBindCtx *pibc, BO
void set_ready_state(HTMLWindow *window, READYSTATE readystate)
{
- window->doc_obj->readystate = readystate;
+ window->readystate = readystate;
if(window->doc_obj->basedoc.window == window)
call_property_onchanged(&window->doc_obj->basedoc.cp_propnotif, DISPID_READYSTATE);
}
More information about the wine-cvs
mailing list