diff --git a/Terminal.Gui/View/View.Content.cs b/Terminal.Gui/View/View.Content.cs
index 968558ca6..719427d70 100644
--- a/Terminal.Gui/View/View.Content.cs
+++ b/Terminal.Gui/View/View.Content.cs
@@ -218,7 +218,6 @@ public partial class View
{
// Force set Viewport to cause settings to be applied as needed
SetViewport (Viewport);
- SetScrollBarsKeepContentInAllViewport (_viewportSettings);
}
}
}
diff --git a/Terminal.Gui/View/View.ScrollBars.cs b/Terminal.Gui/View/View.ScrollBars.cs
index 24192b303..f7aa971e2 100644
--- a/Terminal.Gui/View/View.ScrollBars.cs
+++ b/Terminal.Gui/View/View.ScrollBars.cs
@@ -20,32 +20,12 @@ public partial class View
_horizontalScrollBar = new (() => CreateScrollBar (Orientation.Horizontal));
}
- /////
- ///// Causes the scrollbar associated with to be explicitly created.
- /////
- /////
- ///// The built-in scrollbars are lazy-created internally. To enable them, the or
- ///// need to be referenced. All this method does is reference the associated property.
- /////
- /////
- //public void EnableScrollBar (Orientation orientation)
- //{
- // if (orientation == Orientation.Vertical)
- // {
- // _ = VerticalScrollBar; // Explicitly create the vertical scroll bar
- // }
- // else
- // {
- // _ = HorizontalScrollBar; // Explicitly create the horizontal scroll bar
- // }
- //}
-
private ScrollBar CreateScrollBar (Orientation orientation)
{
var scrollBar = new ScrollBar
{
Orientation = orientation,
- Visible = false, // Initially hidden until needed
+ Visible = false // Initially hidden until needed
};
if (orientation == Orientation.Vertical)
@@ -59,62 +39,66 @@ public partial class View
scrollBar.Initialized += OnScrollBarInitialized;
+ // Add after setting Initialized event!
Padding?.Add (scrollBar);
+
return scrollBar;
}
private void ConfigureVerticalScrollBar (ScrollBar scrollBar)
{
scrollBar.X = Pos.AnchorEnd ();
- scrollBar.Height = Dim.Fill (Dim.Func (() =>
+
+ scrollBar.Height = Dim.Fill (
+ Dim.Func (
+ () =>
{
if (_horizontalScrollBar.IsValueCreated)
{
return _horizontalScrollBar.Value.Visible ? 1 : 0;
}
+
return 0;
}));
scrollBar.ScrollableContentSize = GetContentSize ().Height;
ViewportChanged += (_, _) =>
- {
- scrollBar.VisibleContentSize = Viewport.Height;
- scrollBar.Position = Viewport.Y;
- };
+ {
+ scrollBar.Position = Viewport.Y;
+ };
- ContentSizeChanged += (_, _) =>
- {
- scrollBar.ScrollableContentSize = GetContentSize ().Height;
- };
+ ContentSizeChanged += (_, _) => { scrollBar.ScrollableContentSize = GetContentSize ().Height; };
}
private void ConfigureHorizontalScrollBar (ScrollBar scrollBar)
{
scrollBar.Y = Pos.AnchorEnd ();
- scrollBar.Width = Dim.Fill (Dim.Func (() => {
+
+ scrollBar.Width = Dim.Fill (
+ Dim.Func (
+ () =>
+ {
if (_verticalScrollBar.IsValueCreated)
{
return _verticalScrollBar.Value.Visible ? 1 : 0;
}
+
return 0;
}));
scrollBar.ScrollableContentSize = GetContentSize ().Width;
ViewportChanged += (_, _) =>
- {
- scrollBar.VisibleContentSize = Viewport.Width;
- scrollBar.Position = Viewport.X;
- };
+ {
+ scrollBar.Position = Viewport.X;
+ };
- ContentSizeChanged += (_, _) =>
- {
- scrollBar.ScrollableContentSize = GetContentSize ().Width;
- };
+ ContentSizeChanged += (_, _) => { scrollBar.ScrollableContentSize = GetContentSize ().Width; };
}
private void OnScrollBarInitialized (object? sender, EventArgs e)
{
var scrollBar = (ScrollBar)sender!;
+
if (scrollBar.Orientation == Orientation.Vertical)
{
ConfigureVerticalScrollBarEvents (scrollBar);
@@ -130,20 +114,20 @@ public partial class View
Padding!.Thickness = Padding.Thickness with { Right = scrollBar.Visible ? Padding.Thickness.Right + 1 : 0 };
scrollBar.PositionChanged += (_, args) =>
- {
- Viewport = Viewport with
- {
- Y = Math.Min (args.CurrentValue, GetContentSize ().Height - Viewport.Height)
- };
- };
+ {
+ Viewport = Viewport with
+ {
+ Y = Math.Min (args.CurrentValue, scrollBar.ScrollableContentSize - scrollBar.VisibleContentSize)
+ };
+ };
scrollBar.VisibleChanged += (_, _) =>
- {
- Padding.Thickness = Padding.Thickness with
- {
- Right = scrollBar.Visible ? Padding.Thickness.Right + 1 : Padding.Thickness.Right - 1
- };
- };
+ {
+ Padding.Thickness = Padding.Thickness with
+ {
+ Right = scrollBar.Visible ? Padding.Thickness.Right + 1 : Padding.Thickness.Right - 1
+ };
+ };
}
private void ConfigureHorizontalScrollBarEvents (ScrollBar scrollBar)
@@ -151,28 +135,40 @@ public partial class View
Padding!.Thickness = Padding.Thickness with { Bottom = scrollBar.Visible ? Padding.Thickness.Bottom + 1 : 0 };
scrollBar.PositionChanged += (_, args) =>
- {
- Viewport = Viewport with
- {
- X = Math.Min (args.CurrentValue, GetContentSize ().Width - Viewport.Width)
- };
- };
+ {
+ Viewport = Viewport with
+ {
+ X = Math.Min (args.CurrentValue, scrollBar.ScrollableContentSize - scrollBar.VisibleContentSize)
+ };
+ };
scrollBar.VisibleChanged += (_, _) =>
- {
- Padding.Thickness = Padding.Thickness with
- {
- Bottom = scrollBar.Visible ? Padding.Thickness.Bottom + 1 : Padding.Thickness.Bottom - 1
- };
- };
+ {
+ Padding.Thickness = Padding.Thickness with
+ {
+ Bottom = scrollBar.Visible ? Padding.Thickness.Bottom + 1 : Padding.Thickness.Bottom - 1
+ };
+ };
}
///
+ /// Gets the horizontal . This property is lazy-loaded and will not be created until it is accessed.
///
+ ///
+ ///
+ /// See for more information on how to use the ScrollBar.
+ ///
+ ///
public ScrollBar HorizontalScrollBar => _horizontalScrollBar.Value;
///
+ /// Gets the vertical . This property is lazy-loaded and will not be created until it is accessed.
///
+ ///
+ ///
+ /// See for more information on how to use the ScrollBar.
+ ///
+ ///
public ScrollBar VerticalScrollBar => _verticalScrollBar.Value;
///
@@ -197,39 +193,4 @@ public partial class View
_verticalScrollBar.Value.Dispose ();
}
}
-
- private void SetScrollBarsKeepContentInAllViewport (ViewportSettings viewportSettings)
- {
- if (viewportSettings == ViewportSettings.None)
- {
- //_horizontalScrollBar.Value.KeepContentInAllViewport = true;
- //_verticalScrollBar.Value.KeepContentInAllViewport = true;
- }
- else if (viewportSettings.HasFlag (ViewportSettings.AllowNegativeX))
- {
- _horizontalScrollBar.Value.AutoShow = false;
- }
- else if (viewportSettings.HasFlag (ViewportSettings.AllowNegativeY))
- {
- _verticalScrollBar.Value.AutoShow = false;
- }
- else if (viewportSettings.HasFlag (ViewportSettings.AllowNegativeLocation))
- {
- _horizontalScrollBar.Value.AutoShow = false;
- _verticalScrollBar.Value.AutoShow = false;
- }
- else if (viewportSettings.HasFlag (ViewportSettings.AllowXGreaterThanContentWidth))
- {
- //_horizontalScrollBar.Value.KeepContentInAllViewport = false;
- }
- else if (viewportSettings.HasFlag (ViewportSettings.AllowYGreaterThanContentHeight))
- {
- //_verticalScrollBar.Value.KeepContentInAllViewport = false;
- }
- else if (viewportSettings.HasFlag (ViewportSettings.AllowLocationGreaterThanContentSize))
- {
- //_horizontalScrollBar.Value.KeepContentInAllViewport = false;
- //_verticalScrollBar.Value.KeepContentInAllViewport = false;
- }
- }
}
diff --git a/Terminal.Gui/View/ViewportSettings.cs b/Terminal.Gui/View/ViewportSettings.cs
index c3cc51ac0..a84899394 100644
--- a/Terminal.Gui/View/ViewportSettings.cs
+++ b/Terminal.Gui/View/ViewportSettings.cs
@@ -101,23 +101,4 @@ public enum ViewportSettings
/// disabled).
///
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
}
diff --git a/Terminal.Gui/Views/ScrollBar/ScrollBar.cs b/Terminal.Gui/Views/ScrollBar/ScrollBar.cs
index dac1f1f0e..6bfe1e760 100644
--- a/Terminal.Gui/Views/ScrollBar/ScrollBar.cs
+++ b/Terminal.Gui/Views/ScrollBar/ScrollBar.cs
@@ -14,6 +14,9 @@ namespace Terminal.Gui;
///
///
///
+/// See the Scrolling Deep Dive.
+///
+///
/// By default, the built-in View scrollbars have both and set to
/// .
/// To enable them, either set set to or explictly set
@@ -103,11 +106,11 @@ public class ScrollBar : View, IOrientation, IDesignable
if (Orientation == Orientation.Vertical)
{
- _slider.VisibleContentSize = Viewport.Height;
+ _slider.VisibleContentSize = VisibleContentSize;
}
else
{
- _slider.VisibleContentSize = Viewport.Width;
+ _slider.VisibleContentSize = VisibleContentSize;
}
_slider.Size = CalculateSliderSize ();
@@ -194,7 +197,7 @@ public class ScrollBar : View, IOrientation, IDesignable
#endregion
///
- /// Gets or sets the amount each mouse wheel event will incremenet/decrement the .
+ /// Gets or sets the amount each mouse wheel event, or click on the increment/decrement buttons, will incremenet/decrement the .
///
///
/// The default is 1.
@@ -249,7 +252,7 @@ public class ScrollBar : View, IOrientation, IDesignable
/// .
///
///
- /// If not explicitly set, will be the appropriate dimension of the Scroll's Frame.
+ /// If not explicitly set, the visible content size will be appropriate dimension of the ScrollBar's Frame.
///
public int VisibleContentSize
{
@@ -555,9 +558,9 @@ public class ScrollBar : View, IOrientation, IDesignable
}
#if PROPORTIONAL_SCROLL_JUMP
- // BUGBUG: This logic mostly works to provide a proportional jump. However, the math
- // BUGBUG: falls apart in edge cases. Most other scroll bars (e.g. Windows) do not do proportional
- // BUGBUG: Thus, this is disabled and we just jump a page each click.
+ // TODO: This logic mostly works to provide a proportional jump. However, the math
+ // TODO: falls apart in edge cases. Most other scroll bars (e.g. Windows) do not do proportional
+ // TODO: Thus, this is disabled; we just jump a page each click.
// Ratio of the distance to the viewport dimension
double ratio = (double)Math.Abs (distanceFromCenter) / (VisibleContentSize);
// Jump size based on the ratio and the total content size
diff --git a/UICatalog/Scenarios/CharacterMap/CharMap.cs b/UICatalog/Scenarios/CharacterMap/CharMap.cs
index c138d26ff..62ab02f46 100644
--- a/UICatalog/Scenarios/CharacterMap/CharMap.cs
+++ b/UICatalog/Scenarios/CharacterMap/CharMap.cs
@@ -18,12 +18,13 @@ namespace UICatalog.Scenarios;
public class CharMap : View, IDesignable
{
private const int COLUMN_WIDTH = 3; // Width of each column of glyphs
+ private const int HEADER_HEIGHT = 1; // Height of the header
private int _rowHeight = 1; // Height of each row of 16 glyphs - changing this is not tested
private ContextMenu _contextMenu = new ();
///
- /// Initalizes a new instance.
+ /// Initializes a new instance.
///
public CharMap ()
{
@@ -75,7 +76,7 @@ public class CharMap : View, IDesignable
Command.PageUp,
() =>
{
- int page = (Viewport.Height - 1 / _rowHeight) * 16;
+ int page = (Viewport.Height - HEADER_HEIGHT / _rowHeight) * 16;
SelectedCodePoint -= page;
return true;
@@ -86,7 +87,7 @@ public class CharMap : View, IDesignable
Command.PageDown,
() =>
{
- int page = (Viewport.Height - 1 / _rowHeight) * 16;
+ int page = (Viewport.Height - HEADER_HEIGHT / _rowHeight) * 16;
SelectedCodePoint += page;
return true;
@@ -135,120 +136,92 @@ public class CharMap : View, IDesignable
MouseClick += Handle_MouseClick;
MouseEvent += Handle_MouseEvent;
- // Add scrollbars
- Padding!.Thickness = new (0, 0, 1, 0);
-
- SetContentSize (new (COLUMN_WIDTH * 16 + RowLabelWidth, MAX_CODE_POINT / 16 * _rowHeight + 1)); // +1 for Header
+ SetContentSize (new (COLUMN_WIDTH * 16 + RowLabelWidth, MAX_CODE_POINT / 16 * _rowHeight + HEADER_HEIGHT));
+ // Set up the horizontal scrollbar. Turn off AutoShow since we do it manually.
HorizontalScrollBar.AutoShow = false;
HorizontalScrollBar.Increment = COLUMN_WIDTH;
+
+ // This prevents scrolling past the last column
HorizontalScrollBar.ScrollableContentSize = GetContentSize ().Width - RowLabelWidth;
HorizontalScrollBar.X = RowLabelWidth;
HorizontalScrollBar.Y = Pos.AnchorEnd ();
HorizontalScrollBar.Width = Dim.Fill (1);
- VerticalScrollBar.AutoShow = false;
- VerticalScrollBar.Visible = true;
- VerticalScrollBar.ScrollableContentSize = GetContentSize ().Height;
- VerticalScrollBar.X = Pos.AnchorEnd ();
- VerticalScrollBar.Y = 1; // Header
- VerticalScrollBar.Height = Dim.Fill (Dim.Func (() => Padding.Thickness.Bottom));
-
- //VerticalScrollBar.PositionChanged += (sender, args) =>
- // {
- // if (Viewport.Height > 0)
- // {
- // Viewport = Viewport with
- // {
- // Y = Math.Min (args.CurrentValue, GetContentSize ().Height - (Viewport.Height - 1))
- // };
- // }
- // };
-
- //HorizontalScrollBar.PositionChanged += (sender, args) =>
- // {
- // if (Viewport.Width > 0)
- // {
- // Viewport = Viewport with
- // {
- // X = Math.Min (args.CurrentValue, GetContentSize ().Width - Viewport.Width)
- // };
- // }
- // };
-
+ // We want the horizontal scrollbar to only show when needed.
+ // We can't use ScrollBar.AutoShow because we are using custom ContentSize
+ // So, we do it manually on ViewportChanged events.
ViewportChanged += (sender, args) =>
- {
- if (Viewport.Width < GetContentSize ().Width)
- {
- HorizontalScrollBar.Visible = true;
- }
- else
- {
- HorizontalScrollBar.Visible = false;
- }
+ {
+ if (Viewport.Width < GetContentSize ().Width)
+ {
+ HorizontalScrollBar.Visible = true;
+ }
+ else
+ {
+ HorizontalScrollBar.Visible = false;
+ }
+ };
- VerticalScrollBar.VisibleContentSize = Viewport.Height - 1;
- HorizontalScrollBar.VisibleContentSize = Viewport.Width - RowLabelWidth;
- };
+ // Set up the vertical scrollbar. Turn off AutoShow since it's always visible.
+ VerticalScrollBar.AutoShow = false;
+ VerticalScrollBar.Visible = true; // Force always visible
+ VerticalScrollBar.X = Pos.AnchorEnd ();
+ VerticalScrollBar.Y = HEADER_HEIGHT; // Header
}
- private void ScrollToMakeCursorVisible (Point newCursor)
+ private void ScrollToMakeCursorVisible (Point offsetToNewCursor)
{
// Adjust vertical scrolling
- if (newCursor.Y < 1) // Header is at Y = 0
+ if (offsetToNewCursor.Y < 1) // Header is at Y = 0
{
- ScrollVertical (newCursor.Y - 1);
+ ScrollVertical (offsetToNewCursor.Y - HEADER_HEIGHT);
}
- else if (newCursor.Y >= Viewport.Height)
+ else if (offsetToNewCursor.Y >= Viewport.Height)
{
- ScrollVertical (newCursor.Y - Viewport.Height + 1);
+ ScrollVertical (offsetToNewCursor.Y - Viewport.Height + HEADER_HEIGHT);
}
// Adjust horizontal scrolling
- if (newCursor.X < RowLabelWidth + 1)
+ if (offsetToNewCursor.X < RowLabelWidth + 1)
{
- ScrollHorizontal (newCursor.X - (RowLabelWidth + 1));
+ ScrollHorizontal (offsetToNewCursor.X - (RowLabelWidth + 1));
}
- else if (newCursor.X >= Viewport.Width)
+ else if (offsetToNewCursor.X >= Viewport.Width)
{
- ScrollHorizontal (newCursor.X - Viewport.Width + 1);
+ ScrollHorizontal (offsetToNewCursor.X - Viewport.Width + 1);
}
-
- //VerticalScrollBar.Position = Viewport.Y;
- //HorizontalScrollBar.Position = Viewport.X;
}
#region Cursor
- /// Gets or sets the coordinates of the Cursor based on the SelectedCodePoint in Viewport-relative coordinates
- public Point Cursor
+ private Point GetCursor (int codePoint)
{
- get
- {
- int row = SelectedCodePoint / 16 * _rowHeight + 1 - Viewport.Y; // + 1 for header
- int col = SelectedCodePoint % 16 * COLUMN_WIDTH + RowLabelWidth + 1 - Viewport.X; // + 1 for padding between label and first column
+ // + 1 for padding between label and first column
+ int x = codePoint % 16 * COLUMN_WIDTH + RowLabelWidth + 1 - Viewport.X;
+ int y = codePoint / 16 * _rowHeight + HEADER_HEIGHT - Viewport.Y;
- return new (col, row);
- }
- set => throw new NotImplementedException ();
+ return new (x, y);
}
public override Point? PositionCursor ()
{
+ Point cursor = GetCursor (SelectedCodePoint);
+
if (HasFocus
- && Cursor.X >= RowLabelWidth
- && Cursor.X < Viewport.Width
- && Cursor.Y > 0
- && Cursor.Y < Viewport.Height)
+ && cursor.X >= RowLabelWidth
+ && cursor.X < Viewport.Width
+ && cursor.Y > 0
+ && cursor.Y < Viewport.Height)
{
- Move (Cursor.X, Cursor.Y);
+ Move (cursor.X, cursor.Y);
}
else
{
return null;
}
- return Cursor;
+ return cursor;
}
#endregion Cursor
@@ -274,16 +247,12 @@ public class CharMap : View, IDesignable
int newSelectedCodePoint = Math.Clamp (value, 0, MAX_CODE_POINT);
- Point newCursor = new ()
- {
- X = newSelectedCodePoint % 16 * COLUMN_WIDTH + RowLabelWidth + 1 - Viewport.X,
- Y = newSelectedCodePoint / 16 * _rowHeight + 1 - Viewport.Y
- };
+ Point offsetToNewCursor = GetCursor (newSelectedCodePoint);
_selectedCodepoint = newSelectedCodePoint;
// Ensure the new cursor position is visible
- ScrollToMakeCursorVisible (newCursor);
+ ScrollToMakeCursorVisible (offsetToNewCursor);
SetNeedsDraw ();
SelectedCodePointChanged?.Invoke (this, new (SelectedCodePoint));
@@ -336,8 +305,8 @@ public class CharMap : View, IDesignable
return true;
}
- int cursorCol = Cursor.X + Viewport.X - RowLabelWidth - 1;
- int cursorRow = Cursor.Y + Viewport.Y - 1;
+ int cursorCol = GetCursor (SelectedCodePoint).X + Viewport.X - RowLabelWidth - 1;
+ int cursorRow = GetCursor (SelectedCodePoint).Y + Viewport.Y - 1;
SetAttribute (GetHotNormalColor ());
Move (0, 0);
@@ -504,7 +473,6 @@ public class CharMap : View, IDesignable
if (e.Flags == MouseFlags.WheeledDown)
{
ScrollVertical (1);
-// _vScrollBar.Position = Viewport.Y;
e.Handled = true;
return;
@@ -513,7 +481,6 @@ public class CharMap : View, IDesignable
if (e.Flags == MouseFlags.WheeledUp)
{
ScrollVertical (-1);
- // _vScrollBar.Position = Viewport.Y;
e.Handled = true;
return;
@@ -522,7 +489,6 @@ public class CharMap : View, IDesignable
if (e.Flags == MouseFlags.WheeledRight)
{
ScrollHorizontal (1);
- // _hScrollBar.Position = Viewport.X;
e.Handled = true;
return;
@@ -531,7 +497,6 @@ public class CharMap : View, IDesignable
if (e.Flags == MouseFlags.WheeledLeft)
{
ScrollHorizontal (-1);
- // _hScrollBar.Position = Viewport.X;
e.Handled = true;
}
}
@@ -545,12 +510,12 @@ public class CharMap : View, IDesignable
if (me.Position.Y == 0)
{
- me.Position = me.Position with { Y = Cursor.Y };
+ me.Position = me.Position with { Y = GetCursor (SelectedCodePoint).Y };
}
if (me.Position.X < RowLabelWidth || me.Position.X > RowLabelWidth + 16 * COLUMN_WIDTH - 1)
{
- me.Position = me.Position with { X = Cursor.X };
+ me.Position = me.Position with { X = GetCursor (SelectedCodePoint).X };
}
int row = (me.Position.Y - 1 - -Viewport.Y) / _rowHeight; // -1 for header
@@ -659,6 +624,7 @@ public class CharMap : View, IDesignable
Height = Dim.Fill (3),
TextAlignment = Alignment.Center
};
+
var spinner = new SpinnerView
{
X = Pos.Center (),
diff --git a/UICatalog/Scenarios/Scrolling.cs b/UICatalog/Scenarios/Scrolling.cs
index ef79b7a67..6c6662163 100644
--- a/UICatalog/Scenarios/Scrolling.cs
+++ b/UICatalog/Scenarios/Scrolling.cs
@@ -15,7 +15,7 @@ public class Scrolling : Scenario
var app = new Window
{
- Title = GetQuitKeyAndName (),
+ Title = GetQuitKeyAndName ()
};
var label = new Label { X = 0, Y = 0 };
@@ -27,7 +27,7 @@ public class Scrolling : Scenario
X = 2,
Y = Pos.Bottom (label) + 1,
Width = 60,
- Height = 20,
+ Height = 20
};
demoView.SetContentSize (new (80, 25));
@@ -35,10 +35,10 @@ public class Scrolling : Scenario
$"{demoView}\nContentSize: {demoView.GetContentSize ()}\nViewport.Location: {demoView.Viewport.Location}";
demoView.ViewportChanged += (_, _) =>
- {
- label.Text =
- $"{demoView}\nContentSize: {demoView.GetContentSize ()}\nViewport.Location: {demoView.Viewport.Location}";
- };
+ {
+ label.Text =
+ $"{demoView}\nContentSize: {demoView.GetContentSize ()}\nViewport.Location: {demoView.Viewport.Location}";
+ };
app.Add (demoView);
@@ -54,10 +54,7 @@ public class Scrolling : Scenario
CheckedState = demoView.HorizontalScrollBar.Visible ? CheckState.Checked : CheckState.UnChecked
};
app.Add (hCheckBox);
- hCheckBox.CheckedStateChanged += (sender, args) =>
- {
- demoView.HorizontalScrollBar.Visible = args.CurrentValue == CheckState.Checked;
- };
+ hCheckBox.CheckedStateChanged += (sender, args) => { demoView.HorizontalScrollBar.Visible = args.CurrentValue == CheckState.Checked; };
//// NOTE: This call to EnableScrollBar is technically not needed because the reference
//// NOTE: to demoView.HorizontalScrollBar below will cause it to be lazy created.
@@ -71,35 +68,29 @@ public class Scrolling : Scenario
CheckedState = demoView.VerticalScrollBar.Visible ? CheckState.Checked : CheckState.UnChecked
};
app.Add (vCheckBox);
- vCheckBox.CheckedStateChanged += (sender, args) =>
- {
- demoView.VerticalScrollBar.Visible = args.CurrentValue == CheckState.Checked;
- };
+ vCheckBox.CheckedStateChanged += (sender, args) => { demoView.VerticalScrollBar.Visible = args.CurrentValue == CheckState.Checked; };
var ahCheckBox = new CheckBox
{
X = Pos.Left (demoView),
Y = Pos.Bottom (hCheckBox),
- Text = "_AutoHide (both)",
+ Text = "_AutoShow (both)",
CheckedState = demoView.HorizontalScrollBar.AutoShow ? CheckState.Checked : CheckState.UnChecked
};
ahCheckBox.CheckedStateChanging += (s, e) =>
- {
- demoView.HorizontalScrollBar.AutoShow = e.NewValue == CheckState.Checked;
- demoView.VerticalScrollBar.AutoShow = e.NewValue == CheckState.Checked;
- };
+ {
+ demoView.HorizontalScrollBar.AutoShow = e.NewValue == CheckState.Checked;
+ demoView.VerticalScrollBar.AutoShow = e.NewValue == CheckState.Checked;
+ };
app.Add (ahCheckBox);
- demoView.VerticalScrollBar.VisibleChanging += (sender, args) =>
- {
- vCheckBox.CheckedState = args.NewValue ? CheckState.Checked : CheckState.UnChecked;
- };
+ demoView.VerticalScrollBar.VisibleChanging += (sender, args) => { vCheckBox.CheckedState = args.NewValue ? CheckState.Checked : CheckState.UnChecked; };
demoView.HorizontalScrollBar.VisibleChanging += (sender, args) =>
- {
- hCheckBox.CheckedState = args.NewValue ? CheckState.Checked : CheckState.UnChecked;
- };
+ {
+ hCheckBox.CheckedState = args.NewValue ? CheckState.Checked : CheckState.UnChecked;
+ };
var count = 0;
@@ -130,19 +121,16 @@ public class Scrolling : Scenario
Application.AddTimeout (TimeSpan.FromMilliseconds (300), timer);
- app.Unloaded += app_Unloaded;
+ app.Unloaded += AppUnloaded;
Application.Run (app);
- app.Unloaded -= app_Unloaded;
+ app.Unloaded -= AppUnloaded;
app.Dispose ();
Application.Shutdown ();
return;
- void app_Unloaded (object sender, EventArgs args)
- {
- pulsing = false;
- }
+ void AppUnloaded (object sender, EventArgs args) { pulsing = false; }
}
}
@@ -154,18 +142,17 @@ public class DemoView : View
CanFocus = true;
BorderStyle = LineStyle.Heavy;
Arrangement = ViewArrangement.Resizable;
-
Initialized += OnInitialized;
-
-
+ HorizontalScrollBar.AutoShow = true;
+ VerticalScrollBar.AutoShow = true;
}
private void OnInitialized (object sender, EventArgs e)
{
- View rulerView = new View ()
+ var rulerView = new View
{
Height = Dim.Fill (),
- Width = Dim.Fill (),
+ Width = Dim.Fill ()
};
rulerView.Border!.Thickness = new (1);
rulerView.Border.LineStyle = LineStyle.None;
@@ -174,7 +161,6 @@ public class DemoView : View
Add (rulerView);
-
var pressMeButton = new Button
{
X = 1,
@@ -195,37 +181,37 @@ public class DemoView : View
Add (aLongButton);
Add (
- new TextField
- {
- X = Pos.Left (pressMeButton),
- Y = Pos.Bottom (aLongButton) + 1,
- Width = 50,
- ColorScheme = Colors.ColorSchemes ["Dialog"],
- Text = "This is a test of..."
- }
- );
+ new TextField
+ {
+ X = Pos.Left (pressMeButton),
+ Y = Pos.Bottom (aLongButton) + 1,
+ Width = 50,
+ ColorScheme = Colors.ColorSchemes ["Dialog"],
+ Text = "This is a test of..."
+ }
+ );
Add (
- new TextField
- {
- X = Pos.Left (pressMeButton),
- Y = Pos.Bottom (aLongButton) + 3,
- Width = 50,
- ColorScheme = Colors.ColorSchemes ["Dialog"],
- Text = "... the emergency broadcast system."
- }
- );
+ new TextField
+ {
+ X = Pos.Left (pressMeButton),
+ Y = Pos.Bottom (aLongButton) + 3,
+ Width = 50,
+ ColorScheme = Colors.ColorSchemes ["Dialog"],
+ Text = "... the emergency broadcast system."
+ }
+ );
Add (
- new TextField
- {
- X = Pos.Left (pressMeButton),
- Y = 40,
- Width = 50,
- ColorScheme = Colors.ColorSchemes ["Error"],
- Text = "Last line"
- }
- );
+ new TextField
+ {
+ X = Pos.Left (pressMeButton),
+ Y = 40,
+ Width = 50,
+ ColorScheme = Colors.ColorSchemes ["Error"],
+ Text = "Last line"
+ }
+ );
// Demonstrate AnchorEnd - Button is anchored to bottom/right
var anchorButton = new Button
@@ -236,13 +222,11 @@ public class DemoView : View
};
anchorButton.Accepting += (s, e) =>
- {
- // This demonstrates how to have a dynamically sized button
- // Each time the button is clicked the button's text gets longer
- anchorButton.Text += "!";
-
- };
+ {
+ // This demonstrates how to have a dynamically sized button
+ // Each time the button is clicked the button's text gets longer
+ anchorButton.Text += "!";
+ };
Add (anchorButton);
-
}
}