[COMCTL32] TreeView: Fix selection display on checking checkbox (#6608)
authorKatayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
Tue, 12 Mar 2024 09:49:52 +0000 (18:49 +0900)
committerGitHub <noreply@github.com>
Tue, 12 Mar 2024 09:49:52 +0000 (18:49 +0900)
Fix checkboxed treeview selection display.
JIRA issue: CORE-19480
- Make the first argument of TREEVIEW_ToggleItemState non-const.
- Select the item by calling TREEVIEW_SelectItem in TREEVIEW_ToggleItemState.

dll/win32/comctl32/treeview.c

index d3066d7..945084d 100644 (file)
@@ -2334,8 +2334,18 @@ TREEVIEW_GetCount(const TREEVIEW_INFO *infoPtr)
     return (LRESULT)infoPtr->uNumItems;
 }
 
+#ifdef __REACTOS__
+static LRESULT
+TREEVIEW_SelectItem(TREEVIEW_INFO *infoPtr, INT wParam, HTREEITEM item);
+#endif
+
+#ifdef __REACTOS__
+static VOID
+TREEVIEW_ToggleItemState(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *item)
+#else
 static VOID
 TREEVIEW_ToggleItemState(const TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *item)
+#endif
 {
     if (infoPtr->dwStyle & TVS_CHECKBOXES)
     {
@@ -2353,6 +2363,9 @@ TREEVIEW_ToggleItemState(const TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *item)
        item->state |= INDEXTOSTATEIMAGEMASK(state);
 
        TRACE("state: 0x%x\n", state);
+#ifdef __REACTOS__
+       TREEVIEW_SelectItem(infoPtr, TVGN_CARET, item);
+#endif
        TREEVIEW_Invalidate(infoPtr, item);
     }
 }