|
@@ -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);
|
|
|
}
|
|
|
});
|
|
|
}
|
|
@@ -913,7 +913,7 @@ namespace Terminal.Gui {
|
|
|
OnEnter ();
|
|
|
else
|
|
|
OnLeave ();
|
|
|
- SetNeedsDisplay ();
|
|
|
+ SetNeedsDisplay ();
|
|
|
base.HasFocus = value;
|
|
|
|
|
|
// Remove focus down the chain of subviews if focus is removed
|
|
@@ -1063,7 +1063,7 @@ namespace Terminal.Gui {
|
|
|
focused.EnsureFocus ();
|
|
|
|
|
|
// Send focus upwards
|
|
|
- SuperView?.SetFocus(this);
|
|
|
+ SuperView?.SetFocus (this);
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -1176,7 +1176,7 @@ namespace Terminal.Gui {
|
|
|
public void FocusLast ()
|
|
|
{
|
|
|
if (subviews == null) {
|
|
|
- SuperView?.SetFocus(this);
|
|
|
+ SuperView?.SetFocus (this);
|
|
|
return;
|
|
|
}
|
|
|
|
|
@@ -1223,7 +1223,7 @@ namespace Terminal.Gui {
|
|
|
w.FocusLast ();
|
|
|
|
|
|
SetFocus (w);
|
|
|
- return true;
|
|
|
+ return true;
|
|
|
}
|
|
|
}
|
|
|
if (focused != null) {
|
|
@@ -1614,7 +1614,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;
|
|
@@ -1628,7 +1628,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 ()
|
|
@@ -1775,7 +1775,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),
|
|
@@ -2056,7 +2056,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;
|
|
@@ -2114,7 +2114,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;
|
|
@@ -2171,7 +2171,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;
|
|
@@ -2187,8 +2187,8 @@ namespace Terminal.Gui {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- resx = x-startFrame.X;
|
|
|
- resy = y-startFrame.Y;
|
|
|
+ resx = x - startFrame.X;
|
|
|
+ resy = y - startFrame.Y;
|
|
|
return start;
|
|
|
}
|
|
|
|
|
@@ -2281,9 +2281,10 @@ namespace Terminal.Gui {
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 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.
|
|
|
/// </summary>
|
|
|
- static public Action OnLoad;
|
|
|
+ static public event EventHandler<ResizedEventArgs> Loaded;
|
|
|
|
|
|
/// <summary>
|
|
|
/// Building block API: Prepares the provided toplevel for execution.
|
|
@@ -2307,11 +2308,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;
|
|
@@ -2319,7 +2320,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 ();
|
|
@@ -2386,9 +2387,8 @@ namespace Terminal.Gui {
|
|
|
toplevels.Pop ();
|
|
|
if (toplevels.Count == 0)
|
|
|
Shutdown ();
|
|
|
- else
|
|
|
- {
|
|
|
- Current = toplevels.Peek();
|
|
|
+ else {
|
|
|
+ Current = toplevels.Peek ();
|
|
|
Refresh ();
|
|
|
}
|
|
|
}
|
|
@@ -2450,7 +2450,7 @@ namespace Terminal.Gui {
|
|
|
/// </summary>
|
|
|
public static void Run<T> () where T : Toplevel, new()
|
|
|
{
|
|
|
- Init (() => new T());
|
|
|
+ Init (() => new T ());
|
|
|
Run (Top);
|
|
|
}
|
|
|
|
|
@@ -2494,15 +2494,29 @@ namespace Terminal.Gui {
|
|
|
Current.Running = false;
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// Event arguments for the <see cref="T:Terminal.Gui.Application.Resized"/> event.
|
|
|
+ /// </summary>
|
|
|
+ public class ResizedEventArgs : EventArgs {
|
|
|
+ /// <summary>
|
|
|
+ /// The number of rows in the resized terminal.
|
|
|
+ /// </summary>
|
|
|
+ public int Rows { get; set; }
|
|
|
+ /// <summary>
|
|
|
+ /// The number of columns in the resized terminal.
|
|
|
+ /// </summary>
|
|
|
+ public int Cols { get; set; }
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// Invoked when the terminal was resized.
|
|
|
/// </summary>
|
|
|
- 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 ();
|