From e3445ab15d105dde0d0433677262b10fef7c37c8 Mon Sep 17 00:00:00 2001 From: Danya Ulianchenko Date: Mon, 12 Oct 2026 00:05:53 +0300 Subject: [PATCH] BASE 1.2.2.1 Fix --- Core/TabManager.cs | 12 ++++-------- MainWindow.xaml.cs | 4 ++-- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/Core/TabManager.cs b/Core/TabManager.cs index d1bc319..870d0b0 100644 --- a/Core/TabManager.cs +++ b/Core/TabManager.cs @@ -27,7 +27,6 @@ public sealed class TabManager : IAsyncDisposable private bool _navigationInProgress; private bool _switchInProgress; private bool _restoringSession; - private readonly List _sessionOrder = new(); private readonly string _blockedElementsPath = Path.Combine(AppContext.BaseDirectory, "blocked-elements.json"); private readonly Dictionary> _blockedElements; @@ -82,16 +81,13 @@ public sealed class TabManager : IAsyncDisposable _restoringSession = false; SessionReady = true; } - _sessionOrder.AddRange(Tabs); await SaveSessionAsync(); } public async Task SaveSessionAsync() { - var orderedTabs = _sessionOrder.Where(Tabs.Contains).Concat(Tabs.Where(tab => !_sessionOrder.Contains(tab))); - var snapshotOrder = orderedTabs.ToList(); - var activeIndex = ActiveTab is not null ? snapshotOrder.IndexOf(ActiveTab) : 0; - await SessionStore.SaveAsync(snapshotOrder, activeIndex); + var activeIndex = ActiveTab is not null ? Tabs.IndexOf(ActiveTab) : 0; + await SessionStore.SaveAsync(Tabs, activeIndex); } private async Task RestoreSessionOrDefaultAsync() @@ -129,7 +125,6 @@ public sealed class TabManager : IAsyncDisposable { var tab = new BrowserTab(NormalizeAddress(address)); Tabs.Add(tab); - if (SessionReady) _sessionOrder.Add(tab); await SwitchToTabAsync(tab); return tab; } @@ -323,13 +318,14 @@ public sealed class TabManager : IAsyncDisposable await SaveSessionAsync(); } - public void MoveTab(BrowserTab tab, int targetIndex) + public async Task MoveTabAsync(BrowserTab tab, int targetIndex) { var sourceIndex = Tabs.IndexOf(tab); if (sourceIndex < 0 || Tabs.Count < 2) return; targetIndex = Math.Clamp(targetIndex, 0, Tabs.Count - 1); if (sourceIndex == targetIndex) return; Tabs.Move(sourceIndex, targetIndex); + await SaveSessionAsync(); } public async ValueTask DisposeAsync() diff --git a/MainWindow.xaml.cs b/MainWindow.xaml.cs index ca8c260..4149b42 100644 --- a/MainWindow.xaml.cs +++ b/MainWindow.xaml.cs @@ -415,14 +415,14 @@ public partial class MainWindow : Window e.Handled = true; } - private void TabStrip_Drop(object sender, WpfDragEventArgs e) + private async void TabStrip_Drop(object sender, WpfDragEventArgs e) { if (_tabManager is null || !e.Data.GetDataPresent(typeof(BrowserTab))) return; var source = e.Data.GetData(typeof(BrowserTab)) as BrowserTab; var target = FindTabItem(e.OriginalSource as DependencyObject)?.DataContext as BrowserTab; if (source is null || target is null || ReferenceEquals(source, target)) return; var targetIndex = _tabManager.Tabs.IndexOf(target); - if (targetIndex >= 0) _tabManager.MoveTab(source, targetIndex); + if (targetIndex >= 0) await _tabManager.MoveTabAsync(source, targetIndex); e.Handled = true; }