diff --git a/Ryujinx/Ui/GLRenderer.cs b/Ryujinx/Ui/GLRenderer.cs index fa41ca4c89..38ba2f8f38 100644 --- a/Ryujinx/Ui/GLRenderer.cs +++ b/Ryujinx/Ui/GLRenderer.cs @@ -116,7 +116,7 @@ namespace Ryujinx.Ui } public void HandleScreenState(KeyboardState keyboard) - { + { bool toggleFullscreen = keyboard.IsKeyDown(OpenTK.Input.Key.F11) || ((keyboard.IsKeyDown(OpenTK.Input.Key.AltLeft) || keyboard.IsKeyDown(OpenTK.Input.Key.AltRight)) @@ -138,7 +138,8 @@ 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 b4e9fa1caa..fe38ddf7bb 100644 --- a/Ryujinx/Ui/GtkDialog.cs +++ b/Ryujinx/Ui/GtkDialog.cs @@ -29,5 +29,33 @@ namespace Ryujinx.Ui { CreateDialog("Ryujinx - Error", "Ryujinx has encountered an error", errorMessage); } + + internal static bool isExitDialogOpen = false; + 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; + } } }