mirror of https://github.com/xemu-project/xemu.git
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
|
@interface QemuCocoaAppController : NSObject
|
||||||
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6)
|
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6)
|
||||||
<NSApplicationDelegate>
|
<NSWindowDelegate, NSApplicationDelegate>
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -829,6 +829,7 @@ QemuCocoaView *cocoaView;
|
||||||
- (void)powerDownQEMU:(id)sender;
|
- (void)powerDownQEMU:(id)sender;
|
||||||
- (void)ejectDeviceMedia:(id)sender;
|
- (void)ejectDeviceMedia:(id)sender;
|
||||||
- (void)changeDeviceMedia:(id)sender;
|
- (void)changeDeviceMedia:(id)sender;
|
||||||
|
- (BOOL)verifyQuit;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@implementation QemuCocoaAppController
|
@implementation QemuCocoaAppController
|
||||||
|
@ -862,6 +863,7 @@ QemuCocoaView *cocoaView;
|
||||||
#endif
|
#endif
|
||||||
[normalWindow makeKeyAndOrderFront:self];
|
[normalWindow makeKeyAndOrderFront:self];
|
||||||
[normalWindow center];
|
[normalWindow center];
|
||||||
|
[normalWindow setDelegate: self];
|
||||||
stretch_video = false;
|
stretch_video = false;
|
||||||
|
|
||||||
/* Used for displaying pause on the screen */
|
/* Used for displaying pause on the screen */
|
||||||
|
@ -933,6 +935,26 @@ QemuCocoaView *cocoaView;
|
||||||
return YES;
|
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
|
- (void)startEmulationWithArgc:(int)argc argv:(char**)argv
|
||||||
{
|
{
|
||||||
COCOA_DEBUG("QemuCocoaAppController: startEmulationWithArgc\n");
|
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
|
@end
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue