Tito Ciuro wrote:
Hi James,

On Oct 13, 2008, at 6:23 PM, James Walker wrote:

I need to be notified when a row of an NSOutlineView was clicked, and find out which row. Do I need to subclass it? Just thought I'd ask, since I've read that new Cocoa programmers might tend to subclass more than they ought.

The NSOutlineViewSelectionDidChangeNotification is not sufficient, because in the case of a modified click that causes a multiple selection, I need to know the individual row that was clicked.

Check - (void)outlineViewSelectionDidChange:(NSNotification *)notification:

- (void)outlineViewSelectionDidChange:(NSNotification *)notification
{
    NSInteger row = [mOutlineView selectedRow];
    ...
}

Don't forget to set the delegate.

Thanks... Hmm, that will usually do the right thing, but I'm not sure it will always do what I want. Consider this sequence of events:

1. Row 5 is clicked.
2. Row 2 is shift clicked, resulting in rows 2, 3, 4, 5 being selected.
3. Row 3 is shift-clicked, shrinking the selection to 3, 4, 5.

Now, what will [mOutlineView selectedRow] be? The documentation says it returns "the index of the last row selected or added to the selection". No row was added to the selection, so what does "last row selected" mean? If "last" means "most recently", it's unclear, because rows 3 and 4 were selected at the same time. I guess I could experiment.
--
  James W. Walker, Innoventive Software LLC
  <http://www.frameforge3d.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 [EMAIL PROTECTED]

Reply via email to