Sadly, that does not work. 

performSelector:withObject:afterDelay: will only perform the selector after a 
delay after the mouse button goes up. I had actually tried doing this manually 
with the code

NSTimer *mouseStillDownTimer = [NSTimer timerWithTimeInterval:1 target:self 
selector:@selector(mouseStillDown:) userInfo:NULL repeats:NO];
NSRunLoop       *currentRunLoop = [NSRunLoop currentRunLoop];
        
[currentRunLoop addTimer:mouseStillDownTimer forMode:NSDefaultRunLoopMode];

when I first noticed the timers (which performSelector:withObject:afterDelay 
relies upon) don't fire until after the mouse button goes up.

I believe this is why there are NSPeriodic events (see the Other Types of 
Events section in the Cocoa Event-Handling Guide).

Still, I am not certain how to determine what mouse buttons are down.

The NSEvent methods are either >= 10.6 or for tablets only.

I suppose I could go to Carbon (StillDown?) to get this information, but I was 
hoping for a Cocoa based solution.

Thank you.


On Feb 1, 2010, at 4:44 PM, Richard Penwell wrote:

> An alternative technique would be roughly:
> 
> 1. Detect mouse down, set state down
> 2. Call performSelectorAfterDelay 1 second with a test method
> 3. If the mouse goes up, set state up
> 4. In the test method, test if the state is down...
> 
> On Feb 1, 2010, at 4:42 PM, Eric Gorr wrote:
> 
>> What I am trying to accomplish is displaying a menu (perhaps with 
>> NSPopUpButtonCell's performClickWithFrame method) after a user clicks on a 
>> sublass of NSButton and holds the left mouse button for >= 1 second.
>> 
>> Is anyone aware of any sample code doing this?
>> 
>> I imagine I will need to customize the mouseDown method of NSButton with a 
>> loop that checks to see if the mouse button is still down. However, I am 
>> uncertain how to determine this. I have seen NSEvent's pressedMouseButtons 
>> method, but it only became available with the 10.6 SDK and I need something 
>> that works with 10.5.
>> 
>> I am also thinking that I may be taking the wrong approach, so any 
>> suggestions on what approach I should be taking would be appreciated.
>> 
>> Thank you._______________________________________________
>> 
>> 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:
>> http://lists.apple.com/mailman/options/cocoa-dev/almightylinuxgod%40me.com
>> 
>> This email sent to almightylinux...@me.com
> 

_______________________________________________

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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to