[COMCTL32] Fix shift-selecting files not working as expected in small/large icons...
authorMiguel Almeida <miguelbarraalmeida@gmail.com>
Tue, 11 Mar 2025 12:49:39 +0000 (12:49 +0000)
committerGitHub <noreply@github.com>
Tue, 11 Mar 2025 12:49:39 +0000 (13:49 +0100)
CORE-10386

Fixes the behavior when selecting multiple files in a folder with the Shift key, while using either the Large Icons or Small Icons view, so that it is consistent with how it works on Windows.

Proposed changes:
Disable the specialized code for these views in LISTVIEW_SetGroupSelection, using the same code as for the list and details views, which also works fine for them.

dll/win32/comctl32/listview.c

index c94b85f..eb165e8 100644 (file)
@@ -3725,8 +3725,10 @@ static void LISTVIEW_SetGroupSelection(LISTVIEW_INFO *infoPtr, INT nItem)
     item.state = LVIS_SELECTED; 
     item.stateMask = LVIS_SELECTED;
 
+#ifndef __REACTOS__
     if ((infoPtr->uView == LV_VIEW_LIST) || (infoPtr->uView == LV_VIEW_DETAILS))
     {
+#endif
        if (infoPtr->nSelectionMark == -1)
        {
            infoPtr->nSelectionMark = nItem;
@@ -3740,6 +3742,7 @@ static void LISTVIEW_SetGroupSelection(LISTVIEW_INFO *infoPtr, INT nItem)
            sel.upper = max(infoPtr->nSelectionMark, nItem) + 1;
            ranges_add(selection, sel);
        }
+#ifndef __REACTOS__
     }
     else
     {
@@ -3765,6 +3768,7 @@ static void LISTVIEW_SetGroupSelection(LISTVIEW_INFO *infoPtr, INT nItem)
        }
        iterator_destroy(&i);
     }
+#endif
 
     /* disable per item notifications on LVS_OWNERDATA style
        FIXME: single LVN_ODSTATECHANGED should be used */