From 9b926be5576f0d5cfc4d813a551fe8fabb44e7c8 Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Tue, 11 May 2010 14:13:01 -0400 Subject: [PATCH 01/12] Support CPOutlineView inline editing. --- AppKit/CPOutlineView.j | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/AppKit/CPOutlineView.j b/AppKit/CPOutlineView.j index 7c396f1f9..aae338883 100644 --- a/AppKit/CPOutlineView.j +++ b/AppKit/CPOutlineView.j @@ -887,6 +887,13 @@ var _loadItemInfoForItem = function(/*CPOutlineView*/ anOutlineView, /*id*/ anIt return [_outlineView._outlineViewDataSource outlineView:_outlineView objectValueForTableColumn:aTableColumn byItem:_outlineView._itemsForRows[aRow]]; } +- (void)tableView:(CPTableView)aTableView setObjectValue:(id)aValue forTableColumn:(CPTableColumn)aColumn row:(CPInteger)aRow +{ + if (!(_outlineView._implementedOutlineViewDataSourceMethods & CPOutlineViewDataSource_outlineView_setObjectValue_forTableColumn_byItem_)) + return; + [_outlineView._outlineViewDataSource outlineView:_outlineView setObjectValue:aValue forTableColumn:aColumn byItem:_outlineView._itemsForRows[aRow]]; +} + - (BOOL)tableView:(CPTableView)aTableColumn writeRowsWithIndexes:(CPIndexSet)theIndexes toPasteboard:(CPPasteboard)thePasteboard { if (!(_outlineView._implementedOutlineViewDataSourceMethods & CPOutlineViewDataSource_outlineView_writeItems_toPasteboard_)) @@ -1014,6 +1021,14 @@ var _loadItemInfoForItem = function(/*CPOutlineView*/ anOutlineView, /*id*/ anIt return YES; } +- (BOOL)tableView:(CPTableView)aTableView shouldEditTableColumn:(CPTableColumn)aColumn row:(int)aRow +{ + if ((_outlineView._implementedOutlineViewDelegateMethods & CPOutlineViewDelegate_outlineView_shouldEditTableColumn_item_)) + return [_outlineView._outlineViewDelegate outlineView:_outlineView shouldEditTableColumn:aColumn item:[_outlineView itemAtRow:aRow]]; + + return NO; +} + - (float)tableView:(CPTableView)theTableView heightOfRow:(int)theRow { if ((_outlineView._implementedOutlineViewDelegateMethods & CPOutlineViewDelegate_outlineView_heightOfRowByItem_)) From f90222359751cec2e95c17caaa4fb9f6e19e1ebc Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Tue, 11 May 2010 15:00:25 -0400 Subject: [PATCH 02/12] Edit table cells programmatically (editColumn:row:withEvent:select:). Also implements editedColumn and editedRow. --- AppKit/CPTableView.j | 45 ++++++++++++++++++++++++++++++++++++-------- 1 file changed, 37 insertions(+), 8 deletions(-) diff --git a/AppKit/CPTableView.j b/AppKit/CPTableView.j index 75e096ce5..c70f10759 100644 --- a/AppKit/CPTableView.j +++ b/AppKit/CPTableView.j @@ -1025,12 +1025,44 @@ CPTableViewFirstColumnOnlyAutoresizingStyle = 5; /* * - preparedCellAtColumn:row: */ + //Editing Cells -/* - * - editColumn:row:withEvent:select: - * - editedColumn - * - editedRow + +/*! + Edits the indicated row. */ +- (void)editColumn:(CPInteger)columnIndex row:(CPInteger)rowIndex withEvent:(CPEvent)theEvent select:(BOOL)flag +{ + if (![self isRowSelected:rowIndex]) + [[CPException exceptionWithName:@"Error" reason:@"Attempt to edit row="+rowIndex+" when not selected." userInfo:nil] raise]; + + // TODO Do something with flag. + + _editingCellIndex = CGPointMake(columnIndex, rowIndex); + [self reloadDataForRowIndexes:[CPIndexSet indexSetWithIndex:rowIndex] + columnIndexes:[CPIndexSet indexSetWithIndex:columnIndex]]; +} + +/*! + Returns the column of the currently edited cell, or -1 if none. +*/ +- (CPInteger)editedColumn +{ + if (!_editingCellIndex) + return -1; + return _editingCellIndex.x; +} + +/*! + Returns the row of the currently edited cell, or -1 if none. +*/ +- (CPInteger)editedRow +{ + if (!_editingCellIndex) + return -1; + return _editingCellIndex.x; +} + //Setting Auxiliary Views /* * - setHeaderView: @@ -2814,10 +2846,7 @@ CPTableViewFirstColumnOnlyAutoresizingStyle = 5; shouldEdit = [_delegate tableView:self shouldEditTableColumn:column row:rowIndex]; if (shouldEdit) { - _editingCellIndex = CGPointMake(columnIndex, rowIndex); - [self reloadDataForRowIndexes:[CPIndexSet indexSetWithIndex:rowIndex] - columnIndexes:[CPIndexSet indexSetWithIndex:columnIndex]]; - + [self editColumn:columnIndex row:rowIndex withEvent:nil select:YES]; return; } } From a4cadc5fb351d81fa7a7c14b7d81ca31ad925648 Mon Sep 17 00:00:00 2001 From: cacaodev Date: Thu, 13 May 2010 11:48:52 +0200 Subject: [PATCH 03/12] CPOutlineView: fix for _retargetedDropRow not set when retargeting an item which resulted in a wrong drop line position --- AppKit/CPOutlineView.j | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/AppKit/CPOutlineView.j b/AppKit/CPOutlineView.j index aae338883..3e846db39 100644 --- a/AppKit/CPOutlineView.j +++ b/AppKit/CPOutlineView.j @@ -536,6 +536,12 @@ CPOutlineViewDropOnItemIndex = -1; _retargedChildIndex = theIndex; _shouldRetargetChildIndex = YES; + + // set CPTableView's _retargetedDropRow based on retargetedItem and retargetedChildIndex + var retargetedItemInfo = (_retargetedItem !== nil) ? _itemInfosForItems[[_retargetedItem UID]] : _rootItemInfo, + retargetedChildItem = (_retargedChildIndex !== CPOutlineViewDropOnItemIndex) ? retargetedItemInfo.children[_retargedChildIndex] : _retargetedItem; + + _retargetedDropRow = [self rowForItem:retargetedChildItem]; } - (void)_draggingEnded From 0be23981f33f6c08313ca9bf6500402083ac797b Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Sun, 16 May 2010 20:48:06 -0400 Subject: [PATCH 04/12] Fixed a nonsensical CPTableview highlight style check which only accidentally did the right thing. --- AppKit/CPTableView.j | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AppKit/CPTableView.j b/AppKit/CPTableView.j index c70f10759..c2a4f263a 100644 --- a/AppKit/CPTableView.j +++ b/AppKit/CPTableView.j @@ -2486,7 +2486,7 @@ CPTableViewFirstColumnOnlyAutoresizingStyle = 5; - (void)highlightSelectionInClipRect:(CGRect)aRect { - if (_selectionHighlightStyle === CPTableViewDraggingDestinationFeedbackStyleNone) + if (_selectionHighlightStyle === CPTableViewSelectionHighlightStyleNone) return; var context = [[CPGraphicsContext currentContext] graphicsPort], From d252e9489283e7aeef28ef0425cb437cfecf1792 Mon Sep 17 00:00:00 2001 From: Randall Luecke Date: Wed, 19 May 2010 00:13:05 -0500 Subject: [PATCH 05/12] CPOutlineView item Expande/Collapse delegate method notifications Conflicts: AppKit/CPOutlineView.j --- AppKit/CPOutlineView.j | 72 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 71 insertions(+), 1 deletion(-) diff --git a/AppKit/CPOutlineView.j b/AppKit/CPOutlineView.j index 3e846db39..00d43d849 100644 --- a/AppKit/CPOutlineView.j +++ b/AppKit/CPOutlineView.j @@ -224,8 +224,14 @@ CPOutlineViewDropOnItemIndex = -1; if (!itemInfo) return; - + + if (itemInfo.isExpanded) + return; + + [self _noteItemWillExpand]; itemInfo.isExpanded = YES; + [self _noteItemDidExpand]; + [self reloadItem:anItem reloadChildren:YES]; if (shouldExpandChildren) @@ -251,7 +257,9 @@ CPOutlineViewDropOnItemIndex = -1; if (!itemInfo.isExpanded) return; + [self _noteItemWillCollapse]; itemInfo.isExpanded = NO; + [self _noteItemDidCollapse]; [self reloadItem:anItem reloadChildren:YES]; } @@ -474,6 +482,36 @@ CPOutlineViewDropOnItemIndex = -1; selector:@selector(outlineViewSelectionIsChanging:) name:CPOutlineViewSelectionIsChangingNotification object:self]; + + + if ([_outlineViewDelegate respondsToSelector:@selector(outlineViewItemWillExpand:)]) + [defaultCenter + addObserver:_outlineViewDelegate + selector:@selector(outlineViewItemWillExpand:) + name:CPOutlineViewItemWillExpandNotification + object:self]; + + if ([_outlineViewDelegate respondsToSelector:@selector(outlineViewItemDidExpand:)]) + [defaultCenter + addObserver:_outlineViewDelegate + selector:@selector(outlineViewItemDidExpand:) + name:CPOutlineViewItemDidExpandNotification + object:self]; + + if ([_outlineViewDelegate respondsToSelector:@selector(outlineViewItemWillCollapse:)]) + [defaultCenter + addObserver:_outlineViewDelegate + selector:@selector(outlineViewItemWillCollapse:) + name:CPOutlineViewItemWillCollapseNotification + object:self]; + + if ([_outlineViewDelegate respondsToSelector:@selector(outlineViewItemDidCollapse:)]) + [defaultCenter + addObserver:_outlineViewDelegate + selector:@selector(outlineViewItemDidCollapse:) + name:CPOutlineViewItemDidCollapseNotification + object:self]; + } - (id)delegate @@ -722,6 +760,38 @@ CPOutlineViewDropOnItemIndex = -1; userInfo:nil]; } +- (void)_noteItemWillExpand +{ + [[CPNotificationCenter defaultCenter] + postNotificationName:CPOutlineViewItemWillExpandNotification + object:self + userInfo:nil]; +} + +- (void)_noteItemDidExpand +{ + [[CPNotificationCenter defaultCenter] + postNotificationName:CPOutlineViewItemDidExpandNotification + object:self + userInfo:nil]; +} + +- (void)_noteItemWillCollapse +{ + [[CPNotificationCenter defaultCenter] + postNotificationName:CPOutlineViewItemWillCollapseNotification + object:self + userInfo:nil]; +} + +- (void)_noteItemDidCollapse +{ + [[CPNotificationCenter defaultCenter] + postNotificationName:CPOutlineViewItemDidCollapseNotification + object:self + userInfo:nil]; +} + @end // FIX ME: We're using with() here because Safari fails if we use anOutlineView._itemInfosForItems or whatever... From efb752f1f4f4200113f6b28c570dd5ea0b6f84e9 Mon Sep 17 00:00:00 2001 From: Blair Duncan Date: Sat, 27 Feb 2010 21:44:06 -0500 Subject: [PATCH 06/12] CPOutlineView, forgot to unregister notifications prior to adding them in the last commit. --- AppKit/CPOutlineView.j | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/AppKit/CPOutlineView.j b/AppKit/CPOutlineView.j index 00d43d849..04f3eda65 100644 --- a/AppKit/CPOutlineView.j +++ b/AppKit/CPOutlineView.j @@ -435,6 +435,35 @@ CPOutlineViewDropOnItemIndex = -1; removeObserver:_outlineViewDelegate name:CPOutlineViewSelectionIsChangingNotification object:self]; + + + + if ([_outlineViewDelegate respondsToSelector:@selector(outlineViewItemWillExpand:)]) + [defaultCenter + removeObserver:_outlineViewDelegate + name:CPOutlineViewItemWillExpandNotification + object:self]; + + + if ([_outlineViewDelegate respondsToSelector:@selector(outlineViewItemDidExpand:)]) + [defaultCenter + removeObserver:_outlineViewDelegate + name:CPOutlineViewItemDidExpandNotification + object:self]; + + + if ([_outlineViewDelegate respondsToSelector:@selector(outlineViewItemWillCollapse:)]) + [defaultCenter + removeObserver:_outlineViewDelegate + name:CPOutlineViewItemWillCollapseNotification + object:self]; + + + if ([_outlineViewDelegate respondsToSelector:@selector(outlineViewItemDidCollapse:)]) + [defaultCenter + removeObserver:_outlineViewDelegate + name:CPOutlineViewItemDidCollapseNotification + object:self]; } _outlineViewDelegate = aDelegate; From f0501f84940f9688841a177130723b271abcd766 Mon Sep 17 00:00:00 2001 From: Randall Luecke Date: Wed, 19 May 2010 00:29:12 -0500 Subject: [PATCH 07/12] Fixed regression from last commits where children would fail to expand. --- AppKit/CPOutlineView.j | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/AppKit/CPOutlineView.j b/AppKit/CPOutlineView.j index 04f3eda65..3475765fa 100644 --- a/AppKit/CPOutlineView.j +++ b/AppKit/CPOutlineView.j @@ -216,7 +216,7 @@ CPOutlineViewDropOnItemIndex = -1; - (void)expandItem:(id)anItem expandChildren:(BOOL)shouldExpandChildren { var itemInfo = null; - + if (!anItem) itemInfo = _rootItemInfo; else @@ -225,15 +225,15 @@ CPOutlineViewDropOnItemIndex = -1; if (!itemInfo) return; - if (itemInfo.isExpanded) - return; + // to prevent items which are already expanded from firing notifications + if (!itemInfo.isExpanded) + { + [self _noteItemWillExpand]; + itemInfo.isExpanded = YES; + [self _noteItemDidExpand]; + [self reloadItem:anItem reloadChildren:YES]; + } - [self _noteItemWillExpand]; - itemInfo.isExpanded = YES; - [self _noteItemDidExpand]; - - [self reloadItem:anItem reloadChildren:YES]; - if (shouldExpandChildren) { var children = itemInfo.children, From 76443a5d7f6546efc9828d64c857798b554bade7 Mon Sep 17 00:00:00 2001 From: Randall Luecke Date: Wed, 19 May 2010 01:02:39 -0500 Subject: [PATCH 08/12] Fire selectionIsChanging when selecting column. closes #437 --- AppKit/CPTableView.j | 1 + 1 file changed, 1 insertion(+) diff --git a/AppKit/CPTableView.j b/AppKit/CPTableView.j index c2a4f263a..52de26a13 100644 --- a/AppKit/CPTableView.j +++ b/AppKit/CPTableView.j @@ -1724,6 +1724,7 @@ CPTableViewFirstColumnOnlyAutoresizingStyle = 5; if (_allowsColumnSelection) { + [self _noteSelectionIsChanging]; if (modifierFlags & CPCommandKeyMask) { if ([self isColumnSelected:clickedColumn]) From a9f970459b1fcb67ba8e454294edb26139b0f102 Mon Sep 17 00:00:00 2001 From: Randall Luecke Date: Wed, 19 May 2010 01:33:13 -0500 Subject: [PATCH 09/12] Fix for undoManager thowing exception in -canUndo. --- Foundation/CPUndoManager.j | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Foundation/CPUndoManager.j b/Foundation/CPUndoManager.j index 7d9c8d8f0..94b9f6516 100644 --- a/Foundation/CPUndoManager.j +++ b/Foundation/CPUndoManager.j @@ -317,8 +317,8 @@ if (_currentGroup == nil) { if (_undoStack.length > 0) return YES; - - return [_currentGrouping actions].length > 0; + + return [[_currentGrouping invocations] count] > 0; } // Preform Undo and Redo From d6ac30be75d0c44ed552d817db4802e2c24926be Mon Sep 17 00:00:00 2001 From: Randall Luecke Date: Wed, 19 May 2010 01:55:01 -0500 Subject: [PATCH 10/12] CPTableView dataViews when selected now use the new CPThemeStateSelectedDataView state to avoid conflict with other CPControl theme states. --- AppKit/CPTableColumn.j | 4 ++-- AppKit/CPTableView.j | 13 ++++++------- AppKit/CPTheme.j | 1 + 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/AppKit/CPTableColumn.j b/AppKit/CPTableColumn.j index 5c6b91cea..81017b7c8 100644 --- a/AppKit/CPTableColumn.j +++ b/AppKit/CPTableColumn.j @@ -81,8 +81,8 @@ CPTableColumnUserResizingMask = 1 << 1; var textDataView = [CPTextField new]; [textDataView setLineBreakMode:CPLineBreakByTruncatingTail]; [textDataView setValue:[CPColor colorWithHexString:@"333333"] forThemeAttribute:@"text-color"]; - [textDataView setValue:[CPColor whiteColor] forThemeAttribute:@"text-color" inState:CPThemeStateSelected]; - [textDataView setValue:[CPFont boldSystemFontOfSize:12] forThemeAttribute:@"font" inState:CPThemeStateSelected]; + [textDataView setValue:[CPColor whiteColor] forThemeAttribute:@"text-color" inState:CPThemeStateSelectedDataView]; + [textDataView setValue:[CPFont boldSystemFontOfSize:12] forThemeAttribute:@"font" inState:CPThemeStateSelectedDataView]; [textDataView setValue:CPCenterVerticalTextAlignment forThemeAttribute:@"vertical-alignment"]; [self setDataView:textDataView]; } diff --git a/AppKit/CPTableView.j b/AppKit/CPTableView.j index 52de26a13..3f89552c2 100644 --- a/AppKit/CPTableView.j +++ b/AppKit/CPTableView.j @@ -28,7 +28,6 @@ @import "_CPCornerView.j" @import "CPScroller.j" - CPTableViewColumnDidMoveNotification = @"CPTableViewColumnDidMoveNotification"; CPTableViewColumnDidResizeNotification = @"CPTableViewColumnDidResizeNotification"; CPTableViewSelectionDidChangeNotification = @"CPTableViewSelectionDidChangeNotification"; @@ -866,7 +865,7 @@ CPTableViewFirstColumnOnlyAutoresizingStyle = 5; var view = context[rowIndex], selector = select ? @"setThemeState:" : @"unsetThemeState:"; - [view performSelector:CPSelectorFromString(selector) withObject:CPThemeStateSelected]; + [view performSelector:CPSelectorFromString(selector) withObject:CPThemeStateSelectedDataView]; } - (void)_updateHighlightWithOldColumns:(CPIndexSet)oldColumns newColumns:(CPIndexSet)newColumns @@ -896,7 +895,7 @@ CPTableViewFirstColumnOnlyAutoresizingStyle = 5; { var rowIndex = selectRows[i], dataView = dataViewsInTableColumn[rowIndex]; - [dataView unsetThemeState:CPThemeStateSelected]; + [dataView unsetThemeState:CPThemeStateSelectedDataView]; } if (_headerView) @@ -917,7 +916,7 @@ CPTableViewFirstColumnOnlyAutoresizingStyle = 5; { var rowIndex = selectRows[i], dataView = dataViewsInTableColumn[rowIndex]; - [dataView setThemeState:CPThemeStateSelected]; + [dataView setThemeState:CPThemeStateSelectedDataView]; } if (_headerView) { @@ -1827,7 +1826,7 @@ CPTableViewFirstColumnOnlyAutoresizingStyle = 5; if (_headerView) { if (_currentHighlightedTableColumn != nil) - [[_currentHighlightedTableColumn headerView] unsetThemeState:CPThemeStateSelected]; + [[_currentHighlightedTableColumn headerView] unsetThemeState:CPThemeStateSelectedDataView]; if (aTableColumn != nil) [[aTableColumn headerView] setThemeState:CPThemeStateSelected]; @@ -2201,9 +2200,9 @@ CPTableViewFirstColumnOnlyAutoresizingStyle = 5; [dataView setObjectValue:[self _objectValueForTableColumn:tableColumn row:row]]; if (isColumnSelected || [self isRowSelected:row]) - [dataView setThemeState:CPThemeStateSelected]; + [dataView setThemeState:CPThemeStateSelectedDataView]; else - [dataView unsetThemeState:CPThemeStateSelected]; + [dataView unsetThemeState:CPThemeStateSelectedDataView]; if (_implementedDelegateMethods & CPTableViewDelegate_tableView_willDisplayView_forTableColumn_row_) [_delegate tableView:self willDisplayView:dataView forTableColumn:tableColumn row:row]; diff --git a/AppKit/CPTheme.j b/AppKit/CPTheme.j index 77bac886d..4b37e6d7a 100644 --- a/AppKit/CPTheme.j +++ b/AppKit/CPTheme.j @@ -242,6 +242,7 @@ CPThemeStateNormal = CPThemeStates["normal"] = 0; CPThemeStateDisabled = CPThemeState("disabled"); CPThemeStateHighlighted = CPThemeState("highlighted"); CPThemeStateSelected = CPThemeState("selected"); +CPThemeStateSelectedDataView = CPThemeState("selectedDataView"); CPThemeStateBezeled = CPThemeState("bezeled"); CPThemeStateBordered = CPThemeState("bordered"); CPThemeStateEditable = CPThemeState("editable"); From 1bc8536f0eec7dac1ac08ab9a27760b8d75d937d Mon Sep 17 00:00:00 2001 From: Randall Luecke Date: Wed, 19 May 2010 21:15:50 -0500 Subject: [PATCH 11/12] Row indexes which no longer exist are removed from selectedRowIndexes. --- AppKit/CPTableView.j | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/AppKit/CPTableView.j b/AppKit/CPTableView.j index 3f89552c2..2ef0dde9b 100644 --- a/AppKit/CPTableView.j +++ b/AppKit/CPTableView.j @@ -1500,8 +1500,19 @@ CPTableViewFirstColumnOnlyAutoresizingStyle = 5; - (void)noteNumberOfRowsChanged { + var oldNumberOfRows = _numberOfRows; + _numberOfRows = [_dataSource numberOfRowsInTableView:self]; + // remove row indexes from the selection if they no longer exist + var hangingSelections = oldNumberOfRows - _numberOfRows; + + if (hangingSelections > 0) + { + [_selectedRowIndexes removeIndexesInRange:CPMakeRange(_numberOfRows, hangingSelections)]; + [self _noteSelectionDidChange]; + } + [self tile]; } From e96678eebcc249243a00ce311a589d9b999505e6 Mon Sep 17 00:00:00 2001 From: Alan Rogers Date: Thu, 20 May 2010 16:47:42 +1000 Subject: [PATCH 12/12] Fix for gh issue #674: passing item in userInfo for the will/did expand/collapse notifications for the OutlineView. --- AppKit/CPOutlineView.j | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/AppKit/CPOutlineView.j b/AppKit/CPOutlineView.j index 3475765fa..df90c688d 100644 --- a/AppKit/CPOutlineView.j +++ b/AppKit/CPOutlineView.j @@ -228,9 +228,9 @@ CPOutlineViewDropOnItemIndex = -1; // to prevent items which are already expanded from firing notifications if (!itemInfo.isExpanded) { - [self _noteItemWillExpand]; + [self _noteItemWillExpand:anItem]; itemInfo.isExpanded = YES; - [self _noteItemDidExpand]; + [self _noteItemDidExpand:anItem]; [self reloadItem:anItem reloadChildren:YES]; } @@ -257,9 +257,9 @@ CPOutlineViewDropOnItemIndex = -1; if (!itemInfo.isExpanded) return; - [self _noteItemWillCollapse]; + [self _noteItemWillCollapse:anItem]; itemInfo.isExpanded = NO; - [self _noteItemDidCollapse]; + [self _noteItemDidCollapse:anItem]; [self reloadItem:anItem reloadChildren:YES]; } @@ -789,36 +789,36 @@ CPOutlineViewDropOnItemIndex = -1; userInfo:nil]; } -- (void)_noteItemWillExpand +- (void)_noteItemWillExpand:(id)item { [[CPNotificationCenter defaultCenter] postNotificationName:CPOutlineViewItemWillExpandNotification object:self - userInfo:nil]; + userInfo:[CPDictionary dictionaryWithObject:item forKey:"CPObject"]]; } -- (void)_noteItemDidExpand +- (void)_noteItemDidExpand:(id)item { [[CPNotificationCenter defaultCenter] postNotificationName:CPOutlineViewItemDidExpandNotification object:self - userInfo:nil]; + userInfo:[CPDictionary dictionaryWithObject:item forKey:"CPObject"]]; } -- (void)_noteItemWillCollapse +- (void)_noteItemWillCollapse:(id)item { [[CPNotificationCenter defaultCenter] postNotificationName:CPOutlineViewItemWillCollapseNotification object:self - userInfo:nil]; + userInfo:[CPDictionary dictionaryWithObject:item forKey:"CPObject"]]; } -- (void)_noteItemDidCollapse +- (void)_noteItemDidCollapse:(id)item { [[CPNotificationCenter defaultCenter] postNotificationName:CPOutlineViewItemDidCollapseNotification object:self - userInfo:nil]; + userInfo:[CPDictionary dictionaryWithObject:item forKey:"CPObject"]]; } @end