[PATCH 2/4] Store item state supplied from TVN_GETDISPINFO handler

Nikolay Sivov nsivov at codeweavers.com
Sat May 14 06:18:49 CDT 2011


---
 dlls/comctl32/tests/treeview.c |    3 ++-
 dlls/comctl32/treeview.c       |    6 ++++++
 2 files changed, 8 insertions(+), 1 deletions(-)

diff --git a/dlls/comctl32/tests/treeview.c b/dlls/comctl32/tests/treeview.c
index 7dd9aac..002d69c 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 84c2c8b..453985a 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;
-- 
1.5.6.5



--------------070600010401040007030602--



More information about the wine-patches mailing list