More CharMap tweaks

This commit is contained in:
Tig
2024-09-08 17:26:25 -06:00
parent 060f915e1c
commit 38c604eefa

View File

@@ -320,7 +320,7 @@ internal class CharMap : View
CanFocus = true;
CursorVisibility = CursorVisibility.Default;
SetContentSize (new (RowWidth, (_maxCodePoint / 16 + 2) * _rowHeight));
SetContentSize (new (RowWidth, (_maxCodePoint / 16 + 1) * _rowHeight));
AddCommand (
Command.ScrollUp,
@@ -369,6 +369,11 @@ internal class CharMap : View
ScrollHorizontal (-COLUMN_WIDTH);
}
if (Cursor.X >= Viewport.Width)
{
ScrollHorizontal (Cursor.X - Viewport.Width + 1);
}
return true;
}
);
@@ -464,6 +469,7 @@ internal class CharMap : View
ScrollBar hScrollBar = new ()
{
AutoHide = false,
X = RowLabelWidth + 1,
Y = Pos.AnchorEnd (),
Width = Dim.Fill (1),
@@ -471,15 +477,14 @@ internal class CharMap : View
Orientation = Orientation.Horizontal
};
hScrollBar.VisibleChanged += (sender, args) => { Padding.Thickness = Padding.Thickness with { Bottom = hScrollBar.Visible ? 1 : 0 }; };
ScrollBar vScrollBar = new ()
{
AutoHide = false,
X = Pos.AnchorEnd (),
Y = 1, // Header
Height = Dim.Fill (Dim.Func (() => hScrollBar.Visible ? 1 : 0)),
Height = Dim.Fill (Dim.Func (() => Padding.Thickness.Bottom)),
Orientation = Orientation.Vertical,
Size = GetContentSize ().Height - _rowHeight, // Minus one row so last row stays visible
Size = GetContentSize ().Height,
};
vScrollBar.PositionChanged += (sender, args) => { Viewport = Viewport with { Y = args.CurrentValue }; };
@@ -488,7 +493,19 @@ internal class CharMap : View
ViewportChanged += (sender, args) =>
{
vScrollBar.Size = GetContentSize ().Height - _rowHeight; // Minus one row so last row stays visible
if (Viewport.Width < GetContentSize ().Width)
{
Padding.Thickness = Padding.Thickness with { Bottom = 1 };
}
else
{
Padding.Thickness = Padding.Thickness with { Bottom = 0 };
}
hScrollBar.Size = COLUMN_WIDTH * 15;
hScrollBar.Position = Viewport.X;
vScrollBar.Size = GetContentSize ().Height;
vScrollBar.Position = Viewport.Y;
};
}