diff --git a/Example/demo.cs b/Example/demo.cs
index cd39607d3..6ffaa21cc 100644
--- a/Example/demo.cs
+++ b/Example/demo.cs
@@ -604,7 +604,7 @@ static class Demo {
var bottom2 = new Label ("This should go on the bottom of another top-level!");
top.Add (bottom2);
- Application.OnLoad = () => {
+ Application.Loaded += (sender, e) => {
bottom.X = win.X;
bottom.Y = Pos.Bottom (win) - Pos.Top (win) - margin;
bottom2.X = Pos.Left (win);
diff --git a/Terminal.Gui/Core.cs b/Terminal.Gui/Core.cs
index 60f968331..9ffcca490 100644
--- a/Terminal.Gui/Core.cs
+++ b/Terminal.Gui/Core.cs
@@ -607,7 +607,7 @@ namespace Terminal.Gui {
return;
while (subviews.Count > 0) {
- Remove (subviews[0]);
+ Remove (subviews [0]);
}
}
@@ -705,9 +705,9 @@ namespace Terminal.Gui {
{
PerformActionForSubview (subview, x => {
var idx = subviews.IndexOf (x);
- if (idx+1 < subviews.Count) {
+ if (idx + 1 < subviews.Count) {
subviews.Remove (x);
- subviews.Insert (idx+1, x);
+ subviews.Insert (idx + 1, x);
}
});
}
@@ -910,7 +910,7 @@ namespace Terminal.Gui {
OnEnter ();
else
OnLeave ();
- SetNeedsDisplay ();
+ SetNeedsDisplay ();
base.HasFocus = value;
// Remove focus down the chain of subviews if focus is removed
@@ -1062,7 +1062,7 @@ namespace Terminal.Gui {
focused.EnsureFocus ();
// Send focus upwards
- SuperView?.SetFocus(this);
+ SuperView?.SetFocus (this);
}
public class KeyEventEventArgs : EventArgs {
@@ -1181,7 +1181,7 @@ namespace Terminal.Gui {
public void FocusLast ()
{
if (subviews == null) {
- SuperView?.SetFocus(this);
+ SuperView?.SetFocus (this);
return;
}
@@ -1228,7 +1228,7 @@ namespace Terminal.Gui {
w.FocusLast ();
SetFocus (w);
- return true;
+ return true;
}
}
if (focused != null) {
@@ -1641,7 +1641,7 @@ namespace Terminal.Gui {
internal void EnsureVisibleBounds (Toplevel top, int x, int y, out int nx, out int ny)
{
nx = Math.Max (x, 0);
- nx = nx + top.Frame.Width > Driver.Cols ? Math.Max(Driver.Cols - top.Frame.Width, 0) : nx;
+ nx = nx + top.Frame.Width > Driver.Cols ? Math.Max (Driver.Cols - top.Frame.Width, 0) : nx;
bool m, s;
if (SuperView == null)
m = Application.Top.HasMenuBar;
@@ -1655,7 +1655,7 @@ namespace Terminal.Gui {
s = ((Toplevel)SuperView).HasStatusBar;
l = s ? Driver.Rows - 1 : Driver.Rows;
ny = Math.Min (ny, l);
- ny = ny + top.Frame.Height > l ? Math.Max(l - top.Frame.Height, m ? 1 : 0) : ny;
+ ny = ny + top.Frame.Height > l ? Math.Max (l - top.Frame.Height, m ? 1 : 0) : ny;
}
internal void PositionToplevels ()
@@ -1803,7 +1803,7 @@ namespace Terminal.Gui {
this.Title = title;
int wb = 1 + padding;
this.padding = padding;
- contentView = new ContentView () {
+ contentView = new ContentView () {
X = wb,
Y = wb,
Width = Dim.Fill (wb),
@@ -2086,7 +2086,7 @@ namespace Terminal.Gui {
if (UseSystemConsole) {
mainLoopDriver = new Mono.Terminal.NetMainLoop ();
Driver = new NetDriver ();
- } else if (p == PlatformID.Win32NT || p == PlatformID.Win32S || p == PlatformID.Win32Windows){
+ } else if (p == PlatformID.Win32NT || p == PlatformID.Win32S || p == PlatformID.Win32Windows) {
var windowsDriver = new WindowsDriver ();
mainLoopDriver = windowsDriver;
Driver = windowsDriver;
@@ -2144,7 +2144,7 @@ namespace Terminal.Gui {
static void ProcessKeyEvent (KeyEvent ke)
{
- var chain = toplevels.ToList();
+ var chain = toplevels.ToList ();
foreach (var topLevel in chain) {
if (topLevel.ProcessHotKey (ke))
return;
@@ -2201,7 +2201,7 @@ namespace Terminal.Gui {
return null;
}
- if (start.InternalSubviews != null){
+ if (start.InternalSubviews != null) {
int count = start.InternalSubviews.Count;
if (count > 0) {
var rx = x - startFrame.X;
@@ -2217,8 +2217,8 @@ namespace Terminal.Gui {
}
}
}
- resx = x-startFrame.X;
- resy = y-startFrame.Y;
+ resx = x - startFrame.X;
+ resy = y - startFrame.Y;
return start;
}
@@ -2320,9 +2320,10 @@ namespace Terminal.Gui {
}
///
- /// Action that is invoked once at beginning.
+ /// This event is fired once when the application is first loaded. The dimensions of the
+ /// terminal are provided.
///
- static public Action OnLoad;
+ static public event EventHandler Loaded;
///
/// Building block API: Prepares the provided toplevel for execution.
@@ -2346,11 +2347,11 @@ namespace Terminal.Gui {
Init ();
if (toplevel is ISupportInitializeNotification initializableNotification &&
!initializableNotification.IsInitialized) {
- initializableNotification.BeginInit();
- initializableNotification.EndInit();
+ initializableNotification.BeginInit ();
+ initializableNotification.EndInit ();
} else if (toplevel is ISupportInitialize initializable) {
- initializable.BeginInit();
- initializable.EndInit();
+ initializable.BeginInit ();
+ initializable.EndInit ();
}
toplevels.Push (toplevel);
Current = toplevel;
@@ -2358,7 +2359,7 @@ namespace Terminal.Gui {
if (toplevel.LayoutStyle == LayoutStyle.Computed)
toplevel.RelativeLayout (new Rect (0, 0, Driver.Cols, Driver.Rows));
toplevel.LayoutSubviews ();
- OnLoad?.Invoke ();
+ Loaded?.Invoke (null, new ResizedEventArgs () { Rows = Driver.Rows, Cols = Driver.Cols } );
toplevel.WillPresent ();
Redraw (toplevel);
toplevel.PositionCursor ();
@@ -2425,9 +2426,8 @@ namespace Terminal.Gui {
toplevels.Pop ();
if (toplevels.Count == 0)
Shutdown ();
- else
- {
- Current = toplevels.Peek();
+ else {
+ Current = toplevels.Peek ();
Refresh ();
}
}
@@ -2496,7 +2496,7 @@ namespace Terminal.Gui {
///
public static void Run () where T : Toplevel, new()
{
- Init (() => new T());
+ Init (() => new T ());
Run (Top);
}
@@ -2540,15 +2540,29 @@ namespace Terminal.Gui {
Current.Running = false;
}
+ ///
+ /// Event arguments for the event.
+ ///
+ public class ResizedEventArgs : EventArgs {
+ ///
+ /// The number of rows in the resized terminal.
+ ///
+ public int Rows { get; set; }
+ ///
+ /// The number of columns in the resized terminal.
+ ///
+ public int Cols { get; set; }
+ }
+
///
/// Invoked when the terminal was resized.
///
- static public Action OnResized;
+ static public event EventHandler Resized;
static void TerminalResized ()
{
- OnResized?.Invoke ();
var full = new Rect (0, 0, Driver.Cols, Driver.Rows);
+ Resized?.Invoke (null, new ResizedEventArgs () { Cols = full.Width, Rows = full.Height });
Driver.Clip = full;
foreach (var t in toplevels) {
t.PositionToplevels ();
diff --git a/Terminal.Gui/Views/StatusBar.cs b/Terminal.Gui/Views/StatusBar.cs
index 1bb5f2b33..e204f97e5 100644
--- a/Terminal.Gui/Views/StatusBar.cs
+++ b/Terminal.Gui/Views/StatusBar.cs
@@ -108,7 +108,7 @@ namespace Terminal.Gui {
CanFocus = false;
ColorScheme = Colors.Menu;
- Application.OnLoad += () => {
+ Application.Loaded += (sender, e) => {
X = 0;
Height = 1;
#if SNAP_TO_TOP
@@ -120,7 +120,7 @@ namespace Terminal.Gui {
case StatusBarStyle.SnapToBottom:
#endif
if (Parent == null) {
- Y = Application.Driver.Rows - 1; // TODO: using internals of Application
+ Y = e.Rows - 1;
} else {
Y = Pos.Bottom (Parent);
}