Jacek Caban : mshtml: Move Exec(OLECMDID_SETTITLE) call to separated function and use it in on_timer.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Jun 11 08:46:38 CDT 2007


Module: wine
Branch: master
Commit: 20d77432a25c61f970111ea8606194943ddcaa13
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=20d77432a25c61f970111ea8606194943ddcaa13

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Sun Jun 10 11:39:39 2007 +0200

mshtml: Move Exec(OLECMDID_SETTITLE) call to separated function and use it in on_timer.

---

 dlls/mshtml/mshtml_private.h |    1 +
 dlls/mshtml/persist.c        |    1 +
 dlls/mshtml/task.c           |   15 +++------------
 dlls/mshtml/view.c           |   29 +++++++++++++++++++++++++++++
 4 files changed, 34 insertions(+), 12 deletions(-)

diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h
index 7dd54bd..9668fcd 100644
--- a/dlls/mshtml/mshtml_private.h
+++ b/dlls/mshtml/mshtml_private.h
@@ -388,6 +388,7 @@ extern const cmdtable_t editmode_cmds[];
 #define UPDATE_TITLE    0x0002
 
 void update_doc(HTMLDocument *This, DWORD flags);
+void update_title(HTMLDocument*);
 
 /* editor */
 void set_ns_editmode(NSContainer*);
diff --git a/dlls/mshtml/persist.c b/dlls/mshtml/persist.c
index 8045241..cb1025b 100644
--- a/dlls/mshtml/persist.c
+++ b/dlls/mshtml/persist.c
@@ -153,6 +153,7 @@ static HRESULT set_moniker(HTMLDocument *This, IMoniker *mon, IBindCtx *pibc, BO
 
     This->readystate = READYSTATE_LOADING;
     call_property_onchanged(This->cp_propnotif, DISPID_READYSTATE);
+    update_doc(This, UPDATE_TITLE);
 
     HTMLDocument_LockContainer(This, TRUE);
     
diff --git a/dlls/mshtml/task.c b/dlls/mshtml/task.c
index 8949cdf..057f227 100644
--- a/dlls/mshtml/task.c
+++ b/dlls/mshtml/task.c
@@ -155,6 +155,8 @@ static void set_parsecomplete(HTMLDocument *doc)
 
         IOleCommandTarget_Exec(olecmd, &CGID_MSHTML, IDM_PARSECOMPLETE, 0, NULL, NULL);
         IOleCommandTarget_Exec(olecmd, NULL, OLECMDID_HTTPEQUIV_DONE, 0, NULL, NULL);
+
+        IOleCommandTarget_Release(olecmd);
     }
 
     doc->readystate = READYSTATE_COMPLETE;
@@ -165,18 +167,7 @@ static void set_parsecomplete(HTMLDocument *doc)
         IOleInPlaceFrame_SetStatusText(doc->frame, wszDone);
     }
 
-    if(olecmd) {
-        VARIANT title;
-        WCHAR empty[] = {0};
-        
-        V_VT(&title) = VT_BSTR;
-        V_BSTR(&title) = SysAllocString(empty);
-        IOleCommandTarget_Exec(olecmd, NULL, OLECMDID_SETTITLE, OLECMDEXECOPT_DONTPROMPTUSER,
-                               &title, NULL);
-        SysFreeString(V_BSTR(&title));
-
-        IOleCommandTarget_Release(olecmd);
-    }
+    update_title(doc);
 }
 
 static void set_progress(HTMLDocument *doc)
diff --git a/dlls/mshtml/view.c b/dlls/mshtml/view.c
index 238ed09..4c7cea9 100644
--- a/dlls/mshtml/view.c
+++ b/dlls/mshtml/view.c
@@ -104,6 +104,34 @@ void update_doc(HTMLDocument *This, DWORD flags)
     This->update |= flags;
 }
 
+void update_title(HTMLDocument *This)
+{
+    IOleCommandTarget *olecmd;
+    HRESULT hres;
+
+    if(!(This->update & UPDATE_TITLE))
+        return;
+
+    This->update &= ~UPDATE_TITLE;
+
+    if(!This->client)
+        return;
+
+    hres = IOleClientSite_QueryInterface(This->client, &IID_IOleCommandTarget, (void**)&olecmd);
+    if(SUCCEEDED(hres)) {
+        VARIANT title;
+        WCHAR empty[] = {0};
+
+        V_VT(&title) = VT_BSTR;
+        V_BSTR(&title) = SysAllocString(empty);
+        IOleCommandTarget_Exec(olecmd, NULL, OLECMDID_SETTITLE, OLECMDEXECOPT_DONTPROMPTUSER,
+                               &title, NULL);
+        SysFreeString(V_BSTR(&title));
+
+        IOleCommandTarget_Release(olecmd);
+    }
+}
+
 static LRESULT on_timer(HTMLDocument *This)
 {
     TRACE("(%p) %x\n", This, This->update);
@@ -131,6 +159,7 @@ static LRESULT on_timer(HTMLDocument *This)
         }
     }
 
+    update_title(This);
     This->update = 0;
     return 0;
 }




More information about the wine-cvs mailing list