What's New in Cappuccino 0.9.5 (RC4)
Release date: 2011-11-16
- Fixed with
CPTokenField: quickly entered tokens would be ignored.
- Fixed with
CPTokenField: crash if added to a window in a unit test.
- Fixed #1398: in a
CPTokenField, deleting tokens in front of selected tokens would shift the selection to the right.
- Fixed #1397: make sure
CPTokenFieldselection is initialised when loading from cib.
What's New in Cappuccino 0.9.5 (RC3)
Release date: 2011-11-11
Foundation and Core
- Local param shadowing now emits a warning instead of an error. This is temporary awaiting a proper fix of param shadowing in the preprocessor.
- Don't log backtraces repeatedly when using
CPRangeExceptionfor out of bounds ranges.
- Crude but functional infinite recursion checker, optional at compile time.
- New: support null values in
CPDictionary's +dictionaryWithJSObject:recursively:(issue #1299).
- New: objjc --help.
- New: objjc option to compile to stdout, with or without
CPURL -isEqual:for URLs with redundant slashes.
CPDatetimezone calculation in
- Fixed #1065:
CPString -rangeOfString:backwards search did not work.
CPString -rangeOfString:anchored backwards search did not work.
- Fixed: searching a string for @"" with
CPString -rangeOfString:returned results other than
CPString -rangeOfString:options:rangereturned locations relative to the passed-in range instead of the full string.
CPMutableSet -addObject:should raise with nil or undefined.
- Fixed: very large numbers written to 280north1 plist files would be read back as very small numbers. This would among other things break nib2cib where certain controls would take on infinitesimal sizes.
- Fixed #1289: infinite recursion when coercing an object without a
-descriptionmethod into a string.
- Fixed #469: infinite recursion when an unimplemented message was sent to an object with no superclass.
- Fixed with
CPDecimal: decimal numbers below 1.0 would compare incorrectly with 0.0.
- Fixed #1380, #1383: avoid "popen error (pipe): Too many open files" error when building Cappuccino.
- Fixed #1384: avoid user defaults QUOTA_EXCEEDED_ERR crash.
CPSounderror handling and better Cocoa compliance.
- Improved: table view keyboard row selection.
CPProgressIndicatoris now coding compliant.
- Improved performance of
- New: keyboard navigation in menus.
- New: mouse wheel support in menus.
- New: automatic or explicit scroll mode selection for web views.
- New: support for pattern fills in
CGContextSetFillColorwith a pattern color).
- Support for web views with transparent or coloured backgrounds.
- Added support for the
CPNullPlaceholderBindingOptionfor bound text fields.
- New: text field support for
- New: bindings support for inline table view cell editing.
- Support for
CPOutlineView outlineViewDeleteKeyPressed:delegate method.
mouseDragged:now have deltaX and deltaY appropriately set (issues #1210, #1211).
- New: coding support for
collectionView:menuForItemAtIndex:delegate method support.
CPDictionary -keysSortedByValueUsingSelector:which, just as it sounds, returns the keys of the dictionary sorted using a given selector.
- Key equivalent display in menus for special characters such as escape, tab, arrow keys and many others.
- New: tooltip support for any view with the standard yellow box look (issue #1264).
- Remove table view corner view if there is no header view.
CPMenu -removeAllmethod (issue #1260).
CPPredicateEditorallows a search or filter predicate to be constructed visually by the user.
- Optimise array controller
addObject:by eliminating entirely pointless rearrange when added objects did not pass the filter. Also avoid double rearrange if
- Draw table view gridlines precisely inside the right side of cells so that grid line positioning and spacing matches Cocoa.
CPUserDefaultsControllerwhich can be used to easily bind controls to user default keys, in Interface Builder or elsewhere.
- Minor array controller optimisation: don't send a
filterPredicatechange notification if
clearsFilterPredicateOnInsertionis YES but
filterPredicateis already nil when
CPArrayController handlesContentAsCompoundValuesupport for
- Left and right arrow keys can now be used to expand and collapse items in
CPLevelIndicatorshows a meter with discrete levels from empty to full.
- New scroll view
scrollViewDidScroll:delegate methods, inspired by
- Multiple improvements to
CPMenuopening, closing and handling of submenus.
- Coding support for
CPCharacterSetwhen the set is of the
CPCharacterSet -isEqual:support when the set is of the
CPCharacterSet +characterSetWithCharactersInStringnow archive properly.
- New: coding support for
CPArrayrange checking (issue #1334).
+boxEnclosingView:now take on the autoresizing mask of the passed view (issue #1335).
- Improved table view redrawing performance when
usesAlternatingBackgroundColorsis YES (issue #1341).
CPAlertsubclasses to use
+alertWithMessageText:...et al (issue #1333).
- Improved performance of
[CPSound play]now plays the sound once it has been loaded if it hasn't yet (issue #1345).
CPString substringToIndex:is out of bounds.
- New: support nested
didChange<Key>calls. When multiple calls are nested, only the first
willChange...and the last
didChange...will notify observers, avoiding duplicate notifications for the same change. This can massively improve performance since observations sometimes lead to cascading updates (issue #1343).
didChangein reverse order of
- Implemented support for the
CPTokenField tokenField:shouldAddObjects:atIndex:delegate method (issue #1360).
CPStepperbutton sizes can now be themed.
CPColorWithImages()convenience function to quickly create a
CPColorfrom single, 3-part or 9-part images (issue #1274).
CPColorto show the exact content, especially for pattern colors (issue #1274).
- New: allow binding a table column value to an array controller reached through a key path.
- Improved split view performance: eliminate excessive
- New: support for collapsing views towards the right in split views.
- New: split view auto save support.
- New: 'overlay' style scrollbars which fade out when not in use. Old style scrollbars are also supported and automatically enabled if the browser does not use overlay style scrollbars (e.g. OS X Lion with a touch enabled input device uses overlay style scrollbars, but a Windows XP machine with a mousewheel would not.)
CPWindow setMovable:support which specifies whether a window can be dragged (issue #1358).
CPPopovercontrol to create small "pop up" widgets attached to other controls, similar to the Downloads pop-over in Safari 5 (issue #1316).
- Allow almost anything as a key equivalent unless a text field is the first responder. E.g. pressing "a" with no modifiers can now trigger a button.
- Fixed with
CPViewAnimation:all animation curves behaved like a linear curve (issue #1313).
- Fixed: issue with
- Fixed #1033:
- Fixed: uniform table view column resizing.
- Fixed #1122:
CPSplitView setIsPaneSplitter:had the opposite effect of what it should have been.
- Fixed with
CPTextField: cut and paste using the mouse did not set stringValue properly.
- Fixed with
CPControlTextDidChangeNotificationwere not sent after cut and paste.
- Fixed: bugs with
CPOutLineView outlineView:sortDescriptorsDidChange:delegate message was not sent.
- Fixed with KVO: method replacement happened for every call to
addObserver:when one replacement would do.
- Fixed: spacing in
- Fixed: color panel layout issues.
- Fixed: scroll view corner and headerview decoding.
- Fixed: unarchiving table views with no header view.
- Fixed #1136: for the most part, web views'
setScrollMode:message did nothing.
- Fixed: web view AppKit scrollbars often did not reflect the true content size of the view.
- Fixed: several Internet Explorer compatibility bugs.
[CPArrayController arrangedObjects]could be nil.
- Fixed #1160:
controlTextDidChange:didn't always get fired.
- Fixed: memory leak in
- Fixed: scroller error when horizontal scroller was too small.
- Fixed: split view did not reposition subviews or remove divider when a subview was removed.
- Fixed: root layer transform inadvertantly changed when redisplayed.
- Fixed: if
unarchiver:didDecodeObject:returned nil, the original object was still replaced (with nil) instead of being kept.
- Fixed #864: corner view did not always draw the line above the left edge of the scroll view.
- Fixed: loading an empty string into a web view would make it entirely white regardless of the background colour specified.
- Fixed: in Firefox, certain web views would not send the first
CPSlider isContinuousdisagreed with
CPSlidersalways became continuous when archived/unarchived.
- Fixed: more graceful handling when
- Fixed: when a column was selected the column selection colour would not cover the whole column.
- Fixed: table views'
rectOfColumn:method returned a rect reduced by the intercell spacing. It should return the rect of the entire column.
- Fixed: when table view grid lines were active they did not draw on top of selection highlights like in Cocoa.
- Fixed: an array controller with a bound
contentArraywould sometimes fail when
remove:and similar methods were called.
- Fixed #687:
CPColor colorWithCSSString:did not properly handle the alpha component of the CSS rbga() syntax.
CPInvalidArgumentException: Unsupported method on CPArraywhen attempting to bind to a
CPArrayController's arrangedObjectsbefore calling
- Fixed #1174:
CPArrayController _arrangedObjectsinitialisation error.
CPOutlineViewprovided dragged items in reverse order.
- Fixed: once a table view drag and drop was retargeted, the new target would 'stick' as the drag continued.
- Fixed: the content view of a decoded
CPBoxwould have the wrong autoresizing mask.
- Fixed: unhandled keyboard events of a window did not travel past the window.
- Fixed: JS objects 'randomly' failed to unarchive due to a caching problem. One visible symptom was that
CPTextField'scustom inset would decode fine, but a subclass of a
CPTextFieldwould fail to decode the inset.
- Fixed: table headers didn't scroll with the rest of the table during drag and drop.
CGGradientCreateWithColorComponentsassumed there'd only be two colors in each gradient.
- Fixed #1242: color space was missing for colors created by
- Fixed #1242:
CGColorCreateCopyWithAlphacould create colors with an alpha value incorrectly linked to other cached colors.
- Fixed: crash when the same observer was removed twice. Warn instead.
- Fixed: out of bounds error in
- Fixed: setting a new platform window on a visisble window caused a DOM exception.
[CPIndexSet indexPathByRemovingLastIndex]didn't remove the last index.
[CPIndexSet indexes]did not return a copy of the indexes.
- Fixed #1249: multiple
_CPImageAndTextViewssharing the same
CPImagefailed to properly observe its loading.
- Fixed #684: sizing problem when revealing hidden
- Fixed #664: web view sizing bug when loading contents prior to adding the view to the display tree.
- Fixed #682:
CPColor isEqual:sometimes failed to recognise equal instances specified with
CPColor isEqual:for pattern images.
- Fixed: on WebKit for the Mac, the right command key was not recognised as a modifier.
- Fixed: duplicate observer notification for array controller
- Fixed: don't return nil from
- Fixed: during
objectForKey:could return the value from prior to the change.
- Fixed: array controller
remove:would not only remove selected rows, but also any other rows
isEqual:to the selected rows.
- Fixed with table view: don't start dragging if there are no rows.
- Fixed: under some circumstances a
CPMenucould return a separator as the highligted item.
- Fixed: pressing the up arrow key in a table view would cause a crash if the previous selection was non continuous.
- Fixed #1320: if a
CPTextField'starget action changed the first responder then the target action was called twice if the textfield edit was completed by hitting the enter/return key.
- Fixed #1285:
CPPredicatewould crash if a beginsWith or endsWith comparison was made where the right hand string was longer than the left hand string.
- Fixed #1305: max toolbar item width was constrained to the width of the label.
- Fixed with menus: don't disallow
setEnabled:for auto enabled items.
- Fixed with token fields:
tokenField:tokenField completionsForSubstring:indexOfToken:indexOfSelectedItem:ignored its
- Fixed: in recent versions of WebKit window.open("") does not work, which broke new platform windows (issue #1352).
CPArrayController setSelectionIndexes:sometimes modified its input.
- Fixed: several
undefinedinstead of booleans.
CPWindowdid not return NO to
- Fixed: multiple errors with key view loops (window's content view not included at the start of the loop,
selectKeyViewPrecedingView:not acting like in Cocoa).
mutableArrayValueForKey:KVO proxy objects did not use plural selectors (e.g.
replace<Key>AtIndexes:) when implemented by the proxied object.
- Fixed: platform window titles could not be changed once the window had been opened.
- Fixed with
CPStepper setFrame:method modified its input.
CPRadiosent its action after a programmatic
- Fixed: disappearing or fuzzy table header dividing lines at certain table sizes.
- Fixed #1376: zombie table group rows.
- Fixed with
CPTextField: if a field lost focus while a key was depressed the string value would not update with the last pressed key.
CPMenu -removeAllItemswas not KVO compliant.
- Fixed #1319:
CPPopupButton -selectedIndexcould become wrong when menu items were removed.
- Fixed #1019: in Internet Explorer, many key equivalents such as left arrow, page up and delete did not work.
- New: Support for image views in table views.
- New: Support 'enabled' state for controls.
- Much improved font support (issue #1197 among others.)
- Support for
- Improved support for radio buttons (issue #1197).
- nib2cib support for bold and italic (issue #1266).
- Much improved button positioning for various button styles (issue #1268).
- nib2cib support for
NSButtonCell(e.g. checkboxes) in table columns.
- Partial button image support in nib2cib covering
NSRemoveTemplate(standard plus and minus buttons).
- nib2cib support for formatters such as the new number formatter.
- nib2cib support for token fields.
- New: XcodeCapp, a graphical utility which automates the nib2cib process and makes it easy to use Xcode 4's Interface Builder to visually create and edit the user interface of a Cappuccino application. XcodeCapp replaces the older command line based xcodecapp utility.
- Fixed: sometimes nib2cibbed check boxes would appear out of place.
- Fixed #1190: potential
Result of expression '_subviews[index]' [null] is not an objecterror for nib2cibbed radio groups.
- Fixed: could not load theme errors.
- Fixed #1265: enabled state for
NSColorWellwas not read properly.
- Fixed Objective-J Preprocessor tests: scoping bug that caused only the last file in FILENAMES to be tested.
- Improved: Xcode 4.0 support for building NativeHost.
- Documentation updates: new front page, tweaked design and many more documented classes and methods.
- More complete
- man page for
- Fixed #1259: issues finding Mac OS X 10.5 SDK on certain machines when building NativeHost.
- New: "framework" template for capp which generates a skeleton Cappuccino Framework (issue #1321).
- Cappuccino moved to a new GitHub location:
- Simplified bootstrap which better hides complexity.
- When bootstrapping, don't suggest changing
jscif it's already