Index: Core/Common/src/Core.Common.Gui/Forms/ViewHost/AvalonDockViewHost.xaml.cs =================================================================== diff -u -r569a286badd9b3494f5465cc2767a8cf6a77f618 -r4f023f921130657163dbbad9b13e765e6d37cbb5 --- Core/Common/src/Core.Common.Gui/Forms/ViewHost/AvalonDockViewHost.xaml.cs (.../AvalonDockViewHost.xaml.cs) (revision 569a286badd9b3494f5465cc2767a8cf6a77f618) +++ Core/Common/src/Core.Common.Gui/Forms/ViewHost/AvalonDockViewHost.xaml.cs (.../AvalonDockViewHost.xaml.cs) (revision 4f023f921130657163dbbad9b13e765e6d37cbb5) @@ -48,6 +48,7 @@ public event EventHandler ActiveDocumentViewChanged; public event EventHandler ActiveViewChanged; public event EventHandler ViewOpened; + public event EventHandler ViewBroughtToFront; public event EventHandler ViewClosed; /// @@ -216,6 +217,8 @@ : null; BringToFront(layoutContent); + + OnViewBroughtToFront(view); } public void SetImage(IView view, Image image) @@ -270,6 +273,11 @@ ViewOpened?.Invoke(this, new ViewChangeEventArgs(view)); } + private void OnViewBroughtToFront(IView view) + { + ViewBroughtToFront?.Invoke(this, new ViewChangeEventArgs(view)); + } + private void OnViewClosed(IView view) { ViewClosed?.Invoke(this, new ViewChangeEventArgs(view)); Index: Core/Common/src/Core.Common.Gui/Forms/ViewHost/IViewHost.cs =================================================================== diff -u -rfbf0127601ef799db5ec78430746c6aa23eab218 -r4f023f921130657163dbbad9b13e765e6d37cbb5 --- Core/Common/src/Core.Common.Gui/Forms/ViewHost/IViewHost.cs (.../IViewHost.cs) (revision fbf0127601ef799db5ec78430746c6aa23eab218) +++ Core/Common/src/Core.Common.Gui/Forms/ViewHost/IViewHost.cs (.../IViewHost.cs) (revision 4f023f921130657163dbbad9b13e765e6d37cbb5) @@ -52,6 +52,11 @@ event EventHandler ViewOpened; /// + /// Fired when an already opened document view or tool view is brought to front. + /// + event EventHandler ViewBroughtToFront; + + /// /// Fired when a document view or a tool view has been closed. /// event EventHandler ViewClosed; Index: Core/Common/test/Core.Common.Gui.Test/Forms/ViewHost/AvalonDockViewHostTest.cs =================================================================== diff -u -r2f093d7c5de7c58974002da72ed60c0358409480 -r4f023f921130657163dbbad9b13e765e6d37cbb5 --- Core/Common/test/Core.Common.Gui.Test/Forms/ViewHost/AvalonDockViewHostTest.cs (.../AvalonDockViewHostTest.cs) (revision 2f093d7c5de7c58974002da72ed60c0358409480) +++ Core/Common/test/Core.Common.Gui.Test/Forms/ViewHost/AvalonDockViewHostTest.cs (.../AvalonDockViewHostTest.cs) (revision 4f023f921130657163dbbad9b13e765e6d37cbb5) @@ -380,11 +380,12 @@ } [Test] - public void BringToFront_ActiveDocumentView_ActiveViewNotAffectedAndNoActiveViewEventsFired() + public void BringToFront_ActiveDocumentView_ViewBroughtToFrontFiredButActiveViewNotAffectedAndNoActiveViewEventsFired() { // Setup var testView1 = new TestView(); var testView2 = new TestView(); + var viewBroughtToFrontCounter = 0; var activeDocumentViewChangingCounter = 0; var activeDocumentViewChangedCounter = 0; var activeViewChangedCounter = 0; @@ -395,6 +396,7 @@ avalonDockViewHost.AddDocumentView(testView2); SetActiveView(avalonDockViewHost, testView1); + avalonDockViewHost.ViewBroughtToFront += (sender, args) => viewBroughtToFrontCounter++; avalonDockViewHost.ActiveDocumentViewChanging += (sender, args) => activeDocumentViewChangingCounter++; avalonDockViewHost.ActiveDocumentViewChanged += (sender, args) => activeDocumentViewChangedCounter++; avalonDockViewHost.ActiveViewChanged += (sender, args) => activeViewChangedCounter++; @@ -403,6 +405,7 @@ avalonDockViewHost.BringToFront(testView1); // Assert + Assert.AreEqual(1, viewBroughtToFrontCounter); Assert.AreEqual(0, activeDocumentViewChangingCounter); Assert.AreEqual(0, activeDocumentViewChangedCounter); Assert.AreEqual(0, activeViewChangedCounter); @@ -412,11 +415,12 @@ } [Test] - public void BringToFront_NonActiveDocumentView_ActiveViewNotAffectedAndNoActiveViewEventsFired() + public void BringToFront_NonActiveDocumentView_ViewBroughtToFrontFiredButActiveViewNotAffectedAndNoActiveViewEventsFired() { // Setup var testView1 = new TestView(); var testView2 = new TestView(); + var viewBroughtToFrontCounter = 0; var activeDocumentViewChangingCounter = 0; var activeDocumentViewChangedCounter = 0; var activeViewChangedCounter = 0; @@ -427,6 +431,7 @@ avalonDockViewHost.AddDocumentView(testView2); SetActiveView(avalonDockViewHost, testView2); + avalonDockViewHost.ViewBroughtToFront += (sender, args) => viewBroughtToFrontCounter++; avalonDockViewHost.ActiveDocumentViewChanging += (sender, args) => activeDocumentViewChangingCounter++; avalonDockViewHost.ActiveDocumentViewChanged += (sender, args) => activeDocumentViewChangedCounter++; avalonDockViewHost.ActiveViewChanged += (sender, args) => activeViewChangedCounter++; @@ -435,6 +440,7 @@ avalonDockViewHost.BringToFront(testView1); // Assert + Assert.AreEqual(1, viewBroughtToFrontCounter); Assert.AreEqual(0, activeDocumentViewChangingCounter); Assert.AreEqual(0, activeDocumentViewChangedCounter); Assert.AreEqual(0, activeViewChangedCounter); @@ -709,11 +715,12 @@ } [Test] - public void BringToFront_ActiveToolView_ActiveViewNotAffectedAndNoActiveViewEventsFired() + public void BringToFront_ActiveToolView_ViewBroughtToFrontFiredButActiveViewNotAffectedAndNoActiveViewEventsFired() { // Setup var testView1 = new TestView(); var testView2 = new TestView(); + var viewBroughtToFrontCounter = 0; var activeDocumentViewChangingCounter = 0; var activeDocumentViewChangedCounter = 0; var activeViewChangedCounter = 0; @@ -724,6 +731,7 @@ avalonDockViewHost.AddToolView(testView2, ToolViewLocation.Bottom); SetActiveView(avalonDockViewHost, testView1); + avalonDockViewHost.ViewBroughtToFront += (sender, args) => viewBroughtToFrontCounter++; avalonDockViewHost.ActiveDocumentViewChanging += (sender, args) => activeDocumentViewChangingCounter++; avalonDockViewHost.ActiveDocumentViewChanged += (sender, args) => activeDocumentViewChangedCounter++; avalonDockViewHost.ActiveViewChanged += (sender, args) => activeViewChangedCounter++; @@ -732,6 +740,7 @@ avalonDockViewHost.BringToFront(testView1); // Assert + Assert.AreEqual(1, viewBroughtToFrontCounter); Assert.AreEqual(0, activeDocumentViewChangingCounter); Assert.AreEqual(0, activeDocumentViewChangedCounter); Assert.AreEqual(0, activeViewChangedCounter); @@ -740,11 +749,12 @@ } [Test] - public void BringToFront_NonActiveToolView_ActiveViewNotAffectedAndNoActiveViewEventsFired() + public void BringToFront_NonActiveToolView_ViewBroughtToFrontFiredButActiveViewNotAffectedAndNoActiveViewEventsFired() { // Setup var testView1 = new TestView(); var testView2 = new TestView(); + var viewBroughtToFrontCounter = 0; var activeDocumentViewChangingCounter = 0; var activeDocumentViewChangedCounter = 0; var activeViewChangedCounter = 0; @@ -755,6 +765,7 @@ avalonDockViewHost.AddToolView(testView2, ToolViewLocation.Bottom); SetActiveView(avalonDockViewHost, testView2); + avalonDockViewHost.ViewBroughtToFront += (sender, args) => viewBroughtToFrontCounter++; avalonDockViewHost.ActiveDocumentViewChanging += (sender, args) => activeDocumentViewChangingCounter++; avalonDockViewHost.ActiveDocumentViewChanged += (sender, args) => activeDocumentViewChangedCounter++; avalonDockViewHost.ActiveViewChanged += (sender, args) => activeViewChangedCounter++; @@ -763,6 +774,7 @@ avalonDockViewHost.BringToFront(testView1); // Assert + Assert.AreEqual(1, viewBroughtToFrontCounter); Assert.AreEqual(0, activeDocumentViewChangingCounter); Assert.AreEqual(0, activeDocumentViewChangedCounter); Assert.AreEqual(0, activeViewChangedCounter); Index: Core/Plugins/src/Core.Plugins.Chart/ChartPlugin.cs =================================================================== diff -u -r75f679b341a9a7b82f35a623e6409ed28c74632f -r4f023f921130657163dbbad9b13e765e6d37cbb5 --- Core/Plugins/src/Core.Plugins.Chart/ChartPlugin.cs (.../ChartPlugin.cs) (revision 75f679b341a9a7b82f35a623e6409ed28c74632f) +++ Core/Plugins/src/Core.Plugins.Chart/ChartPlugin.cs (.../ChartPlugin.cs) (revision 4f023f921130657163dbbad9b13e765e6d37cbb5) @@ -58,6 +58,7 @@ chartLegendController.ToggleView(); Gui.ViewHost.ViewOpened += OnViewOpened; + Gui.ViewHost.ViewBroughtToFront += OnViewBroughtToFront; Gui.ViewHost.ViewClosed += OnViewClosed; Gui.ViewHost.ActiveDocumentViewChanged += OnActiveDocumentViewChanged; activated = true; @@ -78,6 +79,7 @@ if (activated) { Gui.ViewHost.ViewOpened -= OnViewOpened; + Gui.ViewHost.ViewBroughtToFront -= OnViewBroughtToFront; Gui.ViewHost.ViewClosed -= OnViewClosed; Gui.ViewHost.ActiveDocumentViewChanged -= OnActiveDocumentViewChanged; } @@ -112,6 +114,16 @@ }; } + private void OnViewOpened(object sender, ViewChangeEventArgs e) + { + UpdateComponentsForView(e.View as IChartView); + } + + private void OnViewBroughtToFront(object sender, ViewChangeEventArgs e) + { + UpdateComponentsForView(e.View as IChartView); + } + private void OnViewClosed(object sender, ViewChangeEventArgs e) { if (ReferenceEquals(currentChartView, e.View)) @@ -120,11 +132,6 @@ } } - private void OnViewOpened(object sender, ViewChangeEventArgs e) - { - UpdateComponentsForView(e.View as IChartView); - } - private void OnActiveDocumentViewChanged(object sender, EventArgs e) { UpdateComponentsForActiveDocumentView(); Index: Core/Plugins/src/Core.Plugins.Map/MapPlugin.cs =================================================================== diff -u -r2c5e077a0f546af6d6379eb93111fd8366fc2224 -r4f023f921130657163dbbad9b13e765e6d37cbb5 --- Core/Plugins/src/Core.Plugins.Map/MapPlugin.cs (.../MapPlugin.cs) (revision 2c5e077a0f546af6d6379eb93111fd8366fc2224) +++ Core/Plugins/src/Core.Plugins.Map/MapPlugin.cs (.../MapPlugin.cs) (revision 4f023f921130657163dbbad9b13e765e6d37cbb5) @@ -61,6 +61,7 @@ mapLegendController.ToggleView(); Gui.ViewHost.ViewOpened += OnViewOpened; + Gui.ViewHost.ViewBroughtToFront += OnViewBroughtToFront; Gui.ViewHost.ViewClosed += OnViewClosed; Gui.ViewHost.ActiveDocumentViewChanged += OnActiveDocumentViewChanged; activated = true; @@ -94,6 +95,7 @@ if (activated) { Gui.ViewHost.ViewOpened -= OnViewOpened; + Gui.ViewHost.ViewBroughtToFront -= OnViewBroughtToFront; Gui.ViewHost.ViewClosed -= OnViewClosed; Gui.ViewHost.ActiveDocumentViewChanged -= OnActiveDocumentViewChanged; } @@ -131,6 +133,11 @@ UpdateComponentsForView(view); } + private void OnViewBroughtToFront(object sender, ViewChangeEventArgs e) + { + UpdateComponentsForView(e.View as IMapView); + } + private void OnViewClosed(object sender, ViewChangeEventArgs e) { if (ReferenceEquals(currentMapView, e.View)) Index: Core/Plugins/test/Core.Plugins.Chart.Test/ChartPluginTest.cs =================================================================== diff -u -r2c5e077a0f546af6d6379eb93111fd8366fc2224 -r4f023f921130657163dbbad9b13e765e6d37cbb5 --- Core/Plugins/test/Core.Plugins.Chart.Test/ChartPluginTest.cs (.../ChartPluginTest.cs) (revision 2c5e077a0f546af6d6379eb93111fd8366fc2224) +++ Core/Plugins/test/Core.Plugins.Chart.Test/ChartPluginTest.cs (.../ChartPluginTest.cs) (revision 4f023f921130657163dbbad9b13e765e6d37cbb5) @@ -93,6 +93,8 @@ viewHost.Expect(vm => vm.ActiveDocumentViewChanged -= null).IgnoreArguments(); viewHost.Expect(vm => vm.ViewOpened += null).IgnoreArguments(); viewHost.Expect(vm => vm.ViewOpened -= null).IgnoreArguments(); + viewHost.Expect(vm => vm.ViewBroughtToFront += null).IgnoreArguments(); + viewHost.Expect(vm => vm.ViewBroughtToFront -= null).IgnoreArguments(); viewHost.Expect(vm => vm.ViewClosed += null).IgnoreArguments(); viewHost.Expect(vm => vm.ViewClosed -= null).IgnoreArguments(); Index: Core/Plugins/test/Core.Plugins.Map.Test/MapPluginTest.cs =================================================================== diff -u -r75f679b341a9a7b82f35a623e6409ed28c74632f -r4f023f921130657163dbbad9b13e765e6d37cbb5 --- Core/Plugins/test/Core.Plugins.Map.Test/MapPluginTest.cs (.../MapPluginTest.cs) (revision 75f679b341a9a7b82f35a623e6409ed28c74632f) +++ Core/Plugins/test/Core.Plugins.Map.Test/MapPluginTest.cs (.../MapPluginTest.cs) (revision 4f023f921130657163dbbad9b13e765e6d37cbb5) @@ -95,6 +95,8 @@ viewHost.Expect(vm => vm.ActiveDocumentViewChanged -= null).IgnoreArguments(); viewHost.Expect(vm => vm.ViewOpened += null).IgnoreArguments(); viewHost.Expect(vm => vm.ViewOpened -= null).IgnoreArguments(); + viewHost.Expect(vm => vm.ViewBroughtToFront += null).IgnoreArguments(); + viewHost.Expect(vm => vm.ViewBroughtToFront -= null).IgnoreArguments(); viewHost.Expect(vm => vm.ViewClosed += null).IgnoreArguments(); viewHost.Expect(vm => vm.ViewClosed -= null).IgnoreArguments(); viewHost.Expect(vm => vm.Remove(Arg.Is.NotNull));