[PATCH 1/6] shell32: System shellfolders don't implement GetDefaultColumn()

Nikolay Sivov nsivov at codeweavers.com
Wed Sep 27 03:13:42 CDT 2017


Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
 dlls/shell32/cpanelfolder.c     | 12 +++++-----
 dlls/shell32/recyclebin.c       | 10 ++++----
 dlls/shell32/shfldr_desktop.c   | 13 ++++-------
 dlls/shell32/shfldr_fs.c        | 12 +++-------
 dlls/shell32/shfldr_mycomp.c    | 14 +++++------
 dlls/shell32/shfldr_netplaces.c | 13 ++++-------
 dlls/shell32/shfldr_printers.c  |  8 ++++---
 dlls/shell32/shfldr_unixfs.c    | 12 +++-------
 dlls/shell32/tests/shlfolder.c  | 52 +++++++++++++++++++++++++++++++++++++++++
 9 files changed, 88 insertions(+), 58 deletions(-)

diff --git a/dlls/shell32/cpanelfolder.c b/dlls/shell32/cpanelfolder.c
index 527ddfde84..f12faf7e87 100644
--- a/dlls/shell32/cpanelfolder.c
+++ b/dlls/shell32/cpanelfolder.c
@@ -724,17 +724,17 @@ static HRESULT WINAPI ISF_ControlPanel_fnEnumSearches(IShellFolder2 *iface,
     FIXME("(%p)\n", This);
     return E_NOTIMPL;
 }
-static HRESULT WINAPI ISF_ControlPanel_fnGetDefaultColumn(IShellFolder2 *iface, DWORD dwRes,
-        ULONG *pSort, ULONG *pDisplay)
+
+static HRESULT WINAPI ISF_ControlPanel_fnGetDefaultColumn(IShellFolder2 *iface, DWORD reserved,
+        ULONG *sort, ULONG *display)
 {
     ICPanelImpl *This = impl_from_IShellFolder2(iface);
 
-    TRACE("(%p)\n", This);
+    TRACE("(%p)->(%#x %p %p)\n", This, reserved, sort, display);
 
-    if (pSort) *pSort = 0;
-    if (pDisplay) *pDisplay = 0;
-    return S_OK;
+    return E_NOTIMPL;
 }
+
 static HRESULT WINAPI ISF_ControlPanel_fnGetDefaultColumnState(IShellFolder2 *iface, UINT iColumn,
         DWORD *pcsFlags)
 {
diff --git a/dlls/shell32/recyclebin.c b/dlls/shell32/recyclebin.c
index 80e5aad430..7d34af243b 100644
--- a/dlls/shell32/recyclebin.c
+++ b/dlls/shell32/recyclebin.c
@@ -580,13 +580,13 @@ static HRESULT WINAPI RecycleBin_EnumSearches(IShellFolder2 *iface, IEnumExtraSe
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI RecycleBin_GetDefaultColumn(IShellFolder2 *iface, DWORD dwReserved, ULONG *pSort, ULONG *pDisplay)
+static HRESULT WINAPI RecycleBin_GetDefaultColumn(IShellFolder2 *iface, DWORD reserved, ULONG *sort, ULONG *display)
 {
     RecycleBin *This = impl_from_IShellFolder2(iface);
-    TRACE("(%p, %x, %p, %p)\n", This, dwReserved, pSort, pDisplay);
-    *pSort = 0;
-    *pDisplay = 0;
-    return S_OK;
+
+    TRACE("(%p)->(%#x, %p, %p)\n", This, reserved, sort, display);
+
+    return E_NOTIMPL;
 }
 
 static HRESULT WINAPI RecycleBin_GetDefaultColumnState(IShellFolder2 *iface, UINT iColumn, SHCOLSTATEF *pcsFlags)
diff --git a/dlls/shell32/shfldr_desktop.c b/dlls/shell32/shfldr_desktop.c
index 8d85dfdfd3..bc5935ff65 100644
--- a/dlls/shell32/shfldr_desktop.c
+++ b/dlls/shell32/shfldr_desktop.c
@@ -769,20 +769,15 @@ static HRESULT WINAPI ISF_Desktop_fnEnumSearches (IShellFolder2 *iface,
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI ISF_Desktop_fnGetDefaultColumn (IShellFolder2 * iface,
-                DWORD reserved, ULONG * pSort, ULONG * pDisplay)
+static HRESULT WINAPI ISF_Desktop_fnGetDefaultColumn(IShellFolder2 *iface, DWORD reserved, ULONG *sort, ULONG *display)
 {
     IDesktopFolderImpl *This = impl_from_IShellFolder2(iface);
 
-    TRACE ("(%p)->(%d %p %p)\n", This, reserved, pSort, pDisplay);
+    TRACE ("(%p)->(%#x, %p, %p)\n", This, reserved, sort, display);
 
-    if (pSort)
-        *pSort = 0;
-    if (pDisplay)
-        *pDisplay = 0;
-
-    return S_OK;
+    return E_NOTIMPL;
 }
+
 static HRESULT WINAPI ISF_Desktop_fnGetDefaultColumnState (
                 IShellFolder2 * iface, UINT iColumn, DWORD * pcsFlags)
 {
diff --git a/dlls/shell32/shfldr_fs.c b/dlls/shell32/shfldr_fs.c
index 31c0043cac..0c1d95e158 100644
--- a/dlls/shell32/shfldr_fs.c
+++ b/dlls/shell32/shfldr_fs.c
@@ -926,19 +926,13 @@ static HRESULT WINAPI IShellFolder_fnEnumSearches (IShellFolder2 * iface,
 }
 
 static HRESULT WINAPI
-IShellFolder_fnGetDefaultColumn (IShellFolder2 * iface, DWORD dwRes,
-                                 ULONG * pSort, ULONG * pDisplay)
+IShellFolder_fnGetDefaultColumn(IShellFolder2 *iface, DWORD reserved, ULONG *sort, ULONG *display)
 {
     IGenericSFImpl *This = impl_from_IShellFolder2(iface);
 
-    TRACE ("(%p)\n", This);
-
-    if (pSort)
-        *pSort = 0;
-    if (pDisplay)
-        *pDisplay = 0;
+    TRACE("(%p)->(%#x, %p, %p)\n", This, reserved, sort, display);
 
-    return S_OK;
+    return E_NOTIMPL;
 }
 
 static HRESULT WINAPI
diff --git a/dlls/shell32/shfldr_mycomp.c b/dlls/shell32/shfldr_mycomp.c
index f5df7e1656..c514cd827a 100644
--- a/dlls/shell32/shfldr_mycomp.c
+++ b/dlls/shell32/shfldr_mycomp.c
@@ -782,19 +782,17 @@ static HRESULT WINAPI ISF_MyComputer_fnEnumSearches (
     FIXME ("(%p)\n", This);
     return E_NOTIMPL;
 }
-static HRESULT WINAPI ISF_MyComputer_fnGetDefaultColumn (
-               IShellFolder2 *iface, DWORD dwRes, ULONG *pSort, ULONG *pDisplay)
+
+static HRESULT WINAPI ISF_MyComputer_fnGetDefaultColumn(IShellFolder2 *iface, DWORD reserved,
+        ULONG *sort, ULONG *display)
 {
     IMyComputerFolderImpl *This = impl_from_IShellFolder2(iface);
 
-    TRACE ("(%p)\n", This);
+    TRACE("(%p)->(%#x, %p, %p)\n", This, reserved, sort, display);
 
-    if (pSort)
-         *pSort = 0;
-    if (pDisplay)
-        *pDisplay = 0;
-    return S_OK;
+    return E_NOTIMPL;
 }
+
 static HRESULT WINAPI ISF_MyComputer_fnGetDefaultColumnState (
                IShellFolder2 * iface, UINT iColumn, DWORD * pcsFlags)
 {
diff --git a/dlls/shell32/shfldr_netplaces.c b/dlls/shell32/shfldr_netplaces.c
index f7834a2afe..e41359b322 100644
--- a/dlls/shell32/shfldr_netplaces.c
+++ b/dlls/shell32/shfldr_netplaces.c
@@ -519,19 +519,14 @@ static HRESULT WINAPI ISF_NetworkPlaces_fnEnumSearches (IShellFolder2 * iface,
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI ISF_NetworkPlaces_fnGetDefaultColumn (IShellFolder2 * iface,
-               DWORD dwRes, ULONG * pSort, ULONG * pDisplay)
+static HRESULT WINAPI ISF_NetworkPlaces_fnGetDefaultColumn(IShellFolder2 *iface, DWORD reserved,
+        ULONG *sort, ULONG *display)
 {
     IGenericSFImpl *This = impl_from_IShellFolder2(iface);
 
-    TRACE ("(%p)\n", This);
-
-    if (pSort)
-        *pSort = 0;
-    if (pDisplay)
-        *pDisplay = 0;
+    TRACE("(%p)->(%#x, %p, %p)\n", This, reserved, sort, display);
 
-    return S_OK;
+    return E_NOTIMPL;
 }
 
 static HRESULT WINAPI ISF_NetworkPlaces_fnGetDefaultColumnState (
diff --git a/dlls/shell32/shfldr_printers.c b/dlls/shell32/shfldr_printers.c
index 16d1adbaee..08841fb838 100644
--- a/dlls/shell32/shfldr_printers.c
+++ b/dlls/shell32/shfldr_printers.c
@@ -267,11 +267,13 @@ static HRESULT WINAPI IShellFolder_Printers_fnEnumSearches (
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI IShellFolder_Printers_fnGetDefaultColumn (
-               IShellFolder2 *iface, DWORD dwRes, ULONG *pSort, ULONG *pDisplay)
+static HRESULT WINAPI IShellFolder_Printers_fnGetDefaultColumn(IShellFolder2 *iface, DWORD reserved,
+        ULONG *sort, ULONG *display)
 {
     IPrintersFolderImpl *This = impl_from_IShellFolder2(iface);
-    FIXME("(%p) stub\n", This);
+
+    TRACE("(%p)->(%#x, %p, %p)\n", This, reserved, sort, display);
+
     return E_NOTIMPL;
 }
 
diff --git a/dlls/shell32/shfldr_unixfs.c b/dlls/shell32/shfldr_unixfs.c
index e74e4dbf55..d9ac506473 100644
--- a/dlls/shell32/shfldr_unixfs.c
+++ b/dlls/shell32/shfldr_unixfs.c
@@ -1437,19 +1437,13 @@ static HRESULT WINAPI ShellFolder2_EnumSearches(IShellFolder2* iface, IEnumExtra
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI ShellFolder2_GetDefaultColumn(IShellFolder2* iface,
-    DWORD dwReserved, ULONG *pSort, ULONG *pDisplay)
+static HRESULT WINAPI ShellFolder2_GetDefaultColumn(IShellFolder2* iface, DWORD reserved, ULONG *sort, ULONG *display)
 {
     UnixFolder *This = impl_from_IShellFolder2(iface);
 
-    TRACE("(%p)->(0x%x %p %p)\n", This, dwReserved, pSort, pDisplay);
+    TRACE("(%p)->(%#x, %p, %p)\n", This, reserved, sort, display);
 
-    if (pSort)
-        *pSort = 0;
-    if (pDisplay)
-        *pDisplay = 0;
-
-    return S_OK;
+    return E_NOTIMPL;
 }
 
 static HRESULT WINAPI ShellFolder2_GetDefaultColumnState(IShellFolder2* iface,
diff --git a/dlls/shell32/tests/shlfolder.c b/dlls/shell32/tests/shlfolder.c
index 739e6854a9..8ce7d7424b 100644
--- a/dlls/shell32/tests/shlfolder.c
+++ b/dlls/shell32/tests/shlfolder.c
@@ -5395,6 +5395,57 @@ static void test_DataObject(void)
     IDataObject_Release(data_obj);
 }
 
+static void test_GetDefaultColumn(void)
+{
+    static const CLSID *folders[] =
+    {
+        &CLSID_MyComputer,
+        &CLSID_MyDocuments,
+        &CLSID_ControlPanel,
+        &CLSID_NetworkPlaces,
+        &CLSID_Printers,
+        &CLSID_RecycleBin,
+        &CLSID_ShellDesktop,
+    };
+    HRESULT hr;
+    int i;
+
+    CoInitialize(NULL);
+
+    for (i = 0; i < sizeof(folders)/sizeof(folders[0]); i++)
+    {
+        IShellFolder2 *folder;
+        ULONG sort, display;
+
+        hr = CoCreateInstance(folders[i], NULL, CLSCTX_INPROC_SERVER, &IID_IShellFolder2, (void **)&folder);
+        if (hr != S_OK)
+        {
+            win_skip("Failed to create folder %s, hr %#x.\n", wine_dbgstr_guid(folders[i]), hr);
+            continue;
+        }
+
+        hr = IShellFolder2_GetDefaultColumn(folder, 0, NULL, NULL);
+        ok(hr == E_NOTIMPL, "Unexpected hr %#x.\n", hr);
+
+        sort = display = 123;
+        hr = IShellFolder2_GetDefaultColumn(folder, 0, &sort, &display);
+        ok(hr == E_NOTIMPL, "Unexpected hr %#x.\n", hr);
+        ok(sort == 123 && display == 123, "Unexpected default column.\n");
+
+        display = 123;
+        hr = IShellFolder2_GetDefaultColumn(folder, 0, NULL, &display);
+        ok(hr == E_NOTIMPL, "Unexpected hr %#x.\n", hr);
+        ok(display == 123, "Unexpected default column.\n");
+
+        sort = 123;
+        hr = IShellFolder2_GetDefaultColumn(folder, 0, &sort, NULL);
+        ok(hr == E_NOTIMPL, "Unexpected hr %#x.\n", hr);
+        ok(sort == 123, "Unexpected default column.\n");
+    }
+
+    CoUninitialize();
+}
+
 START_TEST(shlfolder)
 {
     init_function_pointers();
@@ -5434,6 +5485,7 @@ START_TEST(shlfolder)
     test_ShellItemArrayGetAttributes();
     test_SHCreateDefaultContextMenu();
     test_DataObject();
+    test_GetDefaultColumn();
 
     OleUninitialize();
 }
-- 
2.14.1




More information about the wine-patches mailing list