]> xenbits.xensource.com Git - qemu-xen.git/commitdiff
ui/cocoa: release mouse when user switches away from QEMU window
authorCarwyn Ellis <carwynellis@gmail.com>
Sun, 2 Jan 2022 17:41:53 +0000 (17:41 +0000)
committerPhilippe Mathieu-Daudé <f4bug@amsat.org>
Tue, 15 Mar 2022 12:36:33 +0000 (13:36 +0100)
This resolves an issue where using command-tab to switch between QEMU
and other windows on the host can leave the mouse pointer visible.

By releasing the mouse when the user switches away, the user must left
click on the QEMU window when switching back in order to hide the
pointer and return control to the guest.

This appraoch ensures that the calls to NSCursor hide and unhide are
always balanced and thus work correctly when invoked.

Signed-off-by: Carwyn Ellis <carwynellis@gmail.com>
Reviewed-by: Akihiko Odaki <akihiko.odaki@gmail.com>
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
ui/cocoa.m

index 1aa51c42dc5d8bb87745f5948c22952896b06dd8..d20c74d93828c6400433b15a4db2d62ab9aa05fc 100644 (file)
@@ -1261,6 +1261,7 @@ QemuCocoaView *cocoaView;
 - (void) applicationWillResignActive: (NSNotification *)aNotification
 {
     COCOA_DEBUG("QemuCocoaAppController: applicationWillResignActive\n");
+    [cocoaView ungrabMouse];
     [cocoaView raiseAllKeys];
 }
 
@@ -2000,6 +2001,7 @@ static void cocoa_display_init(DisplayState *ds, DisplayOptions *opts)
             [(QemuCocoaAppController *)[[NSApplication sharedApplication] delegate] toggleFullScreen: nil];
         });
     }
+
     if (opts->has_show_cursor && opts->show_cursor) {
         cursor_hide = 0;
     }