Module: wine Branch: master Commit: 7b1ff882d1abd5a95a943840bfc322b28e4caca4 URL: http://source.winehq.org/git/wine.git/?a=commit;h=7b1ff882d1abd5a95a943840bf...
Author: Piotr Caban piotr@codeweavers.com Date: Thu Oct 31 17:27:51 2013 +0100
comctl32: Initialize treeview checkboxes in WM_PAINT when TVS_CHECKBOXES was passed during control creation.
---
dlls/comctl32/tests/treeview.c | 36 +++++++++++++++++++++++++++++++++++- dlls/comctl32/treeview.c | 3 --- 2 files changed, 35 insertions(+), 4 deletions(-)
diff --git a/dlls/comctl32/tests/treeview.c b/dlls/comctl32/tests/treeview.c index d523c23..998cc83 100644 --- a/dlls/comctl32/tests/treeview.c +++ b/dlls/comctl32/tests/treeview.c @@ -1771,6 +1771,7 @@ static void test_TVS_CHECKBOXES(void) HWND hTree, hTree2; TVITEMA item; DWORD ret; + MSG msg;
hTree = create_treeview_control(0); fill_tree(hTree); @@ -1850,7 +1851,7 @@ static void test_TVS_CHECKBOXES(void) hTree = create_treeview_control(TVS_CHECKBOXES); fill_tree(hTree); himl = (HIMAGELIST)SendMessageA(hTree, TVM_GETIMAGELIST, TVSIL_STATE, 0); - todo_wine ok(himl == NULL, "got %p\n", himl); + ok(himl == NULL, "got %p\n", himl);
item.hItem = hRoot; item.mask = TVIF_STATE; @@ -1868,6 +1869,39 @@ static void test_TVS_CHECKBOXES(void) expect(TRUE, ret); ok(item.state == INDEXTOSTATEIMAGEMASK(1), "got 0x%x\n", item.state);
+ item.hItem = hChild; + item.mask = TVIF_STATE; + item.state = INDEXTOSTATEIMAGEMASK(2); + item.stateMask = TVIS_STATEIMAGEMASK; + ret = SendMessageA(hTree, TVM_SETITEMA, 0, (LPARAM)&item); + expect(TRUE, ret); + + item.hItem = hChild; + item.mask = TVIF_STATE; + item.state = 0; + ret = SendMessageA(hTree, TVM_GETITEMA, 0, (LPARAM)&item); + expect(TRUE, ret); + ok(item.state == INDEXTOSTATEIMAGEMASK(2), "got 0x%x\n", item.state); + + while(GetMessageA(&msg, 0, 0, 0)) + { + TranslateMessage(&msg); + DispatchMessageA(&msg); + + if((msg.hwnd == hTree) && (msg.message == WM_PAINT)) + break; + } + + item.hItem = hChild; + item.mask = TVIF_STATE; + item.state = 0; + ret = SendMessageA(hTree, TVM_GETITEMA, 0, (LPARAM)&item); + expect(TRUE, ret); + ok(item.state == INDEXTOSTATEIMAGEMASK(1), "got 0x%x\n", item.state); + + himl = (HIMAGELIST)SendMessageA(hTree, TVM_GETIMAGELIST, TVSIL_STATE, 0); + ok(himl != NULL, "got %p\n", himl); + DestroyWindow(hTree); }
diff --git a/dlls/comctl32/treeview.c b/dlls/comctl32/treeview.c index ae69623..a885543 100644 --- a/dlls/comctl32/treeview.c +++ b/dlls/comctl32/treeview.c @@ -5137,9 +5137,6 @@ TREEVIEW_Create(HWND hwnd, const CREATESTRUCTW *lpcs) CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hwnd, 0, 0, 0);
- if (infoPtr->dwStyle & TVS_CHECKBOXES) - TREEVIEW_InitCheckboxes(infoPtr); - /* Make sure actual scrollbar state is consistent with uInternalStatus */ ShowScrollBar(hwnd, SB_VERT, FALSE); ShowScrollBar(hwnd, SB_HORZ, FALSE);