aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElise <elise@headpat.services>2020-03-29 14:47:37 +0200
committerGitHub <noreply@github.com>2020-03-29 23:47:37 +1100
commit5c1757f7c29fc06577b5fc551dd3d76b12b281d3 (patch)
tree8773e05b374ca98b17fc24b1eb7f91173c287ef7
parent7ad8b3ef7556bd5cfc552cad90017ab2247ffa8c (diff)
Escape key now brings up a dialog to confirm you want to stop emulation (#1044)
* Add a dialog to make sure user wants to stop emulation when esc is pressed * Remove unneccesary space * Fix formatting * Remove unnessecary spaces * Fix formatting for member of GtkDialog
-rw-r--r--Ryujinx/Ui/GLRenderer.cs5
-rw-r--r--Ryujinx/Ui/GtkDialog.cs33
2 files changed, 37 insertions, 1 deletions
diff --git a/Ryujinx/Ui/GLRenderer.cs b/Ryujinx/Ui/GLRenderer.cs
index fa41ca4c..1105004a 100644
--- a/Ryujinx/Ui/GLRenderer.cs
+++ b/Ryujinx/Ui/GLRenderer.cs
@@ -138,7 +138,10 @@ namespace Ryujinx.Ui
{
if (keyboard.IsKeyDown(OpenTK.Input.Key.Escape))
{
- Exit();
+ if (GtkDialog.CreateExitDialog())
+ {
+ Exit();
+ }
}
else
{
diff --git a/Ryujinx/Ui/GtkDialog.cs b/Ryujinx/Ui/GtkDialog.cs
index b4e9fa1c..698b8b7e 100644
--- a/Ryujinx/Ui/GtkDialog.cs
+++ b/Ryujinx/Ui/GtkDialog.cs
@@ -5,6 +5,8 @@ namespace Ryujinx.Ui
{
internal class GtkDialog
{
+ internal static bool _isExitDialogOpen = false;
+
internal static void CreateDialog(string title, string text, string secondaryText)
{
MessageDialog errorDialog = new MessageDialog(null, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, null)
@@ -29,5 +31,36 @@ namespace Ryujinx.Ui
{
CreateDialog("Ryujinx - Error", "Ryujinx has encountered an error", errorMessage);
}
+
+ internal static bool CreateExitDialog()
+ {
+ if (_isExitDialogOpen)
+ {
+ return false;
+ }
+
+ _isExitDialogOpen = true;
+
+ MessageDialog messageDialog = new MessageDialog(null, DialogFlags.Modal, MessageType.Question, ButtonsType.OkCancel, null)
+ {
+ Title = "Ryujinx - Exit",
+ Icon = new Gdk.Pixbuf(Assembly.GetExecutingAssembly(), "Ryujinx.Ui.assets.Icon.png"),
+ Text = "Are you sure you want to stop emulation?",
+ SecondaryText = "All unsaved data will be lost",
+ WindowPosition = WindowPosition.Center
+ };
+
+ messageDialog.SetSizeRequest(100, 20);
+ ResponseType res = (ResponseType)messageDialog.Run();
+ messageDialog.Dispose();
+ _isExitDialogOpen = false;
+
+ if (res == ResponseType.Ok)
+ {
+ return true;
+ }
+
+ return false;
+ }
}
}