Skip to content

Commit d4a4181

Browse files
authored
Added support for selecting items with a selection rectangle (#2119)
1 parent ad1e323 commit d4a4181

File tree

7 files changed

+485
-3
lines changed

7 files changed

+485
-3
lines changed

Files/Files.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,7 @@
242242
<Compile Include="UserControls\PropertyListItem.xaml.cs">
243243
<DependentUpon>PropertyListItem.xaml</DependentUpon>
244244
</Compile>
245+
<Compile Include="UserControls\RectangleSelection.cs" />
245246
<Compile Include="UserControls\SidebarControl.xaml.cs">
246247
<DependentUpon>SidebarControl.xaml</DependentUpon>
247248
</Compile>

Files/Interacts/Interaction.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ public static async Task InvokeWin32Components(List<string> applicationPaths, st
188188
{
189189
var value = new ValueSet
190190
{
191-
{ "WorkingDirectory", string.IsNullOrEmpty(workingDir) ? App.CurrentInstance.FilesystemViewModel.WorkingDirectory : workingDir },
191+
{ "WorkingDirectory", string.IsNullOrEmpty(workingDir) ? App.CurrentInstance?.FilesystemViewModel?.WorkingDirectory : workingDir },
192192
{ "Application", applicationPaths.FirstOrDefault() },
193193
{ "ApplicationList", JsonConvert.SerializeObject(applicationPaths) },
194194
};
@@ -243,7 +243,7 @@ public static T FindChild<T>(DependencyObject startNode) where T : DependencyObj
243243
return null;
244244
}
245245

246-
public static void FindChildren<T>(List<T> results, DependencyObject startNode) where T : DependencyObject
246+
public static void FindChildren<T>(IList<T> results, DependencyObject startNode) where T : DependencyObject
247247
{
248248
int count = VisualTreeHelper.GetChildrenCount(startNode);
249249
for (int i = 0; i < count; i++)

Files/UserControls/RectangleSelection.cs

Lines changed: 443 additions & 0 deletions
Large diffs are not rendered by default.

Files/Views/LayoutModes/GenericFileBrowser.xaml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -594,6 +594,8 @@
594594

595595
<controls:DataGrid
596596
x:Name="AllView"
597+
Background="Transparent"
598+
VerticalAlignment="Stretch"
597599
Grid.Row="3"
598600
Margin="12,12,12,0"
599601
HorizontalAlignment="Stretch"
@@ -842,5 +844,20 @@
842844
</controls:DataGridTextColumn>
843845
</controls:DataGrid.Columns>
844846
</controls:DataGrid>
847+
848+
<Canvas
849+
HorizontalAlignment="Stretch"
850+
VerticalAlignment="Stretch"
851+
Margin="12,12,12,0">
852+
<Rectangle
853+
Name="SelectionRectangle"
854+
Fill="#AA0078d7"
855+
Stroke="#FF0066cc"
856+
StrokeThickness="1"
857+
Canvas.Left="0"
858+
Canvas.Top="0"
859+
Width="0"
860+
Height="0" />
861+
</Canvas>
845862
</Grid>
846863
</local:BaseLayout>

Files/Views/LayoutModes/GenericFileBrowser.xaml.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using Files.Enums;
22
using Files.Filesystem;
33
using Files.Helpers;
4+
using Files.UserControls;
45
using Microsoft.Toolkit.Uwp.UI;
56
using Microsoft.Toolkit.Uwp.UI.Controls;
67
using Microsoft.UI.Xaml.Controls;
@@ -61,6 +62,7 @@ public GenericFileBrowser()
6162
InitializeComponent();
6263
base.BaseLayoutContextFlyout = this.BaseLayoutContextFlyout;
6364
base.BaseLayoutItemContextFlyout = this.BaseLayoutItemContextFlyout;
65+
RectangleSelection.Create(AllView, SelectionRectangle, AllView_SelectionChanged);
6466
switch (AppSettings.DirectorySortOption)
6567
{
6668
case SortOption.Name:

Files/Views/LayoutModes/GridViewBrowser.xaml

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -849,7 +849,7 @@
849849

850850
<GridView
851851
x:Name="FileList"
852-
Margin="14,14,14,0"
852+
Padding="14,14,14,0"
853853
VerticalContentAlignment="Stretch"
854854
x:FieldModifier="public"
855855
AllowDrop="True"
@@ -876,5 +876,19 @@
876876
</Core:DataTriggerBehavior>
877877
</Interactivity:Interaction.Behaviors>
878878
</GridView>
879+
880+
<Canvas
881+
HorizontalAlignment="Stretch"
882+
VerticalAlignment="Stretch">
883+
<Rectangle
884+
Name="SelectionRectangle"
885+
Fill="#AA0078d7"
886+
Stroke="#FF0066cc"
887+
StrokeThickness="1"
888+
Canvas.Left="0"
889+
Canvas.Top="0"
890+
Width="0"
891+
Height="0"/>
892+
</Canvas>
879893
</Grid>
880894
</local:BaseLayout>

Files/Views/LayoutModes/GridViewBrowser.xaml.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,18 @@
11
using Files.Filesystem;
2+
using Files.UserControls;
23
using System;
34
using System.Collections;
45
using System.Collections.Generic;
56
using System.Linq;
7+
using Windows.Foundation;
68
using Windows.System;
79
using Windows.UI.Core;
10+
using Windows.UI.Input;
811
using Windows.UI.Xaml;
912
using Windows.UI.Xaml.Controls;
1013
using Windows.UI.Xaml.Controls.Primitives;
1114
using Windows.UI.Xaml.Input;
15+
using Windows.UI.Xaml.Media;
1216
using Interaction = Files.Interacts.Interaction;
1317

1418
namespace Files
@@ -22,6 +26,7 @@ public GridViewBrowser()
2226
this.InitializeComponent();
2327
base.BaseLayoutContextFlyout = this.BaseLayoutContextFlyout;
2428
base.BaseLayoutItemContextFlyout = this.BaseLayoutItemContextFlyout;
29+
RectangleSelection.Create(FileList, SelectionRectangle, FileList_SelectionChanged);
2530
App.AppSettings.LayoutModeChangeRequested += AppSettings_LayoutModeChangeRequested;
2631

2732
SetItemTemplate(); // Set ItemTemplate

0 commit comments

Comments
 (0)