diff --git a/Terminal.Gui/View/ViewportSettings.cs b/Terminal.Gui/View/ViewportSettings.cs
index f0e2af75eb..711c876056 100644
--- a/Terminal.Gui/View/ViewportSettings.cs
+++ b/Terminal.Gui/View/ViewportSettings.cs
@@ -111,5 +111,24 @@ public enum ViewportSettings
/// must be set for this setting to work (clipping beyond the visible area must be
/// disabled).
///
- ClearContentOnly = 32
+ ClearContentOnly = 32,
+
+ ///
+ /// If set, the vertical scroll bar (see ) will be enabled and automatically made visible
+ /// when the dimension of the is smaller than the dimension of .
+ ///
+ EnableHorizontalScrollBar = 64,
+
+ ///
+ /// If set, the vertical scroll bar (see ) will be enabled and automatically made visible
+ /// when the dimension of the is smaller than the dimension of .
+ ///
+ EnableVerticalScrollBar = 128,
+
+ ///
+ /// If set, the horizontal and vertical scroll bars (see cref="View.HorizontalScrollBar"/> and )
+ /// will be enabled and automatically made visible when the dimension of the is smaller than the
+ /// dimension of .
+ ///
+ EnableScrollBars = EnableHorizontalScrollBar | EnableVerticalScrollBar
}
\ No newline at end of file
diff --git a/UICatalog/Scenarios/CharacterMap.cs b/UICatalog/Scenarios/CharacterMap.cs
index 7ce7530950..c88d9f777c 100644
--- a/UICatalog/Scenarios/CharacterMap.cs
+++ b/UICatalog/Scenarios/CharacterMap.cs
@@ -464,10 +464,10 @@ public CharMap ()
ScrollBar hScrollBar = new ()
{
- X = 0,
+ X = RowLabelWidth + 1,
Y = Pos.AnchorEnd (),
Width = Dim.Fill (1),
- Size = GetContentSize ().Width,
+ Size = COLUMN_WIDTH * 15,
Orientation = Orientation.Horizontal
};
@@ -476,10 +476,10 @@ public CharMap ()
ScrollBar vScrollBar = new ()
{
X = Pos.AnchorEnd (),
- Y = 0,
+ Y = 1, // Header
Height = Dim.Fill (Dim.Func (() => hScrollBar.Visible ? 1 : 0)),
Orientation = Orientation.Vertical,
- Size = GetContentSize ().Height
+ Size = GetContentSize ().Height - _rowHeight, // Minus one row so last row stays visible
};
vScrollBar.PositionChanged += (sender, args) => { Viewport = Viewport with { Y = args.CurrentValue }; };
@@ -488,7 +488,7 @@ public CharMap ()
ViewportChanged += (sender, args) =>
{
- vScrollBar.Size = GetContentSize ().Height;
+ vScrollBar.Size = GetContentSize ().Height - _rowHeight; // Minus one row so last row stays visible
vScrollBar.Position = Viewport.Y;
};
}
@@ -970,7 +970,7 @@ private void ShowDetails ()
document.RootElement,
new
JsonSerializerOptions
- { WriteIndented = true }
+ { WriteIndented = true }
);
}