shell32: Add IShellFolderView::SetRedraw implementation.
authorNikolay Sivov <nsivov@codeweavers.com>
Mon, 22 Mar 2010 00:04:49 +0000 (03:04 +0300)
committerAlexandre Julliard <julliard@winehq.org>
Mon, 22 Mar 2010 14:52:36 +0000 (15:52 +0100)
dlls/shell32/shlview.c
dlls/shell32/tests/shlview.c

index 4852fed1c06c1cf8fad247f9f29a1f6b07267f4c..e60a765a09b6f1b800450691a43616b7c476381a 100644 (file)
@@ -644,6 +644,7 @@ static INT CALLBACK fill_list( LPVOID ptr, LPVOID arg )
 
 static HRESULT ShellView_FillList(IShellViewImpl *This)
 {
+    IShellFolderView *folderview = (IShellFolderView*)&This->lpvtblShellFolderView;
     LPENUMIDLIST pEnumIDList;
     LPITEMIDLIST pidl;
     DWORD fetched;
@@ -676,9 +677,9 @@ static HRESULT ShellView_FillList(IShellViewImpl *This)
     /* sort the array */
     DPA_Sort(hdpa, ShellView_CompareItems, (LPARAM)This->pSFParent);
 
-    SendMessageW(This->hWndList, WM_SETREDRAW, FALSE, 0);
+    IShellFolderView_SetRedraw(folderview, FALSE);
     DPA_DestroyCallback(hdpa, fill_list, This);
-    SendMessageW(This->hWndList, WM_SETREDRAW, TRUE, 0);
+    IShellFolderView_SetRedraw(folderview, TRUE);
 
     IEnumIDList_Release(pEnumIDList);
 
@@ -3041,8 +3042,11 @@ static HRESULT WINAPI IShellFolderView_fnSetRedraw(
     BOOL redraw)
 {
     IShellViewImpl *This = impl_from_IShellFolderView(iface);
-    FIXME("(%p)->(%d) stub\n", This, redraw);
-    return E_NOTIMPL;
+    TRACE("(%p)->(%d)\n", This, redraw);
+
+    SendMessageW(This->hWndList, WM_SETREDRAW, redraw, 0);
+
+    return S_OK;
 }
 
 static HRESULT WINAPI IShellFolderView_fnGetSelectedCount(
index 077c491b3048394f7c9086ee8133c0ef4f2fef79..6f08f18931da6d25524a617fe70081dc522bd1ef 100644 (file)
@@ -568,6 +568,10 @@ static void test_IShellFolderView(void)
     hr = IShellFolderView_MoveIcons(folderview, NULL);
     ok(hr == E_NOTIMPL, "got (0x%08x)\n", hr);
 
+    /* ::SetRedraw without list created */
+    hr = IShellFolderView_SetRedraw(folderview, TRUE);
+    ok(hr == S_OK, "got (0x%08x)\n", hr);
+
     IShellFolderView_Release(folderview);
 
     IShellView_Release(view);