From f9b14fda026fe71cb055a20833069e1c16e328ba Mon Sep 17 00:00:00 2001 From: Nikolay Sivov Date: Sat, 14 May 2011 15:18:49 +0400 Subject: [PATCH] comctl32/treeview: Store item state supplied from TVN_GETDISPINFO handler. --- dlls/comctl32/tests/treeview.c | 3 ++- dlls/comctl32/treeview.c | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/dlls/comctl32/tests/treeview.c b/dlls/comctl32/tests/treeview.c index 7dd9aacfd03..002d69c1ea3 100644 --- a/dlls/comctl32/tests/treeview.c +++ b/dlls/comctl32/tests/treeview.c @@ -468,10 +468,11 @@ static void test_callback(void) tvi.hItem = hRoot; tvi.mask = TVIF_IMAGE; tvi.state = INDEXTOSTATEIMAGEMASK(1); + tvi.stateMask = 0; ret = TreeView_GetItem(hTree, &tvi); expect(TRUE, ret); /* handler sets TVIS_SELECTED as well */ - todo_wine ok(tvi.state == (TVIS_FOCUSED | TVIS_SELECTED | INDEXTOSTATEIMAGEMASK(2) | INDEXTOOVERLAYMASK(3)), "got 0x%x\n", tvi.state); + ok(tvi.state == (TVIS_FOCUSED | TVIS_SELECTED | INDEXTOSTATEIMAGEMASK(2) | INDEXTOOVERLAYMASK(3)), "got 0x%x\n", tvi.state); g_disp_set_stateimage = FALSE; ok_sequence(sequences, PARENT_SEQ_INDEX, parent_get_dispinfo_seq, diff --git a/dlls/comctl32/treeview.c b/dlls/comctl32/treeview.c index 84c2c8bcfe2..453985ad23a 100644 --- a/dlls/comctl32/treeview.c +++ b/dlls/comctl32/treeview.c @@ -815,6 +815,12 @@ TREEVIEW_UpdateDispInfo(const TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *wineItem, if (mask & TVIF_CHILDREN) wineItem->cChildren = callback.item.cChildren; + if (callback.item.mask & TVIF_STATE) + { + wineItem->state &= ~callback.item.stateMask; + wineItem->state |= (callback.item.state & callback.item.stateMask); + } + /* These members are now permanently set. */ if (callback.item.mask & TVIF_DI_SETITEM) wineItem->callbackMask &= ~callback.item.mask; -- 2.11.4.GIT