It's looking strongly like a bug in the OS or trackpad driver, and it appears that the additional unexpected events, while odd, are not a direct cause of the bug I have.
I'm responding to 4 event types: LDown, LUp, LDragged and Moved. I expect Down-Dragged-Up-Moved-Down-Dragged-Up-Moved, etc. which is what I get reliably from a mouse. With the trackpad, I also get this most of the time, but sometimes it goes directly from moved to dragged without a mouse down, and vice versa sometimes with and without a mouse up. e.g. Down-Dragged-Up-Moved-Dragged-Moved-Dragged-Up-Moved... The missing mouse-downs are a problem because my code uses that to advance the state of a state machine, and because that's not happening it isn't working properly. There is a very distinct click of the trackpad's button, but no mouse-down gets delivered. The "dragging finger" generally remains on the trackpad while I click or release the trackpad's mouse button. Again, this seems incorrect to me - the button clicking should ALWAYS send a mouse down and mouse up no matter what other fingers are doing. I have turned off all the fancy gesture detection in system prefs, but that made no difference. This is very frustrating because there's probably little I can do in my code to workaround this. I'm going to try setting a flag that means "expect a mouse down" and if I get a drag instead, treat the first drag event as a mouse down. That might work around it but it's pretty poor that the system really isn't working as it should. Surely others have noticed this? I would have thought mouse downs going missing in a view would be a pretty obvious bug. --Graham On 07/11/2012, at 11:08 AM, Graham Cox <graham....@bigpond.com> wrote: > Hi all, > > Following up on a problem I was having a week or so back with receiving > multiple mouse-ups in an event loop, I've narrowed the problem down to the > events coming from a trackpad instead of a mouse. > > Here's an odd thing: > > NSUInteger mask = NSLeftMouseDownMask | NSLeftMouseUpMask | > NSLeftMouseDraggedMask | NSMouseMovedMask | NSScrollWheelMask | NSKeyDownMask; > while( loop ) > { > theEvent = [NSApp nextEventMatchingMask:mask untilDate:[NSDate > distantFuture] inMode:NSEventTrackingRunLoopMode dequeue:YES]; > > > This is the fragment of code that sets up the mask and grabs the event. I > should only get those events that match the mask, right? With a mouse, I do, > but with a trackpad I'm also getting right mouse down, right mouse dragged > and right mouse up returned. Is that expected? It seems incorrect. > > I'm not sure it has a bearing on my bug because I do ignore those events, but > OTOH, the bug is only manifest using the trackpad. (Debugging this in the > debugger is impossible due to the dynamic nature of the loop, so I'm having > to try and log output at key points). _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com