From 78c909fb08c9168ac679a47b2df6d4249ae20fb1 Mon Sep 17 00:00:00 2001 From: Nikolay Sivov Date: Tue, 9 Mar 2010 13:57:34 +0300 Subject: [PATCH] shell32/shellview: Implement IFolderView::ItemCount for SVGIO_ALLVIEW flag. --- dlls/shell32/shlview.c | 13 ++++++++++--- dlls/shell32/tests/shlview.c | 18 ++++++++++++++++++ 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/dlls/shell32/shlview.c b/dlls/shell32/shlview.c index af14604ac27..cf9098281c0 100644 --- a/dlls/shell32/shlview.c +++ b/dlls/shell32/shlview.c @@ -2735,9 +2735,16 @@ static HRESULT WINAPI IFView_Item(IFolderView *iface, int index, PITEMID_CHILD * static HRESULT WINAPI IFView_ItemCount(IFolderView *iface, UINT flags, int *items) { - IShellViewImpl *This = impl_from_IFolderView(iface); - FIXME("(%p)->(%u %p), stub\n", This, flags, items); - return E_NOTIMPL; + IShellViewImpl *This = impl_from_IFolderView(iface); + + TRACE("(%p)->(%u %p)\n", This, flags, items); + + if (flags != SVGIO_ALLVIEW) + FIXME("some flags unsupported, %x\n", flags & ~SVGIO_ALLVIEW); + + *items = SendMessageW(This->hWndList, LVM_GETITEMCOUNT, 0, 0); + + return S_OK; } static HRESULT WINAPI IFView_Items(IFolderView *iface, UINT flags, REFIID riid, void **ppv) diff --git a/dlls/shell32/tests/shlview.c b/dlls/shell32/tests/shlview.c index c8cd4cfe443..ac603c11bdc 100644 --- a/dlls/shell32/tests/shlview.c +++ b/dlls/shell32/tests/shlview.c @@ -308,6 +308,11 @@ static const struct message folderview_getfocused_seq[] = { { 0 } }; +static const struct message folderview_itemcount_seq[] = { + { LVM_GETITEMCOUNT, sent }, + { 0 } +}; + static void test_IShellView_CreateViewWindow(void) { IShellFolder *desktop; @@ -469,6 +474,19 @@ if (0) ok(ref1 == ref2, "expected same refcount, got %d\n", ref2); ok(desktop == folder, "\n"); + /* IFolderView::ItemCount */ +if (0) +{ + /* crashes on XP */ + hr = IFolderView_ItemCount(fv, SVGIO_ALLVIEW, NULL); +} + + flush_sequences(sequences, NUM_MSG_SEQUENCES); + hr = IFolderView_ItemCount(fv, SVGIO_ALLVIEW, &ret); + ok(hr == S_OK, "got (0x%08x)\n", hr); + ok_sequence(sequences, LISTVIEW_SEQ_INDEX, folderview_itemcount_seq, + "IFolderView::ItemCount", FALSE); + IShellBrowser_Release(browser); IFolderView_Release(fv); IShellView_Release(view);