From 63a450fc5fa0f4b0583139a65d9cb84fc0675f72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81d=C3=A1m=20Kov=C3=A1cs?= Date: Tue, 31 Oct 2023 14:44:17 +0100 Subject: [PATCH] Fix filter stuck after RunOrOpen --- .../ViewModels/AppStateBase.cs | 8 +++++-- .../ViewModels/MainWindowViewModel.cs | 22 ++++++++++++++----- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/AppCommon/FileTime.App.Core/ViewModels/AppStateBase.cs b/src/AppCommon/FileTime.App.Core/ViewModels/AppStateBase.cs index aafb0b7..64778ca 100644 --- a/src/AppCommon/FileTime.App.Core/ViewModels/AppStateBase.cs +++ b/src/AppCommon/FileTime.App.Core/ViewModels/AppStateBase.cs @@ -33,7 +33,7 @@ public abstract partial class AppStateBase : IAppState protected AppStateBase() { - _rapidTravelText = new (""); + _rapidTravelText = new(""); RapidTravelText = _rapidTravelText.DistinctUntilChanged(); RapidTravelTextDebounced = RapidTravelText .Debounce(v => @@ -79,7 +79,11 @@ public abstract partial class AppStateBase : IAppState public void SetSearchText(string? searchText) => _searchText.OnNext(searchText); - public async Task SwitchViewModeAsync(ViewMode newViewMode) => await _viewMode.SetValue(newViewMode); + public async Task SwitchViewModeAsync(ViewMode newViewMode) + { + if (newViewMode != Models.Enums.ViewMode.RapidTravel) await SetRapidTravelTextAsync(null); + await _viewMode.SetValue(newViewMode); + } public async Task SetSelectedTabAsync(ITabViewModel tabToSelect) => await _selectedTab.SetValue(tabToSelect); public async Task SetRapidTravelTextAsync(string? text) => await _rapidTravelText.SetValue(text); diff --git a/src/GuiApp/Avalonia/FileTime.GuiApp.App/ViewModels/MainWindowViewModel.cs b/src/GuiApp/Avalonia/FileTime.GuiApp.App/ViewModels/MainWindowViewModel.cs index 491e198..9cbe74d 100644 --- a/src/GuiApp/Avalonia/FileTime.GuiApp.App/ViewModels/MainWindowViewModel.cs +++ b/src/GuiApp/Avalonia/FileTime.GuiApp.App/ViewModels/MainWindowViewModel.cs @@ -54,7 +54,7 @@ public partial class MainWindowViewModel : IMainWindowViewModel public bool Loading => false; public IObservable MainFont => _fontService.MainFont.Select(x => x ?? ""); public DeclarativeProperty FatalError { get; } = new(null); - public IReadOnlyList TransparencyLevelHint { get; } = new[] {WindowTransparencyLevel.Blur}; + public IReadOnlyList TransparencyLevelHint { get; } = new[] { WindowTransparencyLevel.Blur }; public IGuiAppState AppState => _appState; public DeclarativeProperty Title { get; } = new(string.Empty); public Thickness IconStatusPanelMargin { get; private set; } = new(20, 10, 10, 10); @@ -90,10 +90,10 @@ public partial class MainWindowViewModel : IMainWindowViewModel #endif Title.SetValueSafe(title); - + var localDrives = _rootDriveInfoService.RootDriveInfos.Filtering(r => r.DriveType != DriveType.Network); var networkDrives = _rootDriveInfoService.RootDriveInfos.Filtering(r => r.DriveType == DriveType.Network); - + localDrives.For(_rootDriveInfosConsumer); networkDrives.For(_rootDriveInfosConsumer); @@ -102,7 +102,7 @@ public partial class MainWindowViewModel : IMainWindowViewModel _modalService.AllModalClosed += (_, _) => FocusDefaultElement?.Invoke(); _instanceMessageHandler.ShowWindow += () => ShowWindow?.Invoke(); - + Task.Run(async () => { await Task.Delay(100); @@ -110,8 +110,18 @@ public partial class MainWindowViewModel : IMainWindowViewModel }); } - public void ProcessKeyDown(KeyEventArgs e) - => _keyInputHandlerService.ProcessKeyDown(e); + public void ProcessKeyDown(KeyEventArgs e) => + Task.Run(async () => + { + try + { + await _keyInputHandlerService.ProcessKeyDown(e); + } + catch (Exception ex) + { + _logger.LogError(ex, "Error while processing key down event"); + } + }); public async Task OpenContainerByFullName(FullName fullName) {