Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/xwt.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLluis Sanchez <llsan@microsoft.com>2021-05-19 11:18:52 +0300
committerGitHub <noreply@github.com>2021-05-19 11:18:52 +0300
commitb7d4d9f9594e30955449c4be493af65e7623c729 (patch)
treeeed858e3a2f7e0556fbfdb10f42a80106a9d1cd1
parent9cffa4fa0299feeb0bcb4ea8ff498db4677db16b (diff)
parent9768deb6071431ba4cf918f9c3aa92ccf504cf35 (diff)
Merge pull request #1055 from mono/exit-with-code
Allow specifying an exit code when exiting the application
-rw-r--r--Xwt.XamMac/Xwt.Mac/MacEngine.cs8
-rw-r--r--Xwt/Xwt.Backends/ToolkitEngineBackend.cs8
-rw-r--r--Xwt/Xwt/Application.cs11
3 files changed, 27 insertions, 0 deletions
diff --git a/Xwt.XamMac/Xwt.Mac/MacEngine.cs b/Xwt.XamMac/Xwt.Mac/MacEngine.cs
index f487e79d..84985143 100644
--- a/Xwt.XamMac/Xwt.Mac/MacEngine.cs
+++ b/Xwt.XamMac/Xwt.Mac/MacEngine.cs
@@ -155,6 +155,14 @@ namespace Xwt.Mac
NSApplication.SharedApplication.Terminate(appDelegate);
}
+ public override void ExitApplication(int exitCode)
+ {
+ if (exitCode == 0)
+ NSApplication.SharedApplication.Terminate(appDelegate);
+ else
+ Environment.Exit(exitCode);
+ }
+
static Selector hijackedSel = new Selector ("hijacked_loadNibNamed:owner:");
static Selector originalSel = new Selector ("loadNibNamed:owner:");
diff --git a/Xwt/Xwt.Backends/ToolkitEngineBackend.cs b/Xwt/Xwt.Backends/ToolkitEngineBackend.cs
index e36a5f74..e3181dc4 100644
--- a/Xwt/Xwt.Backends/ToolkitEngineBackend.cs
+++ b/Xwt/Xwt.Backends/ToolkitEngineBackend.cs
@@ -123,6 +123,14 @@ namespace Xwt.Backends
public abstract void ExitApplication ();
/// <summary>
+ /// Exits the main GUI loop with an exit code
+ /// </summary>
+ public virtual void ExitApplication(int exitCode)
+ {
+ ExitApplication();
+ }
+
+ /// <summary>
/// Releases all resource used by the <see cref="Xwt.Backends.ToolkitEngineBackend"/> object.
/// </summary>
public virtual void Dispose ()
diff --git a/Xwt/Xwt/Application.cs b/Xwt/Xwt/Application.cs
index 50e66313..649a517e 100644
--- a/Xwt/Xwt/Application.cs
+++ b/Xwt/Xwt/Application.cs
@@ -174,6 +174,17 @@ namespace Xwt
}
/// <summary>
+ /// Exits the Xwt application.
+ /// </summary>
+ public static void Exit(int exitCode)
+ {
+ toolkit.InvokePlatformCode(() => engine.ExitApplication(exitCode));
+
+ if (SynchronizationContext.Current is XwtSynchronizationContext)
+ XwtSynchronizationContext.Uninstall();
+ }
+
+ /// <summary>
/// Releases all resources used by the application
/// </summary>
/// <remarks>This method must be called before the application process ends</remarks>