mirror of
https://github.com/mpv-player/mpv
synced 2025-01-09 00:19:32 +00:00
9ac05a575c
we reported some unnecessary mouse movements and not all mouse enter and leave events. that lead to wrongly reported activity on hover areas like on the OSC or comparable lua scripts. sometimes menu items were shown that shouldn't be shown or they didn't vanish because of the missing mouse leave event. this incorporates @torque's fix for mouse leave events that weren't triggered during a transition, like going to fullscreen. the tracking area was updated but the mouse never left that area because it was never over it. besides some known cursor visibility bugs the aforementioned changes also revealed some other bugs that weren't reproducible before because of the missbehavior. known issues, in some cases the cursor doesn't show or hide properly. for example when switching spaces, switching Apps via CMD+Tab or a system notification. former two could be fixed while keeping our current blank cursor approach. though the notification case couldn't. there is no event or similar to detect a notification and the cursor visibility couldn't be recovered in any way. new issues, i noticed that our event view isn't initialised yet when the first VOCTRL_SET_CURSOR_VISIBILITY event gets dispatched, which depends on the event view to be initialised. so the mouse cursor couldn't be hidden when mpv was opened and the cursor was within the window bounds. this wasn't noticeable before because of various bugs and unwanted behavior that have been fixed with this. now, in case the event view isn't ready yet, we set the visibility at a later point when the event view is ready and a helper flag is set. Fixes #1817 #3856 #4147
39 lines
1.3 KiB
Objective-C
39 lines
1.3 KiB
Objective-C
/*
|
|
* This file is part of mpv.
|
|
*
|
|
* mpv is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* mpv is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along
|
|
* with mpv. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#import <Cocoa/Cocoa.h>
|
|
#include "video/out/vo.h"
|
|
|
|
@interface MpvCocoaAdapter : NSObject<NSWindowDelegate>
|
|
- (void)setNeedsResize;
|
|
- (void)signalMouseMovement:(NSPoint)point;
|
|
- (void)putKeyEvent:(NSEvent*)event;
|
|
- (void)putKey:(int)mpkey withModifiers:(int)modifiers;
|
|
- (void)putAxis:(int)mpkey delta:(float)delta;
|
|
- (void)putCommand:(char*)cmd;
|
|
- (void)handleFilesArray:(NSArray *)files;
|
|
- (void)didChangeWindowedScreenProfile:(NSNotification *)notification;
|
|
- (void)performAsyncResize:(NSSize)size;
|
|
|
|
- (BOOL)isInFullScreenMode;
|
|
- (BOOL)keyboardEnabled;
|
|
- (BOOL)mouseEnabled;
|
|
|
|
- (NSScreen *)getTargetScreen;
|
|
@property(nonatomic, assign) struct vo *vout;
|
|
@end
|