# PXSourceList Release Notes ## 2.0.5 - Fix #43: sourceListDeleteKeyPressedOnRows: called twice. This was caused by an issue where PXSourceList was incorrectly removing the old delegate as an observer of PXSourceList notifications in -setDelegate:. ## 2.0.4 - PR #41: fix a Zeroing Weak References problem. This fixes an issue where using an `NSWindow`, `NSWindowController` or `NSViewController` as a PXSourceList delegate or dataSource would cause problems on 10.7 because prior to 10.8, these classes could not be referenced by zeroing weak references. - Remove unused `badgeMargin` constant from PXSourceList.m. ## 2.0.3 - Fix #40: Editing titles on cell based source list causes exception. - Fix issue in view-based source list example where items created with the add button couldn't be dragged. ## 2.0.2 - Fix #39: Badges not drawn correctly when Source List row is selected. ## 2.0.1 - Add missing note to the 2.0.0 release notes about marking `-[PXSourceList delegate]` and `-[PXSourceList dataSource]` as unavailable using \_\_attribute\_\_. ## 2.0.0 ### New Features - Added support for view-based mode to `PXSourceList`, whilst retaining legacy cell-based support. (View-based delegate methods added are detailed below). - Added a new view-based Source List example target which includes an example of how to use drag-and-drop in the Source List. - Added `PXSourceListTableCellView`, an `NSTableCellView` subclass which is useful when using `PXSourceList` in view-based mode. - Added `PXSourceListBadgeView`, which can be used in `PXSourceListTableCellView`s to display badges. This class's drawing is done by the internal `PXSourceListBadgeCell` class. - Added a generic `PXSourceListItem` data source model class which can be used for easily constructing data source models without having to implement your own class. ### API Changes - **Incompatible change.* Marked `-[PXSourceList delegate]` and -[PXSourceList dataSource]` as unavailable using the “unavailable” \_\_attribute\_\_. These methods shouldn’t be used because of the internal implementation of PXSourceList, and have been documented as such since version 0.8. However, adding this \_\_attribute\_\_ is more robust because a compile-time error will be generated if you use either of these methods. - Added view-based Source List delegate methods to `PXSourceListDelegate`, namely: - `-sourceList:viewForItem:` - `-sourceList:rowViewForItem:` - `-sourceList:didAddRowView:forRow:` - `-sourceList:didRemoveRowView:forRow:` - Added missing `PXSourceListDelegate` methods which map to their `NSOutlineViewDelegate` counterpart methods, namely: - `-sourceList:toolTipForCell:rect:item:mouseLocation:` - `-sourceList:typeSelectStringForItem:` - `-sourceList:nextTypeSelectMatchFromItem:toItem:forString:` - `-sourceList:shouldTypeSelectForEvent:withCurrentSearchString:` - Moved the Source List delegate notification methods that were previously part of an `NSObject` category into `PXSourceListDelegate`. The methods affected are: - `-sourceListSelectionIsChanging:` - `-sourceListSelectionDidChange:` - `-sourceListItemWillExpand:` - `-sourceListItemDidExpand:` - `-sourceListItemWillCollapse:` - `-sourceListItemDidCollapse:` - `-sourceListDeleteKeyPressedOnRows:` ### Bugfixes - Fixed a *huge* bug where several delegate methods which weren't being called in version 0.x and 1.x of PXSourceList, by removing explicit implementations of `NSOutlineViewDelegate` methods in `PXSourceList` which are now forwarded using a shiny new proxy-based implementation. The stub method implementations removed from `PXSourceList` are: - `-outlineView:numberOfChildrenOfItem:` - `-outlineView:child:ofItem:` - `-outlineView:isItemExpandable:` - `-outlineView:objectValueForTableColumn:byItem:` - `-outlineView:setObjectValue:forTableColumn:byItem:` - `-outlineView:itemForPersistentObject:` - `-outlineView:persistentObjectForItem:` - `-outlineView:writeItems:toPasteboard:` - `-outlineView:writeItems:toPasteboard:` - `-outlineView:validateDrop:proposedItem:proposedChildIndex:` - `-outlineView:acceptDrop:item:childIndex:` - `-outlineView:namesOfPromisedFilesDroppedAtDestination:forDraggedItems:` - `-outlineView:pasteboardWriterForItem:` - `-outlineView:draggingSession:willBeginAtPoint:forItems:` - `-outlineView:draggingSession:endedAtPoint:operation:` - `-outlineView:updateDraggingItemsForDrag:` - `-outlineView:shouldExpandItem:` - `-outlineView:shouldTrackCell:forTableColumn:item:` - `-outlineView:heightOfRowByItem:` - `-outlineView:selectionIndexesForProposedSelection:` - `-outlineView:dataCellForTableColumn:item:` - `-outlineView:willDisplayCell:forTableColumn:item:` - Fixed the PXSourceList framework's `CFBundleIdentifier`. It should have been `com.alexrozanski.PXSourceList`. ### Documentation, Documentation, Documentation - Updated documentation for all public members of `PXSourceList` and its related classes and protocols. - Added documentation for new classes and `PXSourceListDelegate` methods. - Added documentation for `PXSourceList` delegate notifications. - Added a Documentation target to the Xcode project, which can be used to build documentation from source using [appledoc](http://gentlebytes.com/appledoc/). ### Other Changes - Removed `SourceListItem` from the old example project as it has been superseded by `PXSourceListItem`. - Removed the TODO.rtf file from the project as all issues are now being tracked through GitHub. - Upgraded the Xcode project to the Xcode 5 project format. `LastUpgradeCheck` was updated from `0450` to`0500`. - Added a Release Notes file ;)