Skip to content

Commit cf569f2

Browse files
authored
Fix: Fixed issue where options in the conflicts dialog could change when scrolling (#14256)
1 parent d3f06b0 commit cf569f2

File tree

3 files changed

+10
-21
lines changed

3 files changed

+10
-21
lines changed

src/Files.App/Dialogs/FilesystemOperationDialog.xaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -104,15 +104,15 @@
104104
</Grid>
105105

106106
<!-- Options -->
107+
<!-- x:Load cannot be used (#14000) -->
107108
<ComboBox
108109
x:Name="ConflictOptions"
109110
Grid.Column="2"
110111
Width="200"
111112
HorizontalAlignment="Right"
112113
VerticalAlignment="Center"
113-
x:Load="{x:Bind IsConflict, Mode=OneWay}"
114-
Loaded="ConflictOptions_Loaded"
115-
SelectedIndex="{x:Bind ConflictResolveOption, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay, Converter={StaticResource ConflictResolveOptionToIndexConverter}}">
114+
SelectedIndex="{x:Bind ConflictResolveOption, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay, Converter={StaticResource ConflictResolveOptionToIndexConverter}}"
115+
Visibility="{x:Bind IsConflict, Mode=OneWay}">
116116
<ComboBox.Items>
117117
<ComboBoxItem Content="{helpers:ResourceString Name=GenerateNewName}" />
118118
<ComboBoxItem Content="{helpers:ResourceString Name=ReplaceExisting}" />

src/Files.App/Dialogs/FilesystemOperationDialog.xaml.cs

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -106,19 +106,6 @@ private void NameEdit_Loaded(object sender, RoutedEventArgs e)
106106
(sender as TextBox)?.Focus(FocusState.Programmatic);
107107
}
108108

109-
private void ConflictOptions_Loaded(object sender, RoutedEventArgs e)
110-
{
111-
if (sender is ComboBox comboBox)
112-
comboBox.SelectedIndex = ViewModel.LoadConflictResolveOption() switch
113-
{
114-
FileNameConflictResolveOptionType.None => -1,
115-
FileNameConflictResolveOptionType.GenerateNewName => 0,
116-
FileNameConflictResolveOptionType.ReplaceExisting => 1,
117-
FileNameConflictResolveOptionType.Skip => 2,
118-
_ => -1
119-
};
120-
}
121-
122109
private void FilesystemOperationDialog_Opened(ContentDialog sender, ContentDialogOpenedEventArgs args)
123110
{
124111
UpdateDialogLayout();

src/Files.Core/ViewModels/Dialogs/FileSystemDialog/FileSystemDialogViewModel.cs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,18 @@ private FileSystemDialogViewModel(FileSystemDialogMode fileSystemDialogMode, IEn
5959

6060
_dialogClosingCts = new();
6161

62+
_AggregatedResolveOption = _userSettingsService.GeneralSettingsService.ConflictsResolveOption;
63+
6264
_messenger = new WeakReferenceMessenger();
6365
_messenger.Register(this);
6466

6567
foreach (var item in items)
68+
{
69+
if (item is FileSystemDialogConflictItemViewModel conflictItem && conflictItem.IsConflict)
70+
conflictItem.ConflictResolveOption = _AggregatedResolveOption;
71+
6672
item.Messenger = _messenger;
73+
}
6774

6875
Items = new(items);
6976

@@ -111,11 +118,6 @@ public void Receive(FileSystemDialogOptionChangedMessage message)
111118
}
112119
}
113120

114-
public FileNameConflictResolveOptionType LoadConflictResolveOption()
115-
{
116-
return _userSettingsService.GeneralSettingsService.ConflictsResolveOption;
117-
}
118-
119121
public void SaveConflictResolveOption()
120122
{
121123
if (AggregatedResolveOption != FileNameConflictResolveOptionType.None &&

0 commit comments

Comments
 (0)