mirror of https://github.com/libsdl-org/SDL.git
Retain mouse focus as long as we're getting mouse events
Fixes https://github.com/libsdl-org/SDL/issues/12218 Fixes https://github.com/libsdl-org/SDL/issues/12323
This commit is contained in:
parent
3b8cb62283
commit
911e53dece
|
|
@ -447,13 +447,23 @@ void Cocoa_HandleMouseEvent(SDL_VideoDevice *_this, NSEvent *event)
|
||||||
float deltaX, deltaY;
|
float deltaX, deltaY;
|
||||||
bool seenWarp;
|
bool seenWarp;
|
||||||
|
|
||||||
switch ([event type]) {
|
// All events except NSEventTypeMouseExited can only happen if the window
|
||||||
case NSEventTypeMouseEntered:
|
// has mouse focus, so we'll always set the focus even if we happen to miss
|
||||||
Cocoa_MouseFocus = [event window];
|
// NSEventTypeMouseEntered, which apparently happens if the window is
|
||||||
return;
|
// created under the mouse on macOS 12.7
|
||||||
case NSEventTypeMouseExited:
|
NSEventType event_type = [event type];
|
||||||
|
if (event_type == NSEventTypeMouseExited) {
|
||||||
Cocoa_MouseFocus = NULL;
|
Cocoa_MouseFocus = NULL;
|
||||||
|
} else {
|
||||||
|
Cocoa_MouseFocus = [event window];
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (event_type) {
|
||||||
|
case NSEventTypeMouseEntered:
|
||||||
|
case NSEventTypeMouseExited:
|
||||||
|
// Focus is handled above
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case NSEventTypeMouseMoved:
|
case NSEventTypeMouseMoved:
|
||||||
case NSEventTypeLeftMouseDragged:
|
case NSEventTypeLeftMouseDragged:
|
||||||
case NSEventTypeRightMouseDragged:
|
case NSEventTypeRightMouseDragged:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue