From: Gabriel Ivăncescu gabrielopcode@gmail.com
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/mshtml/navigate.c | 3 ++- dlls/mshtml/tests/events.c | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/dlls/mshtml/navigate.c b/dlls/mshtml/navigate.c index 90ca22ea8b1..7e4303a9eb8 100644 --- a/dlls/mshtml/navigate.c +++ b/dlls/mshtml/navigate.c @@ -2243,6 +2243,7 @@ static HRESULT navigate_fragment(HTMLOuterWindow *window, IUri *uri)
HRESULT super_navigate(HTMLOuterWindow *window, IUri *uri, DWORD flags, const WCHAR *headers, BYTE *post_data, DWORD post_data_size) { + thread_data_t *thread_data; HTMLDocumentObj *doc_obj; nsChannelBSC *bsc; IUri *uri_nofrag; @@ -2257,7 +2258,7 @@ HRESULT super_navigate(HTMLOuterWindow *window, IUri *uri, DWORD flags, const WC doc_obj = window->browser->doc; IUnknown_AddRef(doc_obj->outer_unk);
- if(doc_obj->client && !(flags & BINDING_REFRESH)) { + if(doc_obj->client && !(flags & BINDING_REFRESH) && (thread_data = get_thread_data(FALSE)) && !thread_data->tasks_locked) { IOleCommandTarget *cmdtrg;
hres = IOleClientSite_QueryInterface(doc_obj->client, &IID_IOleCommandTarget, (void**)&cmdtrg); diff --git a/dlls/mshtml/tests/events.c b/dlls/mshtml/tests/events.c index a7d66274e5c..823d22e5703 100644 --- a/dlls/mshtml/tests/events.c +++ b/dlls/mshtml/tests/events.c @@ -35,6 +35,7 @@ #include "hlink.h" #include "wininet.h" #include "shdeprecated.h" +#include "shlguid.h" #include "dispex.h"
extern const IID IID_IActiveScriptSite; @@ -5303,6 +5304,19 @@ static HRESULT WINAPI OleCommandTarget_QueryStatus(IOleCommandTarget *iface, con static HRESULT WINAPI OleCommandTarget_Exec(IOleCommandTarget *iface, const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut) { + if(!pguidCmdGroup) + return E_FAIL; + + if(IsEqualGUID(&CGID_ShellDocView, pguidCmdGroup)) { + ok(nCmdexecopt == 0, "nCmdexecopts=%08lx\n", nCmdexecopt); + + switch(nCmdID) { + case 67: + ok(!nav_notif_test_depth, "nav_notif_test_depth = %u\n", nav_notif_test_depth); + break; + } + } + return E_FAIL; }