mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2025-12-26 15:57:56 +01:00
Refactored onload/onresize events to use event vs. Action<T>
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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 {
|
||||
}
|
||||
|
||||
/// <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.
|
||||
@@ -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 {
|
||||
/// </summary>
|
||||
public static void Run<T> () where T : Toplevel, new()
|
||||
{
|
||||
Init (() => new T());
|
||||
Init (() => new T ());
|
||||
Run (Top);
|
||||
}
|
||||
|
||||
@@ -2540,15 +2540,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 ();
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user