Re: Outline view selection doesn't move when items are inserted?
Re: Outline view selection doesn't move when items are inserted?
- Subject: Re: Outline view selection doesn't move when items are inserted?
- From: John Stiles <email@hidden>
- Date: Thu, 17 Jan 2008 10:37:39 -0800
Ooh, really? I figured that would be a problem for backwards
compatibility. I guess it could be an optional thing though...
[outlineView setSelectionTracksItems:YES] or something.
I've actually filed a bug against the docs already, saying that they
should spell out the behavior better:
rdar://5692703 [Docs] NSOutlineView docs don't discuss
preservation of selected rows
If you want me to file a separate feature request against NSOutlineView
as well, I will happily do it.
Corbin Dunn wrote:
Since this seems like a common operation, feel free to log this as a
bug/feature request against NSOutlineView. Reply back with the bug
number.
The main problem: TableView keeps the selection on the same row, and
doesn't know about 'items'. NSOutlineView knows about items, but has
never had the smarts to restore the selected items. We could easily
add this.
thanks,
corbin
On Jan 17, 2008, at 8:22 AM, John Stiles wrote:
OK, this is a little disappointing; fortunately it's not too hard to
work around on my own. Thanks for confirming my hypothesis.
Jerry Krinock wrote:
On 2008 Jan, 16, at 19:00, John Stiles wrote:
I would have assumed that the selection tracks an /item/, and
doesn't just sit on a particular row.
Is this behavior to be expected? Seems kinda weird to me.
Well, since you didn't expect it, it is "not expected". However, I
do believe that this is the way it has always worked. Probably has
something to do with the data source being a separate object.
In my code, I get the 'selectedObjects' before -reloadData, then
after -reloadData, restore it. Here is some ugly old code I found
while verifying my memory:
// Restore selection
e = [selectedObjects objectEnumerator] ;
NSMutableIndexSet* selectionIndexes = [[NSMutableIndexSet alloc]
init] ;
while ((item = [e nextObject])) {
int index = [outlineView rowForItem:item] ;
if (index != NSNotFound) {
[selectionIndexes addIndex:index] ;
}
}
[outlineView selectRowIndexes:selectionIndexes
byExtendingSelection:NO] ;
[selectionIndexes release] ;
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden