On Mar 9, 2010, at 8:15 PM, Keith Blount wrote:

> Hi Martin,
> 
> Does something like the following not work for you?
> 
> NSTextAttachment *attachment = [[textView textStorage] 
> attribute:NSAttachmentAttributeName atIndex:charIndex effectiveRange:NULL];
> 
> if (attachment)// Possibly check it’s of the kind of attachment you want to 
> handle, too
> return myCustomMenu;
> 
> I just did a quick test and this seemed to work fine with an image 
> attachment. (As I say, I override -menuForEvent: for Tiger support, but I do 
> pretty much the same there, only having to do the extra work and convert the 
> event's -locationInWindow to an index manually.)
> 

Thanks a lot, Keith. That looks like the thing I need but somehow I didn't find 
it. I'll give it a try.

Martin

> All the best,
> Keith
> 
> 
> ----- Original Message ----
> From: Martin Hewitson <martin.hewit...@aei.mpg.de>
> To: Keith Blount <keithblo...@yahoo.com>
> Cc: Martin Hewitson <martin.hewit...@aei.mpg.de>; cocoa-dev@lists.apple.com
> Sent: Tue, March 9, 2010 6:58:15 PM
> Subject: Re: NSTextView attachments and context menus
> 
> Hi Keith,
> 
> 
>> As (the other) Martin says, you can subclass NSTextView and override 
>> -menuForEvent: for this, which is the best way of doing it if you need to 
>> provide support for systems running versions of OS X earlier than Leopard. 
>> If you only need to support Leopard or above, though, Leopard introduced a 
>> delegate method which should do the same thing and obviate the need to 
>> subclass:
>> 
>> - (NSMenu *)textView:(NSTextView *)view menu:(NSMenu *)menu 
>> forEvent:(NSEvent *)event atIndex:(NSUInteger)charIndex
>> 
> 
> Yes, I went down this route a little, but I was unable to figure out how to 
> check for an attachment at that character index. I guess I need to look at 
> this again. It seems like the elegant way to go since I only support Leopard 
> and above.
> 
> Thanks again,
> 
> Martin
> 
>> So you should just be able to check for an attachment at charIndex and if 
>> one is detected return your own custom menu; otherwise return the standard 
>> menu that is passed in. (Note that I've never used this delegate method 
>> myself, though, as my app still needs to support Tiger, so I use Martin's 
>> way.)
>> 
>> All the best,
>> Keith
>> 
>> --- Original Message ---
>> 
>> Dear list,
>> 
>> I have an NSTextView which support dragging files in, either to create a 
>> link to the file, or to add the file as an attachment. So far so good. 
>> 
>> Now I want to offer the user a context menu to perform operations on the 
>> attachment (open, save, etc). So far I was unable to find a way to intercept 
>> a 'right-click' on the nstextview to offer a custom context menu. What I did 
>> get working is the single left-click version by implementing 
>> textView:clickedOnCell:inRect:atIndex: in the text view's delegate. In that 
>> method I create a context menu and show it at the mouse location using 
>> NSMenu's popUpContextMenu:withEvent:forView:. That works, but with one 
>> problem. The context menu that appears has two additional menu items: 
>> "Import Image" and "Capture Selection from Screen". So I have three 
>> questions:
>> 
>> 1) Is there a better way to achieve what I want?
>> 2) Where do these additional menu items come from? Are they services?
>> 3) How could I do this with a right-click instead of a single-click?
>> 
>> I have another question about attachments, but I'll post that separately.
>> 
>> Thanking you in advance,
>> 
>> Martin
>> 
>> 
>> 
> 
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> Martin Hewitson
> Albert-Einstein-Institut
> Max-Planck-Institut fuer 
>    Gravitationsphysik und Universitaet Hannover
> Callinstr. 38, 30167 Hannover, Germany
> Tel: +49-511-762-17121, Fax: +49-511-762-5861
> E-Mail: martin.hewit...@aei.mpg.de
> WWW: http://www.aei.mpg.de/~hewitson
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
> 
> 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Martin Hewitson
Albert-Einstein-Institut
Max-Planck-Institut fuer 
    Gravitationsphysik und Universitaet Hannover
Callinstr. 38, 30167 Hannover, Germany
Tel: +49-511-762-17121, Fax: +49-511-762-5861
E-Mail: martin.hewit...@aei.mpg.de
WWW: http://www.aei.mpg.de/~hewitson
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~





_______________________________________________

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