ui/cocoa.m: verify with user before quitting QEMU
This patch prevents the user from accidentally quitting QEMU by pushing Command-Q or by pushing the close button on the main window. When the user does one of these two things, a dialog box appears verifying with the user if he or she wants to quit QEMU. Signed-off-by: John Arbuckle <programmingkidx@gmail.com> Message-id: 29169A74-0347-47F5-934F-A5AD24C225CA@gmail.com Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
9e071429e6
commit
d9bc14f63e
39
ui/cocoa.m
39
ui/cocoa.m
@ -809,7 +809,7 @@ QemuCocoaView *cocoaView;
|
||||
*/
|
||||
@interface QemuCocoaAppController : NSObject
|
||||
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6)
|
||||
<NSApplicationDelegate>
|
||||
<NSWindowDelegate, NSApplicationDelegate>
|
||||
#endif
|
||||
{
|
||||
}
|
||||
@ -829,6 +829,7 @@ QemuCocoaView *cocoaView;
|
||||
- (void)powerDownQEMU:(id)sender;
|
||||
- (void)ejectDeviceMedia:(id)sender;
|
||||
- (void)changeDeviceMedia:(id)sender;
|
||||
- (BOOL)verifyQuit;
|
||||
@end
|
||||
|
||||
@implementation QemuCocoaAppController
|
||||
@ -862,6 +863,7 @@ QemuCocoaView *cocoaView;
|
||||
#endif
|
||||
[normalWindow makeKeyAndOrderFront:self];
|
||||
[normalWindow center];
|
||||
[normalWindow setDelegate: self];
|
||||
stretch_video = false;
|
||||
|
||||
/* Used for displaying pause on the screen */
|
||||
@ -933,6 +935,26 @@ QemuCocoaView *cocoaView;
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (NSApplicationTerminateReply)applicationShouldTerminate:
|
||||
(NSApplication *)sender
|
||||
{
|
||||
COCOA_DEBUG("QemuCocoaAppController: applicationShouldTerminate\n");
|
||||
return [self verifyQuit];
|
||||
}
|
||||
|
||||
/* Called when the user clicks on a window's close button */
|
||||
- (BOOL)windowShouldClose:(id)sender
|
||||
{
|
||||
COCOA_DEBUG("QemuCocoaAppController: windowShouldClose\n");
|
||||
[NSApp terminate: sender];
|
||||
/* If the user allows the application to quit then the call to
|
||||
* NSApp terminate will never return. If we get here then the user
|
||||
* cancelled the quit, so we should return NO to not permit the
|
||||
* closing of this window.
|
||||
*/
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (void)startEmulationWithArgc:(int)argc argv:(char**)argv
|
||||
{
|
||||
COCOA_DEBUG("QemuCocoaAppController: startEmulationWithArgc\n");
|
||||
@ -1125,6 +1147,21 @@ QemuCocoaView *cocoaView;
|
||||
}
|
||||
}
|
||||
|
||||
/* Verifies if the user really wants to quit */
|
||||
- (BOOL)verifyQuit
|
||||
{
|
||||
NSAlert *alert = [NSAlert new];
|
||||
[alert autorelease];
|
||||
[alert setMessageText: @"Are you sure you want to quit QEMU?"];
|
||||
[alert addButtonWithTitle: @"Cancel"];
|
||||
[alert addButtonWithTitle: @"Quit"];
|
||||
if([alert runModal] == NSAlertSecondButtonReturn) {
|
||||
return YES;
|
||||
} else {
|
||||
return NO;
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user