Преглед изворни кода

Merge pull request #197 from tig/BDisp-v2_2489_scroll-tig-builtin

Tweaked `CharMap` based on your latest
BDisp пре 11 месеци
родитељ
комит
b19437de39
2 измењених фајлова са 26 додато и 7 уклоњено
  1. 20 1
      Terminal.Gui/View/ViewportSettings.cs
  2. 6 6
      UICatalog/Scenarios/CharacterMap.cs

+ 20 - 1
Terminal.Gui/View/ViewportSettings.cs

@@ -111,5 +111,24 @@ public enum ViewportSettings
     ///     <see cref="ClipContentOnly"/> must be set for this setting to work (clipping beyond the visible area must be
     ///     disabled).
     /// </remarks>
-    ClearContentOnly = 32
+    ClearContentOnly = 32,
+
+    /// <summary>
+    ///     If set, the vertical scroll bar (see <see cref="View.HorizontalScrollBar"/>) will be enabled and automatically made visible
+    ///     when the dimension of the <see cref="View.Viewport"/> is smaller than the dimension of <see cref="View.GetContentSize()"/>.
+    /// </summary>
+    EnableHorizontalScrollBar = 64,
+
+    /// <summary>
+    ///     If set, the vertical scroll bar (see <see cref="View.VerticalScrollBar"/>) will be enabled and automatically made visible
+    ///     when the dimension of the <see cref="View.Viewport"/> is smaller than the dimension of <see cref="View.GetContentSize()"/>.
+    /// </summary>
+    EnableVerticalScrollBar = 128,
+
+    /// <summary>
+    ///     If set, the horizontal and vertical scroll bars (see cref="View.HorizontalScrollBar"/> and <see cref="View.VerticalScrollBar"/>)
+    ///     will be enabled and automatically made visible when the dimension of the <see cref="View.Viewport"/> is smaller than the
+    ///     dimension of <see cref="View.GetContentSize()"/>.
+    /// </summary>
+    EnableScrollBars = EnableHorizontalScrollBar | EnableVerticalScrollBar
 }

+ 6 - 6
UICatalog/Scenarios/CharacterMap.cs

@@ -464,10 +464,10 @@ internal class CharMap : View
 
         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 @@ internal class CharMap : View
         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 @@ internal class CharMap : View
 
         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 @@ internal class CharMap : View
                                                         document.RootElement,
                                                         new
                                                             JsonSerializerOptions
-                                                            { WriteIndented = true }
+                                                        { WriteIndented = true }
                                                        );
             }