From c7c49c86662ca5eb936b24f4f38b20549e6a2726 Mon Sep 17 00:00:00 2001 From: Igor Kordiukiewicz Date: Tue, 31 May 2022 17:57:10 +0200 Subject: [PATCH] Show selected items size details when selecting by dragging the mouse --- .../RectangleSelection_ListViewBase.cs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/Files.Uwp/UserControls/Selection/RectangleSelection_ListViewBase.cs b/src/Files.Uwp/UserControls/Selection/RectangleSelection_ListViewBase.cs index 46e9dcd9aeb4..56041af20215 100644 --- a/src/Files.Uwp/UserControls/Selection/RectangleSelection_ListViewBase.cs +++ b/src/Files.Uwp/UserControls/Selection/RectangleSelection_ListViewBase.cs @@ -21,6 +21,7 @@ public class RectangleSelection_ListViewBase : RectangleSelection private Point originDragPoint; private Dictionary itemsPosition; private List prevSelectedItems; + private List prevSelectedItemsDrag; private ItemSelectionStrategy selectionStrategy; public RectangleSelection_ListViewBase(ListViewBase uiElement, Rectangle selectionRectangle, SelectionChangedEventHandler selectionChanged = null) @@ -92,6 +93,20 @@ private void RectangleSelection_PointerMoved(object sender, PointerRoutedEventAr var scrollIncrement = Math.Min(20 - currentPoint.Position.Y, 40); scrollViewer.ChangeView(null, verticalOffset - scrollIncrement, null, false); } + + if (selectionChanged != null) + { + // Restore and trigger SelectionChanged event + uiElement.SelectionChanged -= selectionChanged; + uiElement.SelectionChanged += selectionChanged; + var currentSelectedItemsDrag = uiElement.SelectedItems.Cast().ToList(); + if (prevSelectedItemsDrag == null || !prevSelectedItemsDrag.SequenceEqual(currentSelectedItemsDrag)) + { + // Trigger SelectionChanged event if the selection has changed + selectionChanged(sender, null); + prevSelectedItemsDrag = currentSelectedItemsDrag; + } + } } } @@ -195,6 +210,8 @@ private void RectangleSelection_PointerReleased(object sender, PointerRoutedEven selectionStrategy = null; selectionState = SelectionState.Inactive; + prevSelectedItemsDrag = null; + e.Handled = true; }