shell32: Implement some IShellFolderView methods over IFolderView.
authorNikolay Sivov <nsivov@codeweavers.com>
Sun, 21 Mar 2010 22:49:44 +0000 (01:49 +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 e3f170e88dd28869934b37456df32ab596f99788..4852fed1c06c1cf8fad247f9f29a1f6b07267f4c 100644 (file)
@@ -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;
 }
 
index 50853d4be64deafb1f6ef23555b38b1ff4900ddb..077c491b3048394f7c9086ee8133c0ef4f2fef79 100644 (file)
@@ -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);