From: Gabriel Ivăncescu <gabrielopcode(a)gmail.com> Signed-off-by: Gabriel Ivăncescu <gabrielopcode(a)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); } -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/1206