From babd22b4431b76a2c9fde3771fc691a08c3e9e82 Mon Sep 17 00:00:00 2001 From: Nikolay Sivov Date: Wed, 27 Sep 2017 11:13:42 +0300 Subject: [PATCH] shell32: System shellfolders don't implement GetDefaultColumn(). Signed-off-by: Nikolay Sivov Signed-off-by: Alexandre Julliard --- 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 527ddfde84c..f12faf7e879 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 80e5aad4300..7d34af243bb 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 8d85dfdfd3b..bc5935ff655 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 31c0043cac6..0c1d95e1589 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); + 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 diff --git a/dlls/shell32/shfldr_mycomp.c b/dlls/shell32/shfldr_mycomp.c index f5df7e1656f..c514cd827ab 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 f7834a2afe4..e41359b322d 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); + 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_NetworkPlaces_fnGetDefaultColumnState ( diff --git a/dlls/shell32/shfldr_printers.c b/dlls/shell32/shfldr_printers.c index 16d1adbaeec..08841fb838a 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 e74e4dbf55a..d9ac506473d 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 739e6854a98..8ce7d7424be 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(); }