macOS, prevent multiple CGDisplayHideCursor calls unpaired with CGDisplayShowCursor.

(cherry picked from commit 7a250b579f)
This commit is contained in:
bruvzg 2020-06-22 11:38:22 +03:00 committed by Rémi Verschelde
parent d2aa3031dc
commit e2675e9462
1 changed files with 6 additions and 2 deletions

View File

@ -3072,10 +3072,14 @@ void OS_OSX::set_mouse_mode(MouseMode p_mode) {
// Apple Docs state that the display parameter is not used. // Apple Docs state that the display parameter is not used.
// "This parameter is not used. By default, you may pass kCGDirectMainDisplay." // "This parameter is not used. By default, you may pass kCGDirectMainDisplay."
// https://developer.apple.com/library/mac/documentation/graphicsimaging/reference/Quartz_Services_Ref/Reference/reference.html // https://developer.apple.com/library/mac/documentation/graphicsimaging/reference/Quartz_Services_Ref/Reference/reference.html
if (mouse_mode == MOUSE_MODE_VISIBLE || mouse_mode == MOUSE_MODE_CONFINED) {
CGDisplayHideCursor(kCGDirectMainDisplay); CGDisplayHideCursor(kCGDirectMainDisplay);
}
CGAssociateMouseAndMouseCursorPosition(false); CGAssociateMouseAndMouseCursorPosition(false);
} else if (p_mode == MOUSE_MODE_HIDDEN) { } else if (p_mode == MOUSE_MODE_HIDDEN) {
if (mouse_mode == MOUSE_MODE_VISIBLE || mouse_mode == MOUSE_MODE_CONFINED) {
CGDisplayHideCursor(kCGDirectMainDisplay); CGDisplayHideCursor(kCGDirectMainDisplay);
}
CGAssociateMouseAndMouseCursorPosition(true); CGAssociateMouseAndMouseCursorPosition(true);
} else { } else {
CGDisplayShowCursor(kCGDirectMainDisplay); CGDisplayShowCursor(kCGDirectMainDisplay);