comctl32/listview: Add support for LVFI_SUBSTRING.

This commit is contained in:
Nikolay Sivov 2009-11-22 10:59:45 +03:00 committed by Alexandre Julliard
parent b7b7b7113e
commit 850ea2a711
3 changed files with 40 additions and 8 deletions

View File

@ -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;

View File

@ -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);
}

View File

@ -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