Commit 4dd26ee8 authored by Piotr Caban's avatar Piotr Caban Committed by Alexandre Julliard

comctl32: Don't ask for WM_MOUSEHOVER messages when LVS_EX_TRACKSELECT was not specified.

parent 0b1204d8
......@@ -4122,6 +4122,7 @@ static LRESULT LISTVIEW_MouseMove(LISTVIEW_INFO *infoPtr, WORD fwKeys, INT x, IN
/* see if we are supposed to be tracking mouse hovering */
if (LISTVIEW_IsHotTracking(infoPtr)) {
TRACKMOUSEEVENT trackinfo;
DWORD flags;
trackinfo.cbSize = sizeof(TRACKMOUSEEVENT);
trackinfo.dwFlags = TME_QUERY;
......@@ -4129,8 +4130,12 @@ static LRESULT LISTVIEW_MouseMove(LISTVIEW_INFO *infoPtr, WORD fwKeys, INT x, IN
/* see if we are already tracking this hwnd */
_TrackMouseEvent(&trackinfo);
if(!(trackinfo.dwFlags & TME_HOVER) || trackinfo.hwndTrack != infoPtr->hwndSelf) {
trackinfo.dwFlags = TME_HOVER;
flags = TME_LEAVE;
if(infoPtr->dwLvExStyle & LVS_EX_TRACKSELECT)
flags |= TME_HOVER;
if((trackinfo.dwFlags & flags) != flags || trackinfo.hwndTrack != infoPtr->hwndSelf) {
trackinfo.dwFlags = flags;
trackinfo.dwHoverTime = infoPtr->dwHoverTime;
trackinfo.hwndTrack = infoPtr->hwndSelf;
......
......@@ -5745,6 +5745,46 @@ static void test_header_proc(void)
DestroyWindow(hwnd);
}
static void test_oneclickactivate(void)
{
char item1[] = "item1";
LVITEMA item;
HWND hwnd, fg;
INT r;
hwnd = CreateWindowExA(0, "SysListView32", "foo", WS_VISIBLE|WS_CHILD|LVS_LIST,
10, 10, 100, 200, hwndparent, NULL, NULL, NULL);
ok(hwnd != NULL, "failed to create listview window\n");
r = SendMessageA(hwnd, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_ONECLICKACTIVATE);
ok(r == 0, "should return zero\n");
SetForegroundWindow(hwndparent);
fg = GetForegroundWindow();
if (fg != hwndparent)
{
skip("Window is not in the foreground. Skipping oneclickactivate tests.\n");
DestroyWindow(hwnd);
return;
}
item.mask = LVIF_TEXT;
item.iItem = 0;
item.iSubItem = 0;
item.iImage = 0;
item.pszText = item1;
r = SendMessageA(hwnd, LVM_INSERTITEMA, 0, (LPARAM) &item);
ok(r == 0, "should not fail\n");
r = SendMessageA(hwnd, LVM_GETSELECTEDCOUNT, 0, 0);
expect(0, r);
r = SendMessageA(hwnd, WM_MOUSEHOVER, MAKELONG(1, 1), 0);
expect(0, r);
r = SendMessageA(hwnd, LVM_GETSELECTEDCOUNT, 0, 0);
expect(1, r);
DestroyWindow(hwnd);
}
START_TEST(listview)
{
HMODULE hComctl32;
......@@ -5814,6 +5854,7 @@ START_TEST(listview)
test_deleteitem();
test_insertitem();
test_header_proc();
test_oneclickactivate();
if (!load_v6_module(&ctx_cookie, &hCtx))
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment