aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;
+ }
}
}