According to the release notes for 10.7, NSTableView should now support contextual menus at the individual cell level:
> NSTableView/NSOutlineView - Contextual menu support > > NSTableView and NSOutlineView now have better contextual menu support. Please > see the DragNDropOutlineView demo application for an example of how to > properly do contextual menus with a TableView. > > The key thing to note is that clickedRow and clickedColumn will now both be > valid when a contextual menu is popped up. In addition, one can dynamically > set the popup menu for a particular cell/column in the delegate method > willDisplayCell:. NSTableView handles this by properly overriding > menuForEvent:, setting the clickedRow/clickedColumn, and calling [NSCell > menuForEvent:inRect:ofView] to find the correct menu. If no menu was > returned, the menu for the NSTableView will be used. If one right clicks on a > selection of items, all the items are highlighted. One should check to see if > clickedRow is one of the selected rows, and if it is then do the menu > operation on all the selected rows. The clickedRow and clickedColumn > properties will still be valid when the action is sent from the NSMenuItem. > But when I implement the method in my custom cell, though it's being called correctly, -clickedRow and -clickedColumn are returning -1. As a result I can't tell which row I right-clicked, so I can't process the menu further. Has this change been revoked in 10.8 (which I'm using at the moment)? Code: - (NSMenu*) menuForEvent:(NSEvent *)event inRect:(NSRect)cellFrame ofView:(NSView *)view { NSMenu* menu = nil; if([view respondsToSelector:@selector(delegate)]) { id tvDelegate = [(id)view delegate]; if([view isKindOfClass:[NSTableView class]] && [tvDelegate respondsToSelector:@selector(contextualMenuForTableView:tableColumn:row:)]) { NSTableView* tv = (NSTableView*) view; NSInteger row, column; row = [tv clickedRow]; column = [tv clickedColumn]; --Graham _______________________________________________ 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