From 602bf280bad43887dfdafef95daef319f39f0038 Mon Sep 17 00:00:00 2001 From: haven1433 Date: Thu, 26 Dec 2019 10:34:44 -0600 Subject: [PATCH] Refresh a tab when it switches in --- src/HexManiac.Core/ViewModels/EditorViewModel.cs | 1 + src/HexManiac.Core/ViewModels/ITabContent.cs | 2 ++ .../ViewModels/SearchResultsViewPort.cs | 2 ++ src/HexManiac.Tests/GeneralAppTests.cs | 14 ++++++++++++++ 4 files changed, 19 insertions(+) diff --git a/src/HexManiac.Core/ViewModels/EditorViewModel.cs b/src/HexManiac.Core/ViewModels/EditorViewModel.cs index 6ad55b53..224817c8 100644 --- a/src/HexManiac.Core/ViewModels/EditorViewModel.cs +++ b/src/HexManiac.Core/ViewModels/EditorViewModel.cs @@ -208,6 +208,7 @@ namespace HavenSoft.HexManiac.Core.ViewModels { if (TryUpdate(ref selectedIndex, value)) { findPrevious.CanExecuteChanged.Invoke(findPrevious, EventArgs.Empty); findNext.CanExecuteChanged.Invoke(findNext, EventArgs.Empty); + if (selectedIndex >= 0 && selectedIndex < tabs.Count) tabs[selectedIndex].Refresh(); UpdateGotoViewModel(); foreach (var edit in QuickEdits) edit.TabChanged(); } diff --git a/src/HexManiac.Core/ViewModels/ITabContent.cs b/src/HexManiac.Core/ViewModels/ITabContent.cs index 8f873d5a..4547a680 100644 --- a/src/HexManiac.Core/ViewModels/ITabContent.cs +++ b/src/HexManiac.Core/ViewModels/ITabContent.cs @@ -27,5 +27,7 @@ namespace HavenSoft.HexManiac.Core.ViewModels { event EventHandler RequestTabChange; event EventHandler RequestDelayedWork; event EventHandler RequestMenuClose; + + void Refresh(); } } diff --git a/src/HexManiac.Core/ViewModels/SearchResultsViewPort.cs b/src/HexManiac.Core/ViewModels/SearchResultsViewPort.cs index 68cef362..114765c8 100644 --- a/src/HexManiac.Core/ViewModels/SearchResultsViewPort.cs +++ b/src/HexManiac.Core/ViewModels/SearchResultsViewPort.cs @@ -214,6 +214,8 @@ namespace HavenSoft.HexManiac.Core.ViewModels { }) { ShortcutText = "Ctrl+Click" } }; } + public void Refresh() { } + private void NotifyCollectionChanged() { if (children.Count == 0) return; UpdateHeaders(); diff --git a/src/HexManiac.Tests/GeneralAppTests.cs b/src/HexManiac.Tests/GeneralAppTests.cs index 54425c79..ccba6394 100644 --- a/src/HexManiac.Tests/GeneralAppTests.cs +++ b/src/HexManiac.Tests/GeneralAppTests.cs @@ -446,6 +446,20 @@ namespace HavenSoft.HexManiac.Tests { Assert.Equal(0x100, newTab.DataOffset); // the new tab is scrolled to the desired location } + [Fact] + public void TabGetsRefreshedWhenSwitchedIn() { + int count = 0; + var tab1 = new StubTabContent { Refresh = () => count++ }; + var tab2 = new StubTabContent(); + editor.Add(tab1); + count = 0; + + tab1.RequestTabChange?.Invoke(tab1, tab2); + editor.SelectedIndex = 0; + + Assert.Equal(1, count); + } + private StubTabContent CreateClosableTab() { var tab = new StubTabContent(); var close = new StubCommand { CanExecute = arg => true };