Nikolay Sivov : shell32/shellview: Implement IFolderView:: ItemCount for SVGIO_ALLVIEW flag.

Alexandre Julliard julliard at winehq.org
Mon Mar 15 12:19:37 CDT 2010


Module: wine
Branch: master
Commit: 78c909fb08c9168ac679a47b2df6d4249ae20fb1
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=78c909fb08c9168ac679a47b2df6d4249ae20fb1

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Tue Mar  9 13:57:34 2010 +0300

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 af14604..cf90982 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 c8cd4cf..ac603c1 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);




More information about the wine-cvs mailing list