Jacek Caban wrote:
>  I've attached a hack from Picasa tree that
> causes links opening in new window to be opened in winebrowser.

I forgot to attach the patch. Here it is.

Jacek
diff --git a/dlls/shdocvw/navigate.c b/dlls/shdocvw/navigate.c
index 161c138..bdd0fdb 100644
--- a/dlls/shdocvw/navigate.c
+++ b/dlls/shdocvw/navigate.c
@@ -612,6 +612,32 @@ static HRESULT navigate_hlink(DocHost *This, IMoniker *mon, IBindCtx *bindctx,
     return navigate(This, mon, bindctx);
 }
 
+static HRESULT open_in_new_window(IMoniker *mon)
+{
+    SHELLEXECUTEINFOW exec_info;
+    LPWSTR url;
+    HRESULT hres;
+
+    static const WCHAR wszHtmlFile[] = {'.','h','t','m','l',0};
+
+    hres = IMoniker_GetDisplayName(mon, NULL, NULL, &url);
+    if(FAILED(hres))
+        return hres;
+
+    memset(&exec_info, 0, sizeof(exec_info));
+    exec_info.cbSize = sizeof(exec_info);
+    exec_info.fMask = SEE_MASK_CLASSNAME;
+    exec_info.lpFile = url;
+    exec_info.nShow = SW_SHOW;
+    exec_info.lpClass = wszHtmlFile;
+
+    ShellExecuteExW(&exec_info);
+
+    CoTaskMemFree(url);
+
+    return S_OK;
+}
+
 #define HLINKFRAME_THIS(iface) DEFINE_THIS(WebBrowser, HlinkFrame, iface)
 
 static HRESULT WINAPI HlinkFrame_QueryInterface(IHlinkFrame *iface, REFIID riid, void **ppv)
@@ -673,7 +699,7 @@ static HRESULT WINAPI HlinkFrame_Navigate(IHlinkFrame *iface, DWORD grfHLNF, LPB
 
     if(grfHLNF & HLNF_OPENINNEWWINDOW) {
         FIXME("Not supported HLNF_OPENINNEWWINDOW\n");
-        return E_NOTIMPL;
+        return open_in_new_window(mon);
     }
 
     return navigate_hlink(&This->doc_host, mon, pbc, pibsc);


Reply via email to