Hi Graham

On 09.12.2008, at 04:51, Graham Cox wrote:

In my app I have an NSOutlineView. I have contextual menus relating to the overall table, but also relating to an individual item row. I notice that when I right-click on a row, I get a special highlight (blue outline) independent of the selected row. How can I find out what row that was when the menu item's action is called? I need to handle the menu differently depending on whether a specific row was right-clicked or just the general table.


You have to subclass NSTableView and override menuforEven as shown below.

@implementation MyTableView
- (NSMenu *)menuForEvent:(NSEvent *)theEvent
{
NSPoint p = [self convertPoint:[theEvent locationInWindow] fromView:nil];
    NSInteger row = [self rowAtPoint:p];

    if (row == -1)
        return nil;

[self selectRowIndexes:[NSIndexSet indexSetWithIndex:row] byExtendingSelection:NO];

    return [self menu];
}

@end

If you click below the last row, your rownum will be '-1'. The above example does only select the row you clicked on by
setting 'byExtendingSelection' to NO.

Regards
Patrick
_______________________________________________

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 [EMAIL PROTECTED]

Reply via email to