Module: wine Branch: master Commit: 90b9c2fd3953b04043ebe09fd89eeec925219d4a URL: http://source.winehq.org/git/wine.git/?a=commit;h=90b9c2fd3953b04043ebe09fd8...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Sat Mar 6 23:54:03 2010 +0300
shell32/shellview: Implemented IFolderView::GetSelectionMarkedItem() with basic test.
---
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);