From 3ec3fa5eb7d4eefd3157dfce31dbe561a6cda474 Mon Sep 17 00:00:00 2001 From: Nikolay Sivov Date: Fri, 8 May 2015 11:41:43 +0300 Subject: [PATCH] explorer: Return desktop shellview interface. --- dlls/shell32/tests/shelldispatch.c | 4 ++++ programs/explorer/desktop.c | 15 +++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/dlls/shell32/tests/shelldispatch.c b/dlls/shell32/tests/shelldispatch.c index f0341323162..8e2e399f78e 100644 --- a/dlls/shell32/tests/shelldispatch.c +++ b/dlls/shell32/tests/shelldispatch.c @@ -631,6 +631,10 @@ if (hr == S_OK) hr = IShellBrowser_QueryInterface(sb, &IID_IDispatch, (void**)&unk); ok(hr == E_NOINTERFACE, "got 0x%08x\n", hr); + hr = IShellBrowser_QueryActiveShellView(sb, &sv); + ok(hr == S_OK, "got 0x%08x\n", hr); + IShellView_Release(sv); + IShellBrowser_Release(sb2); IShellBrowser_Release(sb); diff --git a/programs/explorer/desktop.c b/programs/explorer/desktop.c index 7ee6174cee7..d2a4932313e 100644 --- a/programs/explorer/desktop.c +++ b/programs/explorer/desktop.c @@ -141,6 +141,7 @@ struct shellbrowserwindow IWebBrowser2 IWebBrowser2_iface; IServiceProvider IServiceProvider_iface; IShellBrowser IShellBrowser_iface; + IShellView *view; }; static struct shellwindows shellwindows; @@ -2103,8 +2104,11 @@ static HRESULT WINAPI shellbrowser_SendControlMsg(IShellBrowser *iface, UINT id, static HRESULT WINAPI shellbrowser_QueryActiveShellView(IShellBrowser *iface, IShellView **view) { - FIXME("%p\n", view); - return E_NOTIMPL; + TRACE("%p\n", view); + + *view = desktopshellbrowserwindow.view; + IShellView_AddRef(*view); + return S_OK; } static HRESULT WINAPI shellbrowser_OnViewWindowActive(IShellBrowser *iface, IShellView *view) @@ -2143,9 +2147,16 @@ static const IShellBrowserVtbl shellbrowservtbl = { static void desktopshellbrowserwindow_init(void) { + IShellFolder *folder; + desktopshellbrowserwindow.IWebBrowser2_iface.lpVtbl = &webbrowser2vtbl; desktopshellbrowserwindow.IServiceProvider_iface.lpVtbl = &serviceprovidervtbl; desktopshellbrowserwindow.IShellBrowser_iface.lpVtbl = &shellbrowservtbl; + + if (FAILED(SHGetDesktopFolder(&folder))) + return; + + IShellFolder_CreateViewObject(folder, NULL, &IID_IShellView, (void**)&desktopshellbrowserwindow.view); } static void shellwindows_init(void)