From e7fc187226fe0971043bbbe68e778d535a14cef8 Mon Sep 17 00:00:00 2001 From: Tig Date: Sat, 16 Nov 2024 12:49:51 -0700 Subject: [PATCH] Tweaked scroll logic --- Terminal.Gui/Views/ScrollBar/ScrollBar.cs | 7 +++++++ Terminal.Gui/Views/ScrollBar/ScrollSlider.cs | 2 +- UICatalog/Scenarios/Editors/EventLog.cs | 18 +++++++++++++++--- UICatalog/Scenarios/ScrollBarDemo.cs | 4 ++-- 4 files changed, 25 insertions(+), 6 deletions(-) diff --git a/Terminal.Gui/Views/ScrollBar/ScrollBar.cs b/Terminal.Gui/Views/ScrollBar/ScrollBar.cs index 712a19ef8..ec0802c41 100644 --- a/Terminal.Gui/Views/ScrollBar/ScrollBar.cs +++ b/Terminal.Gui/Views/ScrollBar/ScrollBar.cs @@ -109,6 +109,13 @@ public class ScrollBar : View, IOrientation, IDesignable _slider.Size = CalculateSliderSize (); _sliderPosition = CalculateSliderPositionFromContentPosition (_position); + + // This keeps the position constant while slider is moving + if (_sliderPosition.Value != _slider.Position) + { + //Position = CalculatePositionFromSliderPosition (_sliderPosition.Value); + } + _slider.Position = _sliderPosition.Value; } diff --git a/Terminal.Gui/Views/ScrollBar/ScrollSlider.cs b/Terminal.Gui/Views/ScrollBar/ScrollSlider.cs index 9f3314e5d..a18ff0d87 100644 --- a/Terminal.Gui/Views/ScrollBar/ScrollSlider.cs +++ b/Terminal.Gui/Views/ScrollBar/ScrollSlider.cs @@ -200,7 +200,7 @@ public class ScrollSlider : View, IOrientation, IDesignable } _visibleContentSize = int.Max (1, value); - if (_position > _visibleContentSize - _size) + if (_position >= _visibleContentSize - _size) { Position = _position; } diff --git a/UICatalog/Scenarios/Editors/EventLog.cs b/UICatalog/Scenarios/Editors/EventLog.cs index 85c834c00..9e4307722 100644 --- a/UICatalog/Scenarios/Editors/EventLog.cs +++ b/UICatalog/Scenarios/Editors/EventLog.cs @@ -18,7 +18,7 @@ public class EventLog : ListView public EventLog () { Title = "Event Log"; - CanFocus = false; + CanFocus = true; X = Pos.AnchorEnd (); Y = 0; @@ -38,6 +38,20 @@ public class EventLog : ListView }; Initialized += EventLog_Initialized; + + HorizontalScrollBar.AutoHide = true; + VerticalScrollBar.AutoHide = true; + + AddCommand (Command.DeleteAll, + () => + { + _eventSource.Clear (); + + return true; + }); + + KeyBindings.Add (Key.Delete, Command.DeleteAll); + } public ExpanderButton? ExpandButton { get; } @@ -94,10 +108,8 @@ public class EventLog : ListView private void EventLog_Initialized (object? _, EventArgs e) { - Border?.Add (ExpandButton!); Source = new ListWrapper (_eventSource); - } private string GetIdentifyingString (View? view) { diff --git a/UICatalog/Scenarios/ScrollBarDemo.cs b/UICatalog/Scenarios/ScrollBarDemo.cs index f553bcb4d..0ddf0b5c2 100644 --- a/UICatalog/Scenarios/ScrollBarDemo.cs +++ b/UICatalog/Scenarios/ScrollBarDemo.cs @@ -37,7 +37,7 @@ public class ScrollBarDemo : Scenario X = Pos.AnchorEnd () - 5, AutoHide = false, ScrollableContentSize = 100, - //ShowPercent = true + Height = Dim.Fill() }; demoFrame.Add (scrollBar); @@ -394,7 +394,7 @@ public class ScrollBarDemo : Scenario controlledList.ViewportChanged += (s, e) => { - eventLog.Log ($"ViewportChanged: {e.NewViewport.Y}"); + eventLog.Log ($"ViewportChanged: {e.NewViewport}"); scrollBar.Position = e.NewViewport.Y; };