[PATCH] Implemented IFolderView::GetSelectionMarkedItem() with basic test
Nikolay Sivov
nsivov at codeweavers.com
Sat Mar 6 14:54:03 CST 2010
---
dlls/shell32/shlview.c | 10 +++++++---
dlls/shell32/tests/shlview.c | 23 ++++++++++++++++++++++-
2 files changed, 29 insertions(+), 4 deletions(-)
diff --git a/dlls/shell32/shlview.c b/dlls/shell32/shlview.c
index c2fb973..8778dbd 100644
--- a/dlls/shell32/shlview.c
+++ b/dlls/shell32/shlview.c
@@ -2739,9 +2739,13 @@ static HRESULT WINAPI IFView_Items(IFolderView *iface, UINT flags, REFIID riid,
static HRESULT WINAPI IFView_GetSelectionMarkedItem(IFolderView *iface, int *item)
{
- IShellViewImpl *This = impl_from_IFolderView(iface);
- FIXME("(%p)->(%p), stub\n", This, item);
- return E_NOTIMPL;
+ IShellViewImpl *This = impl_from_IFolderView(iface);
+
+ TRACE("(%p)->(%p)\n", This, item);
+
+ *item = SendMessageW(This->hWndList, LVM_GETSELECTIONMARK, 0, 0);
+
+ return S_OK;
}
static HRESULT WINAPI IFView_GetFocusedItem(IFolderView *iface, int *item)
diff --git a/dlls/shell32/tests/shlview.c b/dlls/shell32/tests/shlview.c
index a14c691..fd65e49 100644
--- a/dlls/shell32/tests/shlview.c
+++ b/dlls/shell32/tests/shlview.c
@@ -298,6 +298,11 @@ static const struct message folderview_getspacing_seq[] = {
{ 0 }
};
+static const struct message folderview_getselectionmarked_seq[] = {
+ { LVM_GETSELECTIONMARK, sent },
+ { 0 }
+};
+
static void test_IShellView_CreateViewWindow(void)
{
IShellFolder *desktop;
@@ -344,7 +349,7 @@ static void test_IFolderView(void)
IFolderView *fv;
HWND hwnd_view, hwnd_list;
HRESULT hr;
- DWORD ret;
+ INT ret;
POINT pt;
RECT r;
@@ -371,6 +376,9 @@ if (0)
{
/* crashes on Vista and Win2k8 - List not created yet case */
hr = IFolderView_GetSpacing(fv, &pt);
+
+ /* crashes on XP */
+ hr = IFolderView_GetSelectionMarkedItem(fv, NULL);
}
browser = IShellBrowserImpl_Construct();
@@ -414,6 +422,19 @@ if (0)
ok(pt.x == LOWORD(ret) && pt.y == HIWORD(ret), "got (%d, %d)\n", LOWORD(ret), HIWORD(ret));
}
+ /* IFolderView::GetSelectionMarkedItem */
+if (0)
+{
+ /* crashes on XP */
+ hr = IFolderView_GetSelectionMarkedItem(fv, NULL);
+}
+
+ flush_sequences(sequences, NUM_MSG_SEQUENCES);
+ hr = IFolderView_GetSelectionMarkedItem(fv, &ret);
+ ok(hr == S_OK, "got (0x%08x)\n", hr);
+ ok_sequence(sequences, LISTVIEW_SEQ_INDEX, folderview_getselectionmarked_seq,
+ "IFolderView::GetSelectionMarkedItem", FALSE);
+
IShellBrowser_Release(browser);
IFolderView_Release(fv);
IShellView_Release(view);
--
1.5.6.5
--=-hE9Pq1OBT93Ivaz3toZq--
More information about the wine-patches
mailing list