Skip to content

Commit 950579f

Browse files
authored
Feature: Removed accent color from non-selected items in the column layout (#10818)
1 parent 524d336 commit 950579f

File tree

3 files changed

+71
-3
lines changed

3 files changed

+71
-3
lines changed

src/Files.App/Views/LayoutModes/ColumnViewBase.xaml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -184,12 +184,12 @@
184184
<ListView.ItemTemplate>
185185
<DataTemplate x:DataType="local2:ListedItem">
186186
<Grid
187+
x:Name="FilesRootGrid"
187188
Height="30"
188189
Margin="0"
189-
Padding="8,0,0,0"
190+
Padding="20,0,12,0"
190191
HorizontalAlignment="Stretch"
191192
VerticalAlignment="Stretch"
192-
Background="Transparent"
193193
CornerRadius="{StaticResource ControlCornerRadius}"
194194
IsRightTapEnabled="True"
195195
Loaded="Grid_Loaded"
@@ -389,6 +389,7 @@
389389
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
390390
<Setter Property="MinHeight" Value="1" />
391391
<Setter Property="Height" Value="{ThemeResource ListItemHeight}" />
392+
<Setter Property="Padding" Value="4,0" />
392393
</Style>
393394
</ListView.ItemContainerStyle>
394395
<ListView.ItemsPanel>
@@ -462,7 +463,7 @@
462463
Width="0"
463464
Height="0"
464465
Fill="{ThemeResource SystemAccentColor}"
465-
Opacity=".5"
466+
Opacity="0.5"
466467
Stroke="{ThemeResource SystemAccentColorLight1}"
467468
StrokeThickness="1" />
468469
</Canvas>

src/Files.App/Views/LayoutModes/ColumnViewBase.xaml.cs

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
using Microsoft.UI.Xaml.Controls;
1414
using Microsoft.UI.Xaml.Controls.Primitives;
1515
using Microsoft.UI.Xaml.Input;
16+
using Microsoft.UI.Xaml.Media;
1617
using Microsoft.UI.Xaml.Navigation;
1718
using System;
1819
using System.Collections.Generic;
@@ -33,12 +34,43 @@ public sealed partial class ColumnViewBase : BaseLayout
3334

3435
protected override ItemsControl ItemsControl => FileList;
3536

37+
private ColumnViewBrowser? columnsOwner;
38+
private ListViewItem? openedFolderPresenter;
39+
3640
public ColumnViewBase() : base()
3741
{
3842
this.InitializeComponent();
3943
var selectionRectangle = RectangleSelection.Create(FileList, SelectionRectangle, FileList_SelectionChanged);
4044
selectionRectangle.SelectionEnded += SelectionRectangle_SelectionEnded;
4145
tapDebounceTimer = DispatcherQueue.CreateTimer();
46+
this.ItemInvoked += ColumnViewBase_ItemInvoked;
47+
this.GotFocus += ColumnViewBase_GotFocus;
48+
}
49+
50+
private void ColumnViewBase_GotFocus(object sender, RoutedEventArgs e)
51+
{
52+
if(FileList.SelectedItem == null && openedFolderPresenter != null)
53+
{
54+
openedFolderPresenter.Focus(FocusState.Programmatic);
55+
FileList.SelectedItem = FileList.ItemFromContainer(openedFolderPresenter);
56+
}
57+
}
58+
59+
private void ColumnViewBase_ItemInvoked(object? sender, EventArgs e)
60+
{
61+
ClearOpenedFolderSelectionIndicator();
62+
openedFolderPresenter = FileList.ContainerFromItem(FileList.SelectedItem) as ListViewItem;
63+
}
64+
65+
private void ClearOpenedFolderSelectionIndicator()
66+
{
67+
if (openedFolderPresenter is null)
68+
return;
69+
70+
openedFolderPresenter.Background = new SolidColorBrush(Microsoft.UI.Colors.Transparent);
71+
var presenter = openedFolderPresenter.FindDescendant<Grid>()!;
72+
presenter!.Background = new SolidColorBrush(Microsoft.UI.Colors.Transparent);
73+
openedFolderPresenter = null;
4274
}
4375

4476
protected override void HookEvents()
@@ -148,7 +180,10 @@ protected override void UnhookEvents()
148180
protected override void OnNavigatedTo(NavigationEventArgs eventArgs)
149181
{
150182
if (eventArgs.Parameter is NavigationArguments navArgs)
183+
{
151184
navArgs.FocusOnNavigation = (navArgs.AssociatedTabInstance as ColumnShellPage)?.ColumnParams?.Column == 0; // Focus filelist only if first column
185+
columnsOwner = (navArgs.AssociatedTabInstance as FrameworkElement)?.FindAscendant<ColumnViewBrowser>();
186+
}
152187

153188
base.OnNavigatedTo(eventArgs);
154189

@@ -296,6 +331,7 @@ public override void Dispose()
296331
base.Dispose();
297332
UnhookEvents();
298333
CommandsViewModel?.Dispose();
334+
columnsOwner = null;
299335
}
300336

301337
#endregion IDisposable
@@ -306,8 +342,21 @@ private async void FileList_SelectionChanged(object sender, SelectionChangedEven
306342

307343
if (SelectedItems.Count == 1 && App.AppModel.IsQuickLookAvailable)
308344
await QuickLookHelpers.ToggleQuickLook(ParentShellPageInstance, true);
345+
346+
if (e != null)
347+
{
348+
if (e.AddedItems.Count > 0)
349+
columnsOwner?.HandleSelectionChange(this);
350+
351+
if (e.RemovedItems.Count > 0 && openedFolderPresenter != null)
352+
{
353+
var presenter = openedFolderPresenter.FindDescendant<Grid>()!;
354+
presenter!.Background = this.Resources["ListViewItemBackgroundSelected"] as SolidColorBrush;
355+
}
356+
}
309357
}
310358

359+
311360
private void FileList_RightTapped(object sender, RightTappedRoutedEventArgs e)
312361
{
313362
if (!IsRenamingItem)
@@ -404,6 +453,8 @@ private async void FileList_PreviewKeyDown(object sender, KeyRoutedEventArgs e)
404453

405454
var currentBladeIndex = (ParentShellPageInstance is ColumnShellPage associatedColumnShellPage) ? associatedColumnShellPage.ColumnParams.Column : 0;
406455
this.FindAscendant<ColumnViewBrowser>()?.MoveFocusToPreviousBlade(currentBladeIndex);
456+
FileList.SelectedItem = null;
457+
ClearOpenedFolderSelectionIndicator();
407458
e.Handled = true;
408459
}
409460
else if (e.Key == VirtualKey.Right) // Right arrow: switch focus to next column
@@ -499,6 +550,7 @@ private void FileList_ItemTapped(object sender, TappedRoutedEventArgs e)
499550
var shiftPressed = InputKeyboardSource.GetKeyStateForCurrentThread(VirtualKey.Shift).HasFlag(CoreVirtualKeyStates.Down);
500551
var item = (e.OriginalSource as FrameworkElement)?.DataContext as ListedItem;
501552

553+
502554
// Allow for Ctrl+Shift selection
503555
if (ctrlPressed || shiftPressed)
504556
return;
@@ -568,5 +620,10 @@ protected override void BaseFolderSettings_LayoutModeChangeRequested(object send
568620
break;
569621
}
570622
}
623+
624+
internal void ClearSelectionIndicator()
625+
{
626+
FileList.SelectedItem = null;
627+
}
571628
}
572629
}

src/Files.App/Views/LayoutModes/ColumnViewBrowser.xaml.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,16 @@ public ColumnViewBrowser() : base()
2424
this.InitializeComponent();
2525
}
2626

27+
public void HandleSelectionChange(ColumnViewBase initiator)
28+
{
29+
foreach (var blade in ColumnHost.ActiveBlades)
30+
{
31+
var columnView = blade.FindDescendant<ColumnViewBase>();
32+
if (columnView != null && columnView != initiator)
33+
columnView.ClearSelectionIndicator();
34+
}
35+
}
36+
2737
protected override void HookEvents()
2838
{
2939
}

0 commit comments

Comments
 (0)