[PATCH] Implement some IShellFolderView methods over IFolderView

Nikolay Sivov nsivov at codeweavers.com
Sun Mar 21 17:49:44 CDT 2010


---
 dlls/shell32/shlview.c       |   32 +++++++++++++++-----------------
 dlls/shell32/tests/shlview.c |    4 ++++
 2 files changed, 19 insertions(+), 17 deletions(-)

diff --git a/dlls/shell32/shlview.c b/dlls/shell32/shlview.c
index a2db4b6..d21f65a 100644
--- a/dlls/shell32/shlview.c
+++ b/dlls/shell32/shlview.c
@@ -1980,8 +1980,7 @@ static HRESULT WINAPI IShellView_fnSelectItem(
 	UINT flags)
 {
     IShellViewImpl *This = (IShellViewImpl *)iface;
-    IFolderView *view;
-    HRESULT hr;
+    IFolderView *view = (IFolderView*)&This->lpvtblFolderView;
     int i;
 
     TRACE("(%p)->(pidl=%p, 0x%08x)\n",This, pidl, flags);
@@ -1989,14 +1988,7 @@ static HRESULT WINAPI IShellView_fnSelectItem(
     i = LV_FindItemByPidl(This, pidl);
     if (i == -1) return S_OK;
 
-    hr = IShellView2_QueryInterface(iface, &IID_IFolderView, (void**)&view);
-    if (hr == S_OK)
-    {
-        hr = IFolderView_SelectItem(view, i, flags);
-        IFolderView_Release(view);
-    }
-
-    return hr;
+    return IFolderView_SelectItem(view, i, flags);
 }
 
 static HRESULT WINAPI IShellView_fnGetItemObject(IShellView2 * iface, UINT uItem, REFIID riid, LPVOID *ppvOut)
@@ -2964,8 +2956,10 @@ static HRESULT WINAPI IShellFolderView_fnAutoArrange(IShellFolderView *iface)
 static HRESULT WINAPI IShellFolderView_fnGetAutoArrange(IShellFolderView *iface)
 {
     IShellViewImpl *This = impl_from_IShellFolderView(iface);
-    FIXME("(%p) stub\n", This);
-    return E_NOTIMPL;
+    IFolderView *view = (IFolderView*)&This->lpvtblFolderView;
+
+    TRACE("(%p)\n", This);
+    return IFolderView_GetAutoArrange(view);
 }
 
 static HRESULT WINAPI IShellFolderView_fnAddObject(
@@ -2984,8 +2978,10 @@ static HRESULT WINAPI IShellFolderView_fnGetObject(
     UINT item)
 {
     IShellViewImpl *This = impl_from_IShellFolderView(iface);
-    FIXME("(%p)->(%p %d) stub\n", This, pidl, item);
-    return E_NOTIMPL;
+    IFolderView *view = (IFolderView*)&This->lpvtblFolderView;
+
+    TRACE("(%p)->(%p %d)\n", This, pidl, item);
+    return IFolderView_Item(view, item, pidl);
 }
 
 static HRESULT WINAPI IShellFolderView_fnRemoveObject(
@@ -3003,8 +2999,10 @@ static HRESULT WINAPI IShellFolderView_fnGetObjectCount(
     UINT *count)
 {
     IShellViewImpl *This = impl_from_IShellFolderView(iface);
-    FIXME("(%p)->(%p) stub\n", This, count);
-    return E_NOTIMPL;
+    IFolderView *view = (IFolderView*)&This->lpvtblFolderView;
+
+    TRACE("(%p)->(%p)\n", This, count);
+    return IFolderView_ItemCount(view, SVGIO_ALLVIEW, (INT*)count);
 }
 
 static HRESULT WINAPI IShellFolderView_fnSetObjectCount(
@@ -3111,7 +3109,7 @@ static HRESULT WINAPI IShellFolderView_fnMoveIcons(
     IDataObject *obj)
 {
     IShellViewImpl *This = impl_from_IShellFolderView(iface);
-    FIXME("(%p)->(%p) stub\n", This, obj);
+    TRACE("(%p)->(%p)\n", This, obj);
     return E_NOTIMPL;
 }
 
diff --git a/dlls/shell32/tests/shlview.c b/dlls/shell32/tests/shlview.c
index 50853d4..077c491 100644
--- a/dlls/shell32/tests/shlview.c
+++ b/dlls/shell32/tests/shlview.c
@@ -564,6 +564,10 @@ static void test_IShellFolderView(void)
         return;
     }
 
+    /* ::MoveIcons */
+    hr = IShellFolderView_MoveIcons(folderview, NULL);
+    ok(hr == E_NOTIMPL, "got (0x%08x)\n", hr);
+
     IShellFolderView_Release(folderview);
 
     IShellView_Release(view);
-- 
1.5.6.5


--=-ywbQn7Rd8vxAyNJggCkP--




More information about the wine-patches mailing list