Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 21 additions & 2 deletions src/Files.App/Views/Layouts/BaseGroupableLayoutPage.cs
Original file line number Diff line number Diff line change
Expand Up @@ -225,11 +225,30 @@ protected override void ZoomIn()
RootZoom.IsZoomedInViewActive = true;
}

protected virtual void FileList_SelectionChanged(object sender, SelectionChangedEventArgs e)
protected virtual void FileList_SelectionChanged(object sender, SelectionChangedEventArgs? e)
{
SelectedItems = ListViewBase.SelectedItems.Cast<ListedItem>().Where(x => x is not null).ToList();

if (e is null && SelectedItems?.Count == 0)
return;

if (e is not null && e.AddedItems.Count == 0 && e.RemovedItems.Count == 0)
return;

var selectedItems = ListViewBase.SelectedItems.Cast<ListedItem>().Where(x => x is not null).ToList();

if (SelectedItems is not null && SelectedItems.SequenceEqual(selectedItems))
return;

SelectedItems = selectedItems;

if (e is null)
return;

OnSelectionChanged(e);
}

protected abstract void OnSelectionChanged(SelectionChangedEventArgs e);

protected virtual void SelectionRectangle_SelectionEnded(object? sender, EventArgs e)
{
ListViewBase.Focus(FocusState.Programmatic);
Expand Down
10 changes: 3 additions & 7 deletions src/Files.App/Views/Layouts/ColumnLayoutPage.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -326,12 +326,8 @@ public override void Dispose()
columnsOwner = null;
}

protected override void FileList_SelectionChanged(object sender, SelectionChangedEventArgs e)
protected override void OnSelectionChanged(SelectionChangedEventArgs e)
{
base.FileList_SelectionChanged(sender, e);
if (e is null)
return;

if (e.AddedItems.Count > 0)
columnsOwner?.HandleSelectionChange(this);

Expand All @@ -353,8 +349,8 @@ protected override void FileList_SelectionChanged(object sender, SelectionChange
return;

// Open the selected folder if selected through tap
if (UserSettingsService.FoldersSettingsService.OpenFoldersInColumnsViewWithSingleClick.ShouldOpenWithSingleClick(lastPointerDeviceType) &&
!isDraggingSelectionRectangle) ItemInvoked?.Invoke(new ColumnParam { Source = this, NavPathParam = (SelectedItem is IShortcutItem sht ? sht.TargetPath : SelectedItem.ItemPath), ListView = FileList }, EventArgs.Empty);
if (UserSettingsService.FoldersSettingsService.OpenFoldersInColumnsViewWithSingleClick.ShouldOpenWithSingleClick(lastPointerDeviceType))
ItemInvoked?.Invoke(new ColumnParam { Source = this, NavPathParam = (SelectedItem is IShortcutItem sht ? sht.TargetPath : SelectedItem.ItemPath), ListView = FileList }, EventArgs.Empty);
else
CloseFolder();
}
Expand Down
15 changes: 5 additions & 10 deletions src/Files.App/Views/Layouts/DetailsLayoutPage.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -360,18 +360,13 @@ private void FolderSettings_LayoutModeChangeRequested(object? sender, LayoutMode

}

protected override void FileList_SelectionChanged(object sender, SelectionChangedEventArgs e)
protected override void OnSelectionChanged(SelectionChangedEventArgs e)
{
SelectedItems = FileList.SelectedItems.Cast<ListedItem>().Where(x => x is not null).ToList();
foreach (var item in e.AddedItems)
SetCheckboxSelectionState(item);

if (e != null)
{
foreach (var item in e.AddedItems)
SetCheckboxSelectionState(item);

foreach (var item in e.RemovedItems)
SetCheckboxSelectionState(item);
}
foreach (var item in e.RemovedItems)
SetCheckboxSelectionState(item);
}

override public void StartRenameItem()
Expand Down
15 changes: 5 additions & 10 deletions src/Files.App/Views/Layouts/GridLayoutPage.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -338,18 +338,13 @@ private void FileList_Loaded(object sender, RoutedEventArgs e)
ContentScroller = FileList.FindDescendant<ScrollViewer>(x => x.Name == "ScrollViewer");
}

protected override void FileList_SelectionChanged(object sender, SelectionChangedEventArgs e)
protected override void OnSelectionChanged(SelectionChangedEventArgs e)
{
base.FileList_SelectionChanged(sender, e);
foreach (var item in e.AddedItems)
SetCheckboxSelectionState(item);

if (e != null)
{
foreach (var item in e.AddedItems)
SetCheckboxSelectionState(item);

foreach (var item in e.RemovedItems)
SetCheckboxSelectionState(item);
}
foreach (var item in e.RemovedItems)
SetCheckboxSelectionState(item);
}

override public void StartRenameItem()
Expand Down
Loading