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
This commit is contained in:
Elise 2020-03-29 14:47:37 +02:00 committed by GitHub
parent 7ad8b3ef75
commit 5c1757f7c2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 37 additions and 1 deletions

View file

@ -137,9 +137,12 @@ namespace Ryujinx.Ui
else else
{ {
if (keyboard.IsKeyDown(OpenTK.Input.Key.Escape)) if (keyboard.IsKeyDown(OpenTK.Input.Key.Escape))
{
if (GtkDialog.CreateExitDialog())
{ {
Exit(); Exit();
} }
}
else else
{ {
ParentWindow.Fullscreen(); ParentWindow.Fullscreen();

View file

@ -5,6 +5,8 @@ namespace Ryujinx.Ui
{ {
internal class GtkDialog internal class GtkDialog
{ {
internal static bool _isExitDialogOpen = false;
internal static void CreateDialog(string title, string text, string secondaryText) internal static void CreateDialog(string title, string text, string secondaryText)
{ {
MessageDialog errorDialog = new MessageDialog(null, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, null) 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); 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;
}
} }
} }