[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