From 36b8de470a71f238702d47de1b15f3eba12454de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Burak=20Kaan=20K=C3=B6se?= Date: Wed, 27 Nov 2024 20:43:49 +0100 Subject: [PATCH] Fix delete key executing twice on mail list. --- Wino.Mail/Controls/Advanced/WinoListView.cs | 9 +++++++++ Wino.Mail/Views/MailListPage.xaml | 2 -- Wino.Mail/Views/MailListPage.xaml.cs | 14 ++++---------- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/Wino.Mail/Controls/Advanced/WinoListView.cs b/Wino.Mail/Controls/Advanced/WinoListView.cs index 5e195237..48990ea0 100644 --- a/Wino.Mail/Controls/Advanced/WinoListView.cs +++ b/Wino.Mail/Controls/Advanced/WinoListView.cs @@ -405,6 +405,15 @@ namespace Wino.Controls.Advanced { internalScrollviewer.ViewChanged -= InternalScrollVeiwerViewChanged; } + + foreach (var item in Items) + { + if (item is ThreadMailItemViewModel threadMailItemViewModel) + { + var threadListView = GetThreadInternalListView(threadMailItemViewModel); + threadListView?.Dispose(); + } + } } } } diff --git a/Wino.Mail/Views/MailListPage.xaml b/Wino.Mail/Views/MailListPage.xaml index b81b32fa..2bf17f71 100644 --- a/Wino.Mail/Views/MailListPage.xaml +++ b/Wino.Mail/Views/MailListPage.xaml @@ -181,7 +181,6 @@ IsThreadListView="True" ItemTemplate="{StaticResource ThreadSingleMailItemTemplate}" ItemsSource="{x:Bind ThreadItems}" - ProcessKeyboardAccelerators="ProcessMailItemKeyboardAccelerator" ScrollViewer.VerticalScrollBarVisibility="Hidden"> @@ -438,7 +437,6 @@ ItemTemplateSelector="{StaticResource MailItemDisplaySelector}" ItemsSource="{x:Bind MailCollectionViewSource.View, Mode=OneWay}" LoadMoreCommand="{x:Bind ViewModel.LoadMoreItemsCommand}" - ProcessKeyboardAccelerators="ProcessMailItemKeyboardAccelerator" ScrollViewer.VerticalScrollBarVisibility="Auto"> diff --git a/Wino.Mail/Views/MailListPage.xaml.cs b/Wino.Mail/Views/MailListPage.xaml.cs index d991b3ab..a3e028d2 100644 --- a/Wino.Mail/Views/MailListPage.xaml.cs +++ b/Wino.Mail/Views/MailListPage.xaml.cs @@ -62,6 +62,10 @@ namespace Wino.Views { base.OnNavigatedFrom(e); + // Dispose all WinoListView items. + + MailListView.Dispose(); + this.Bindings.StopTracking(); RenderingFrame.Navigate(typeof(IdlePage)); @@ -347,16 +351,6 @@ namespace Wino.Views SearchBar.PlaceholderText = Translator.SearchBarPlaceholder; } - private void ProcessMailItemKeyboardAccelerator(UIElement sender, ProcessKeyboardAcceleratorEventArgs args) - { - if (args.Key == Windows.System.VirtualKey.Delete) - { - args.Handled = true; - - ViewModel?.ExecuteMailOperationCommand?.Execute(MailOperation.SoftDelete); - } - } - /// /// Thread header is mail info display control and it can be dragged spearately out of ListView. /// We need to prepare a drag package for it from the items inside.