From: Jactry Zeng jzeng@codeweavers.com
--- dlls/shell32/shlview.c | 19 +++++++++++++++---- dlls/shell32/tests/shlview.c | 12 ++++++------ 2 files changed, 21 insertions(+), 10 deletions(-)
diff --git a/dlls/shell32/shlview.c b/dlls/shell32/shlview.c index da60283393c..2a6abf7c8cf 100644 --- a/dlls/shell32/shlview.c +++ b/dlls/shell32/shlview.c @@ -2946,15 +2946,26 @@ static HRESULT WINAPI FolderView2_SetText(IFolderView2 *iface, FVTEXTTYPE type, static HRESULT WINAPI FolderView2_SetCurrentFolderFlags(IFolderView2 *iface, DWORD mask, DWORD flags) { IShellViewImpl *This = impl_from_IFolderView2(iface); - FIXME("(%p)->(0x%08lx 0x%08lx), stub\n", This, mask, flags); - return E_NOTIMPL; + + TRACE("(%p)->(%#lx %#lx).\n", This, mask, flags); + + if (flags == FWF_NONE) + This->FolderSettings.fFlags &= ~mask; + else + This->FolderSettings.fFlags |= flags & mask; + + return S_OK; }
static HRESULT WINAPI FolderView2_GetCurrentFolderFlags(IFolderView2 *iface, DWORD *flags) { IShellViewImpl *This = impl_from_IFolderView2(iface); - FIXME("(%p)->(%p), stub\n", This, flags); - return E_NOTIMPL; + + TRACE("(%p)->(%p).\n", This, flags); + + if (flags) + *flags = This->FolderSettings.fFlags; + return S_OK; }
static HRESULT WINAPI FolderView2_GetSortColumnCount(IFolderView2 *iface, int *columns) diff --git a/dlls/shell32/tests/shlview.c b/dlls/shell32/tests/shlview.c index 80e8e845156..72d7411fcd5 100644 --- a/dlls/shell32/tests/shlview.c +++ b/dlls/shell32/tests/shlview.c @@ -1543,21 +1543,21 @@ static void test_folder_flags(void) }
hr = IFolderView2_GetCurrentFolderFlags(folderview, NULL); - todo_wine ok(hr == S_OK, "Got hr %#lx.\n", hr); + ok(hr == S_OK, "Got hr %#lx.\n", hr);
flags = 0xdeadbeef; hr = IFolderView2_GetCurrentFolderFlags(folderview, &flags); - todo_wine ok(hr == S_OK, "Got hr %#lx.\n", hr); - todo_wine ok(flags == FWF_USESEARCHFOLDER, "Got flags %#lx.\n", flags); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + ok(flags == FWF_USESEARCHFOLDER, "Got flags %#lx.\n", flags);
for (i = 0; i < ARRAY_SIZE(tests); ++i) { hr = IFolderView2_SetCurrentFolderFlags(folderview, tests[i].mask, tests[i].flags); - todo_wine ok(hr == S_OK, "Test %u: Got hr %#lx.\n", i, hr); + ok(hr == S_OK, "Test %u: Got hr %#lx.\n", i, hr); flags = 0xdeadbeef; hr = IFolderView2_GetCurrentFolderFlags(folderview, &flags); - todo_wine ok(hr == S_OK, "Test %u: Got hr %#lx.\n", i, hr); - todo_wine ok(flags == tests[i].expected, "Test %u: Got flags %#lx.\n", i, flags); + ok(hr == S_OK, "Test %u: Got hr %#lx.\n", i, hr); + ok(flags == tests[i].expected, "Test %u: Got flags %#lx.\n", i, flags); }
IFolderView2_Release(folderview);