Nikolay Sivov : explorer: Return desktop shellview interface.

Alexandre Julliard julliard at wine.codeweavers.com
Fri May 8 05:21:28 CDT 2015


Module: wine
Branch: master
Commit: 3ec3fa5eb7d4eefd3157dfce31dbe561a6cda474
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=3ec3fa5eb7d4eefd3157dfce31dbe561a6cda474

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Fri May  8 11:41:43 2015 +0300

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 f034132..8e2e399 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 7ee6174..d2a4932 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)




More information about the wine-cvs mailing list