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 };