On May 20, 2019, at 11:29, James Walker <list2@...> wrote:
Does your control actually become first responder? That might be necessary for flagsChanged: to go to your control.
Aha! No, it was not. It does now and I’m getting flagsChanged. I guess that makes sense that the OS only sends those to the firstResponder. Thanks for your hunch.
Another option might be to use +[NSEvent addLocalMonitorForEventsMatchingMask:handler:].
Extending your suggestion, I added a global monitor so I could change the cursor in my floating window when the app wasn’t frontmost, but sadly it appears you can’t change the cursor when you’re not the front app, even if the mouse is over your window that’s in front of other apps’ windows. Oh well. The app I’m replacing couldn’t do that either.
On 5/17/19 11:22 PM, Steve Mills via Groups.Io wrote:
What do you have to do these days to make this work? I tried returning YES from acceptsFirstResponder, as was suggested somewhere. There is 1 NSTrackingArea added to the view, using options NSTrackingCursorUpdate | NSTrackingMouseEnteredAndExited | NSTrackingActiveAlways | NSTrackingInVisibleRect | NSTrackingEnabledDuringMouseDrag. isOpaque returns NO. Not sure what else to try. Just trying to set the cursor when modifiers change.
Does your control actually become first responder? That might be necessary for flagsChanged: to go to your control.
A less than perfect option would be to poll the modifier flags on mouse moves.
Another option might be to use +[NSEvent addLocalMonitorForEventsMatchingMask:handler:].
The only case in which I have personal experience with receiving NSFlagsChanged is when I wrote my own local event loop that repeatedly called -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:].
What do you have to do these days to make this work? I tried returning YES from acceptsFirstResponder, as was suggested somewhere.
There is 1 NSTrackingArea added to the view, using options NSTrackingCursorUpdate | NSTrackingMouseEnteredAndExited | NSTrackingActiveAlways | NSTrackingInVisibleRect | NSTrackingEnabledDuringMouseDrag.
isOpaque returns NO.
Not sure what else to try. Just trying to set the cursor when modifiers change.