diff --git a/Terminal.Gui/Views/Scroll/Scroll.cs b/Terminal.Gui/Views/Scroll/Scroll.cs
index 02ef59356..3e5bef959 100644
--- a/Terminal.Gui/Views/Scroll/Scroll.cs
+++ b/Terminal.Gui/Views/Scroll/Scroll.cs
@@ -143,7 +143,8 @@ public class Scroll : View, IOrientation, IDesignable
}
int framePos = Orientation == Orientation.Vertical ? args.CurrentValue.Y : args.CurrentValue.X;
- SliderPosition = framePos;
+
+ RaiseSliderPositionChangeEvents (CalculateSliderPosition (_contentPosition), framePos);
}
///
@@ -152,13 +153,11 @@ public class Scroll : View, IOrientation, IDesignable
public int SliderPosition
{
get => CalculateSliderPosition (_contentPosition);
- set => RaiseSliderPositionChangeEvents (value);
+ set => RaiseSliderPositionChangeEvents (_slider.Position, value);
}
- private void RaiseSliderPositionChangeEvents (int newSliderPosition)
+ private void RaiseSliderPositionChangeEvents (int currentSliderPosition, int newSliderPosition)
{
- int currentSliderPosition = CalculateSliderPosition (_contentPosition);
-
if (/*newSliderPosition > Size - ViewportDimension ||*/ currentSliderPosition == newSliderPosition)
{
return;
diff --git a/Terminal.Gui/Views/Scroll/ScrollBar.cs b/Terminal.Gui/Views/Scroll/ScrollBar.cs
index 7bf0e1ea6..a0a8a52c1 100644
--- a/Terminal.Gui/Views/Scroll/ScrollBar.cs
+++ b/Terminal.Gui/Views/Scroll/ScrollBar.cs
@@ -154,11 +154,11 @@ public class ScrollBar : View, IOrientation, IDesignable
if (Orientation == Orientation.Vertical)
{
- Visible = Frame.Height - (_decreaseButton.Frame.Height + _increaseButton.Frame.Height) < Size;
+ Visible = Frame.Height < Size;
}
else
{
- Visible = Frame.Width - (_decreaseButton.Frame.Width + _increaseButton.Frame.Width) < Size;
+ Visible = Frame.Width < Size;
}
}
@@ -208,8 +208,16 @@ public class ScrollBar : View, IOrientation, IDesignable
///
public int Size
{
- get => _scroll.Size;
- set => _scroll.Size = value;
+ get
+ {
+ // Add two for increment/decrement buttons
+ return _scroll.Size + 2;
+ }
+ set
+ {
+ // Remove two for increment/decrement buttons
+ _scroll.Size = value - 2;
+ }
}
///
diff --git a/UICatalog/Scenarios/CharacterMap.cs b/UICatalog/Scenarios/CharacterMap.cs
index 5f513f3d6..4ff95e423 100644
--- a/UICatalog/Scenarios/CharacterMap.cs
+++ b/UICatalog/Scenarios/CharacterMap.cs
@@ -346,7 +346,7 @@ internal class CharMap : View, IDesignable
//ViewportSettings = ViewportSettings.AllowLocationGreaterThanContentSize;
- SetContentSize (new (COLUMN_WIDTH * 16 + RowLabelWidth, _maxCodePoint / 16 * _rowHeight)); // +1 for Header
+ SetContentSize (new (COLUMN_WIDTH * 16 + RowLabelWidth, _maxCodePoint / 16 * _rowHeight + 1)); // +1 for Header
AddCommand (
Command.Up,
@@ -483,7 +483,7 @@ internal class CharMap : View, IDesignable
{
Viewport = Viewport with
{
- Y = Math.Min (args.CurrentValue, GetContentSize ().Height - (Viewport.Height - 2))
+ Y = Math.Min (args.CurrentValue, GetContentSize ().Height - (Viewport.Height - 1))
};
}
};