Nikolay Sivov : comctl32/listview: Add support for LVFI_SUBSTRING.
Alexandre Julliard
julliard at winehq.org
Mon Nov 23 08:49:53 CST 2009
Module: wine
Branch: master
Commit: 850ea2a7114e3e858af816399126e87b4098f2da
URL: http://source.winehq.org/git/wine.git/?a=commit;h=850ea2a7114e3e858af816399126e87b4098f2da
Author: Nikolay Sivov <bunglehead at gmail.com>
Date: Sun Nov 22 10:59:45 2009 +0300
comctl32/listview: Add support for LVFI_SUBSTRING.
---
dlls/comctl32/listview.c | 8 +++++---
dlls/comctl32/tests/listview.c | 29 +++++++++++++++++++++++++++++
include/commctrl.h | 11 ++++++-----
3 files changed, 40 insertions(+), 8 deletions(-)
diff --git a/dlls/comctl32/listview.c b/dlls/comctl32/listview.c
index 448590a..5b45ffb 100644
--- a/dlls/comctl32/listview.c
+++ b/dlls/comctl32/listview.c
@@ -5888,7 +5888,8 @@ static INT LISTVIEW_FindItemW(const LISTVIEW_INFO *infoPtr, INT nStart,
if (!lpFindInfo || nItem < 0) return -1;
lvItem.mask = 0;
- if (lpFindInfo->flags & (LVFI_STRING | LVFI_PARTIAL))
+ if (lpFindInfo->flags & (LVFI_STRING | LVFI_PARTIAL) ||
+ lpFindInfo->flags & LVFI_SUBSTRING)
{
lvItem.mask |= LVIF_TEXT;
lvItem.pszText = szDispText;
@@ -5952,7 +5953,7 @@ again:
if (lvItem.mask & LVIF_TEXT)
{
- if (lpFindInfo->flags & LVFI_PARTIAL)
+ if (lpFindInfo->flags & (LVFI_PARTIAL | LVFI_SUBSTRING))
{
WCHAR *p = strstrW(lvItem.pszText, lpFindInfo->psz);
if (!p || p != lvItem.pszText) continue;
@@ -6009,7 +6010,8 @@ again:
static INT LISTVIEW_FindItemA(const LISTVIEW_INFO *infoPtr, INT nStart,
const LVFINDINFOA *lpFindInfo)
{
- BOOL hasText = lpFindInfo->flags & (LVFI_STRING | LVFI_PARTIAL);
+ BOOL hasText = lpFindInfo->flags & (LVFI_STRING | LVFI_PARTIAL) ||
+ lpFindInfo->flags & LVFI_SUBSTRING;
LVFINDINFOW fiw;
INT res;
LPWSTR strW = NULL;
diff --git a/dlls/comctl32/tests/listview.c b/dlls/comctl32/tests/listview.c
index 55e7d96..95d9ddc 100644
--- a/dlls/comctl32/tests/listview.c
+++ b/dlls/comctl32/tests/listview.c
@@ -4128,6 +4128,35 @@ static void test_finditem(void)
r = SendMessage(hwnd, LVM_FINDITEMA, -1, (LPARAM)&fi);
expect(-1, r);
+ /* try with LVFI_SUBSTRING */
+ strcpy(f, "fo");
+ fi.flags = LVFI_SUBSTRING;
+ fi.psz = f;
+ r = SendMessage(hwnd, LVM_FINDITEMA, -1, (LPARAM)&fi);
+ if (r == -1)
+ {
+ win_skip("LVFI_SUBSTRING not supported\n");
+ DestroyWindow(hwnd);
+ return;
+ }
+ expect(0, r);
+ strcpy(f, "f");
+ fi.flags = LVFI_SUBSTRING;
+ fi.psz = f;
+ r = SendMessage(hwnd, LVM_FINDITEMA, -1, (LPARAM)&fi);
+ expect(0, r);
+ strcpy(f, "o");
+ fi.flags = LVFI_SUBSTRING;
+ fi.psz = f;
+ r = SendMessage(hwnd, LVM_FINDITEMA, -1, (LPARAM)&fi);
+ expect(-1, r);
+
+ strcpy(f, "f");
+ fi.flags = LVFI_SUBSTRING | LVFI_STRING;
+ fi.psz = f;
+ r = SendMessage(hwnd, LVM_FINDITEMA, -1, (LPARAM)&fi);
+ expect(0, r);
+
DestroyWindow(hwnd);
}
diff --git a/include/commctrl.h b/include/commctrl.h
index 4360925..b88d694 100644
--- a/include/commctrl.h
+++ b/include/commctrl.h
@@ -3023,11 +3023,12 @@ static const WCHAR WC_LISTVIEWW[] = { 'S','y','s',
#define LVSICF_NOSCROLL 0x0002
-#define LVFI_PARAM 0X0001
-#define LVFI_STRING 0X0002
-#define LVFI_PARTIAL 0X0008
-#define LVFI_WRAP 0X0020
-#define LVFI_NEARESTXY 0X0040
+#define LVFI_PARAM 0x0001
+#define LVFI_STRING 0x0002
+#define LVFI_SUBSTRING 0x0004
+#define LVFI_PARTIAL 0x0008
+#define LVFI_WRAP 0x0020
+#define LVFI_NEARESTXY 0x0040
#define LVIF_TEXT 0x0001
#define LVIF_IMAGE 0x0002
More information about the wine-cvs
mailing list