mirror of
https://github.com/reactos/wine.git
synced 2024-11-26 05:00:30 +00:00
comctl32: Fix LVM_GETITEM/LVIF_STATE so it only returns the bits it
has been asked for, and sets all the others to zero (with conformance test).
This commit is contained in:
parent
3a03248a7c
commit
20eb2f9998
@ -5364,7 +5364,7 @@ static BOOL LISTVIEW_GetItemT(LISTVIEW_INFO *infoPtr, LPLVITEMW lpLVItem, BOOL i
|
||||
/* ... the state field (this one is different due to uCallbackmask) */
|
||||
if (lpLVItem->mask & LVIF_STATE)
|
||||
{
|
||||
lpLVItem->state = lpItem->state;
|
||||
lpLVItem->state = lpItem->state & lpLVItem->stateMask;
|
||||
if (dispInfo.item.mask & LVIF_STATE)
|
||||
{
|
||||
lpLVItem->state &= ~dispInfo.item.stateMask;
|
||||
|
@ -189,6 +189,16 @@ static void test_checkboxes(void)
|
||||
r = SendMessage(hwnd, LVM_GETITEMA, 0, (LPARAM) &item);
|
||||
ok(item.state == 0x2aaa, "state %x\n", item.state);
|
||||
|
||||
/* Check that only the bits we asked for are returned,
|
||||
* and that all the others are set to zero
|
||||
*/
|
||||
item.iItem = 3;
|
||||
item.mask = LVIF_STATE;
|
||||
item.stateMask = 0xf000;
|
||||
item.state = 0xffff;
|
||||
r = SendMessage(hwnd, LVM_GETITEMA, 0, (LPARAM) &item);
|
||||
ok(item.state == 0x2000, "state %x\n", item.state);
|
||||
|
||||
/* Set the style again and check that doesn't change an item's state */
|
||||
r = SendMessage(hwnd, LVM_SETEXTENDEDLISTVIEWSTYLE, LVS_EX_CHECKBOXES, LVS_EX_CHECKBOXES);
|
||||
ok(r == LVS_EX_CHECKBOXES, "ret %lx\n", r);
|
||||
|
Loading…
Reference in New Issue
Block a user