Sorry, haven't had my morning coffee yet. Of course, mouseUp should be:

-(void)mouseUp:(NSEvent*)ev
{
  if ( [timer isValid] ) {
      [timer invalidate];
      [timer release];
      timer = nil;
      // perform single-click action
   }
}

On Wed, Dec 30, 2009 at 11:53 AM, slasktrattena...@gmail.com
<slasktrattena...@gmail.com> wrote:
> Simple. Start a timer on mouse down, invalidate it on mouse up.
> Something like this (written in mail):
>
> NSTimer *timer;
>
> -(void)mouseDown:(NSEvent*)ev
> {
>    timer=[[[NSTimer alloc] blah ...] retain];
> }
>
> -(void)mouseUp:(NSEvent*)ev
> {
>   if ( [timer isValid] ) {
>       [timer invalidate];
>       [timer release];
>       timer = nil;
>    } else {
>     // perform single-click action
>    }
> }
>
> -(void)performHoldAction:(NSTimer*)tmr
> {
>   // pop up menu
> }
>
> -fabian
>
> On Wed, Dec 30, 2009 at 11:18 AM, Gustavo Pizano
> <gustavxcodepic...@gmail.com> wrote:
>> Hello.
>> I want to show a custom menu when the left click its being press for about 1 
>> second on some of my components.. I have being searching and found a apple 
>> example where the use the
>> + 
>> (void)startPeriodicEventsAfterDelay:(NSTimeInterval)delaySecondswithPeriod:(NSTimeInterval)periodSeconds
>>
>> and the stopPeriodicEvents class methods.  I tried implementing something 
>> like:
>>
>>        BOOL timerOn = YES;
>>        NSPoint mouseLoc;
>>        NSLog(@"before loop");
>>        NSUInteger eventMask =  NSLeftMouseDownMask| NSLeftMouseUpMask | 
>> NSPeriodicMask;
>>        while ((theEvent = [[self window] nextEventMatchingMask:eventMask])) {
>>                NSLog(@"onLoop");
>>                switch ([theEvent type]) {
>>                        case NSLeftMouseUp:
>>                                NSLog(@"up");
>>                                timerOn = NO;
>>                                [NSEvent stopPeriodicEvents];
>>                                break;
>>                        case NSLeftMouseDown:
>>                                NSLog(@"down");
>>                                [NSEvent startPeriodicEventsAfterDelay:0.1 
>> withPeriod:0.1];
>>                                break;
>>
>>                        default:
>>                                break;
>>                }
>>        }
>>
>> But of course its completely wrong, it never go out from the loop... I tried 
>> a different approach usign a NSTimer, but found myself going nowhere also...
>>
>> Can somebody give me some advice, or where can I find info?, i have been 
>> looking around but hadn't found something... I know this should have been 
>> asked already, so there must  be a way to do this.
>>
>> Thanks in advance .. and happy new year.
>>
>> Gustavo
>>
>> _______________________________________________
>>
>> 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/slasktrattenator%40gmail.com
>>
>> This email sent to slasktrattena...@gmail.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