From 6cb8478b6e32c1605db5d7342f495281aef0a5dd Mon Sep 17 00:00:00 2001 From: BDisp Date: Wed, 20 Nov 2024 12:44:36 +0000 Subject: [PATCH] Only render tabs if layout is needed. --- Terminal.Gui/Views/TabView/TabRowView.cs | 12 ++++++------ Terminal.Gui/Views/TabView/TabView.cs | 5 +++++ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/Terminal.Gui/Views/TabView/TabRowView.cs b/Terminal.Gui/Views/TabView/TabRowView.cs index 4ae96614c..60bfbba55 100644 --- a/Terminal.Gui/Views/TabView/TabRowView.cs +++ b/Terminal.Gui/Views/TabView/TabRowView.cs @@ -86,15 +86,12 @@ internal class TabRowView : View { _host.SwitchTabBy (scrollIndicatorHit); - SetNeedsLayout (); - return true; } if (hit is { }) { _host.SelectedTab = hit; - SetNeedsLayout (); return true; } @@ -119,11 +116,14 @@ internal class TabRowView : View /// protected override void OnSubviewLayout (LayoutEventArgs args) { - _host._tabLocations = _host.CalculateViewport (Viewport).ToArray (); + if (NeedsLayout) + { + _host._tabLocations = _host.CalculateViewport (Viewport).ToArray (); - RenderTabLine (); + RenderTabLine (); - RenderUnderline (); + RenderUnderline (); + } base.OnSubviewLayout (args); } diff --git a/Terminal.Gui/Views/TabView/TabView.cs b/Terminal.Gui/Views/TabView/TabView.cs index 324ba01de..966099237 100644 --- a/Terminal.Gui/Views/TabView/TabView.cs +++ b/Terminal.Gui/Views/TabView/TabView.cs @@ -109,6 +109,11 @@ public class TabView : View get => _selectedTab; set { + if (value == _selectedTab) + { + return; + } + Tab? old = _selectedTab; _selectedTabHasFocus = old is { } && (old.HasFocus || !_containerView.CanFocus);