Skip to content

Commit f7ba940

Browse files
authored
Fix: Fixed an issue where the layout flyout sometimes didn't highlight the selected layout (#13011)
1 parent 796ba9b commit f7ba940

File tree

2 files changed

+36
-25
lines changed

2 files changed

+36
-25
lines changed

src/Files.App/UserControls/InnerNavigationToolbar.xaml

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -642,13 +642,13 @@
642642
Command="{x:Bind Commands.LayoutDetails}"
643643
CornerRadius="{StaticResource ControlCornerRadius}"
644644
GroupName="LayoutRadio"
645-
IsChecked="{x:Bind Commands.LayoutDetails.IsOn, Mode=OneWay}"
645+
IsChecked="{x:Bind ViewModel.IsDetailsLayout, Mode=OneWay}"
646646
Style="{StaticResource DefaultToggleButtonStyle}"
647647
ToolTipService.ToolTip="{x:Bind Commands.LayoutDetails.LabelWithHotKey, Mode=OneWay}">
648648
<local:OpacityIcon
649649
Width="16"
650650
Height="16"
651-
IsSelected="{x:Bind Commands.LayoutDetails.IsOn, Mode=OneWay}"
651+
IsSelected="{x:Bind ViewModel.IsDetailsLayout, Mode=OneWay}"
652652
Style="{x:Bind Commands.LayoutDetails.OpacityStyle}" />
653653
</RadioButton>
654654

@@ -674,13 +674,13 @@
674674
Command="{x:Bind Commands.LayoutColumns}"
675675
CornerRadius="{StaticResource ControlCornerRadius}"
676676
GroupName="LayoutRadio"
677-
IsChecked="{x:Bind Commands.LayoutColumns.IsOn, Mode=OneWay}"
677+
IsChecked="{x:Bind ViewModel.IsColumnLayout, Mode=OneWay}"
678678
Style="{StaticResource DefaultToggleButtonStyle}"
679679
ToolTipService.ToolTip="{x:Bind Commands.LayoutColumns.LabelWithHotKey, Mode=OneWay}">
680680
<local:OpacityIcon
681681
Width="16"
682682
Height="16"
683-
IsSelected="{x:Bind Commands.LayoutColumns.IsOn, Mode=OneWay}"
683+
IsSelected="{x:Bind ViewModel.IsColumnLayout, Mode=OneWay}"
684684
Style="{x:Bind Commands.LayoutColumns.OpacityStyle}" />
685685
</RadioButton>
686686

@@ -706,13 +706,13 @@
706706
Command="{x:Bind Commands.LayoutTiles}"
707707
CornerRadius="{StaticResource ControlCornerRadius}"
708708
GroupName="LayoutRadio"
709-
IsChecked="{x:Bind Commands.LayoutTiles.IsOn, Mode=OneWay}"
709+
IsChecked="{x:Bind ViewModel.IsTilesLayout, Mode=OneWay}"
710710
Style="{StaticResource DefaultToggleButtonStyle}"
711711
ToolTipService.ToolTip="{x:Bind Commands.LayoutTiles.LabelWithHotKey, Mode=OneWay}">
712712
<local:OpacityIcon
713713
Width="16"
714714
Height="16"
715-
IsSelected="{x:Bind Commands.LayoutTiles.IsOn, Mode=OneWay}"
715+
IsSelected="{x:Bind ViewModel.IsTilesLayout, Mode=OneWay}"
716716
Style="{x:Bind Commands.LayoutTiles.OpacityStyle}" />
717717
</RadioButton>
718718

@@ -738,13 +738,13 @@
738738
Command="{x:Bind Commands.LayoutGridSmall}"
739739
CornerRadius="{StaticResource ControlCornerRadius}"
740740
GroupName="LayoutRadio"
741-
IsChecked="{x:Bind Commands.LayoutGridSmall.IsOn, Mode=OneWay}"
741+
IsChecked="{x:Bind ViewModel.IsGridSmallLayout, Mode=OneWay}"
742742
Style="{StaticResource DefaultToggleButtonStyle}"
743743
ToolTipService.ToolTip="{x:Bind Commands.LayoutGridSmall.LabelWithHotKey, Mode=OneWay}">
744744
<local:OpacityIcon
745745
Width="16"
746746
Height="16"
747-
IsSelected="{x:Bind Commands.LayoutGridSmall.IsOn, Mode=OneWay}"
747+
IsSelected="{x:Bind ViewModel.IsGridSmallLayout, Mode=OneWay}"
748748
Style="{x:Bind Commands.LayoutGridSmall.OpacityStyle}" />
749749
</RadioButton>
750750

@@ -770,13 +770,13 @@
770770
Command="{x:Bind Commands.LayoutGridMedium}"
771771
CornerRadius="{StaticResource ControlCornerRadius}"
772772
GroupName="LayoutRadio"
773-
IsChecked="{x:Bind Commands.LayoutGridMedium.IsOn, Mode=OneWay}"
773+
IsChecked="{x:Bind ViewModel.IsGridMediumLayout, Mode=OneWay}"
774774
Style="{StaticResource DefaultToggleButtonStyle}"
775775
ToolTipService.ToolTip="{x:Bind Commands.LayoutGridMedium.LabelWithHotKey, Mode=OneWay}">
776776
<local:OpacityIcon
777777
Width="16"
778778
Height="16"
779-
IsSelected="{x:Bind Commands.LayoutGridMedium.IsOn, Mode=OneWay}"
779+
IsSelected="{x:Bind ViewModel.IsGridMediumLayout, Mode=OneWay}"
780780
Style="{x:Bind Commands.LayoutGridMedium.OpacityStyle}" />
781781
</RadioButton>
782782

@@ -812,13 +812,13 @@
812812
Command="{x:Bind Commands.LayoutGridLarge}"
813813
CornerRadius="{StaticResource ControlCornerRadius}"
814814
GroupName="LayoutRadio"
815-
IsChecked="{x:Bind Commands.LayoutGridLarge.IsOn, Mode=OneWay}"
815+
IsChecked="{x:Bind ViewModel.IsGridLargeLayout, Mode=OneWay}"
816816
Style="{StaticResource DefaultToggleButtonStyle}"
817817
ToolTipService.ToolTip="{x:Bind Commands.LayoutGridLarge.LabelWithHotKey, Mode=OneWay}">
818818
<local:OpacityIcon
819819
Width="16"
820820
Height="16"
821-
IsSelected="{x:Bind Commands.LayoutGridLarge.IsOn, Mode=OneWay}"
821+
IsSelected="{x:Bind ViewModel.IsGridLargeLayout, Mode=OneWay}"
822822
Style="{x:Bind Commands.LayoutGridLarge.OpacityStyle}" />
823823
</RadioButton>
824824

src/Files.App/ViewModels/UserControls/ToolbarViewModel.cs

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -840,20 +840,24 @@ private void FolderSettings_PropertyChanged(object? sender, PropertyChangedEvent
840840
{
841841
case nameof(FolderSettingsViewModel.GridViewSize):
842842
case nameof(FolderSettingsViewModel.LayoutMode):
843+
LayoutOpacityIcon = instanceViewModel.FolderSettings.LayoutMode switch
843844
{
844-
LayoutOpacityIcon = instanceViewModel.FolderSettings.LayoutMode switch
845-
{
846-
FolderLayoutModes.TilesView => Commands.LayoutTiles.OpacityStyle!,
847-
FolderLayoutModes.ColumnView => Commands.LayoutColumns.OpacityStyle!,
848-
FolderLayoutModes.GridView =>
849-
instanceViewModel.FolderSettings.GridViewSize <= Constants.Browser.GridViewBrowser.GridViewSizeSmall
850-
? Commands.LayoutGridSmall.OpacityStyle!
851-
: instanceViewModel.FolderSettings.GridViewSize <= Constants.Browser.GridViewBrowser.GridViewSizeMedium
852-
? Commands.LayoutGridMedium.OpacityStyle!
853-
: Commands.LayoutGridLarge.OpacityStyle!,
854-
_ => Commands.LayoutDetails.OpacityStyle!
855-
};
856-
}
845+
FolderLayoutModes.TilesView => Commands.LayoutTiles.OpacityStyle!,
846+
FolderLayoutModes.ColumnView => Commands.LayoutColumns.OpacityStyle!,
847+
FolderLayoutModes.GridView =>
848+
instanceViewModel.FolderSettings.GridViewSize <= Constants.Browser.GridViewBrowser.GridViewSizeSmall
849+
? Commands.LayoutGridSmall.OpacityStyle!
850+
: instanceViewModel.FolderSettings.GridViewSize <= Constants.Browser.GridViewBrowser.GridViewSizeMedium
851+
? Commands.LayoutGridMedium.OpacityStyle!
852+
: Commands.LayoutGridLarge.OpacityStyle!,
853+
_ => Commands.LayoutDetails.OpacityStyle!
854+
};
855+
OnPropertyChanged(nameof(IsTilesLayout));
856+
OnPropertyChanged(nameof(IsColumnLayout));
857+
OnPropertyChanged(nameof(IsGridSmallLayout));
858+
OnPropertyChanged(nameof(IsGridMediumLayout));
859+
OnPropertyChanged(nameof(IsGridLargeLayout));
860+
OnPropertyChanged(nameof(IsDetailsLayout));
857861
break;
858862
}
859863
}
@@ -902,6 +906,13 @@ public List<ListedItem> SelectedItems
902906
public bool IsInfFile => SelectedItems is not null && SelectedItems.Count == 1 && FileExtensionHelpers.IsInfFile(SelectedItems.First().FileExtension) && !InstanceViewModel.IsPageTypeRecycleBin;
903907
public bool IsFont => SelectedItems is not null && SelectedItems.Any() && SelectedItems.All(x => FileExtensionHelpers.IsFontFile(x.FileExtension)) && !InstanceViewModel.IsPageTypeRecycleBin;
904908

909+
public bool IsTilesLayout => instanceViewModel.FolderSettings.LayoutMode is FolderLayoutModes.TilesView;
910+
public bool IsColumnLayout => instanceViewModel.FolderSettings.LayoutMode is FolderLayoutModes.ColumnView;
911+
public bool IsGridSmallLayout => instanceViewModel.FolderSettings.LayoutMode is FolderLayoutModes.GridView && instanceViewModel.FolderSettings.GridViewSize <= Constants.Browser.GridViewBrowser.GridViewSizeSmall;
912+
public bool IsGridMediumLayout => instanceViewModel.FolderSettings.LayoutMode is FolderLayoutModes.GridView && !IsGridSmallLayout && instanceViewModel.FolderSettings.GridViewSize <= Constants.Browser.GridViewBrowser.GridViewSizeMedium;
913+
public bool IsGridLargeLayout => instanceViewModel.FolderSettings.LayoutMode is FolderLayoutModes.GridView && !IsGridSmallLayout && !IsGridMediumLayout;
914+
public bool IsDetailsLayout => !IsTilesLayout && !IsColumnLayout && !IsGridSmallLayout && !IsGridMediumLayout && !IsGridLargeLayout;
915+
905916
public string ExtractToText
906917
=> IsSelectionArchivesOnly ? SelectedItems.Count > 1 ? string.Format("ExtractToChildFolder".GetLocalizedResource(), $"*{Path.DirectorySeparatorChar}") : string.Format("ExtractToChildFolder".GetLocalizedResource() + "\\", Path.GetFileNameWithoutExtension(selectedItems.First().Name)) : "ExtractToChildFolder".GetLocalizedResource();
907918

0 commit comments

Comments
 (0)