From: Jactry Zeng <jzeng(a)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); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/2628