From: Gabriel Ivăncescu gabrielopcode@gmail.com
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/mshtml/navigate.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/dlls/mshtml/navigate.c b/dlls/mshtml/navigate.c index 24b275a76e2..510d0a29565 100644 --- a/dlls/mshtml/navigate.c +++ b/dlls/mshtml/navigate.c @@ -2450,6 +2450,7 @@ HRESULT hlink_frame_navigate(HTMLDocumentObj *doc, LPCWSTR url, nsChannel *nscha static HRESULT navigate_uri(HTMLOuterWindow *window, IUri *uri, const WCHAR *display_uri, const request_data_t *request_data, DWORD flags) { + BOOL frag_nav = FALSE; nsWineURI *nsuri; HRESULT hres;
@@ -2458,12 +2459,20 @@ static HRESULT navigate_uri(HTMLOuterWindow *window, IUri *uri, const WCHAR *dis if(!window->browser) return E_UNEXPECTED;
- if(window->browser->doc->webbrowser) { + if(!(flags & BINDING_NOFRAG) && window->uri_nofrag) { + IUri *uri_nofrag = get_uri_nofrag(uri); + if(uri_nofrag) { + IUri_IsEqual(uri_nofrag, window->uri_nofrag, &frag_nav); + IUri_Release(uri_nofrag); + } + } + + if(frag_nav || window->browser->doc->webbrowser) { DWORD post_data_len = request_data ? request_data->post_data_len : 0; void *post_data = post_data_len ? request_data->post_data : NULL; const WCHAR *headers = request_data ? request_data->headers : NULL;
- if(!(flags & BINDING_REFRESH)) { + if(!(flags & BINDING_REFRESH) && window->browser->doc->webbrowser) { BSTR frame_name = NULL; BOOL cancel = FALSE;
@@ -2482,7 +2491,7 @@ static HRESULT navigate_uri(HTMLOuterWindow *window, IUri *uri, const WCHAR *dis } }
- if(is_main_content_window(window)) + if(frag_nav || is_main_content_window(window)) return super_navigate(window, uri, flags, headers, post_data, post_data_len); }