Release date: 2011-11-16
The final release of Cappuccino 0.9.5 is identical to RC5.
Release date: 2011-11-16
- Fixed version number in documentation.
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.
Release date: 2011-11-11
- Local param shadowing now emits a warning instead of an error. This is temporary awaiting a proper fix of param shadowing in the preprocessor.
CPScannerfixes.- Don't log backtraces repeatedly when using
objj_backtrace_decorator. CPString -substringWithRange:and-rangeOfString:options:rangenow throwsCPRangeExceptionfor out of bounds ranges.- Add
-forwardingTargetForSelector:support. - Crude but functional infinite recursion checker, optional at compile time.
- New:
CPNumberFormatterwithCPNumberFormatterDecimalStylesupport. - New: support null values in
CPDictionary's +dictionaryWithJSObject:recursively:(issue #1299). - New: objjc --help.
- New: objjc option to compile to stdout, with or without
@STATICtags, suitable for JavaScript linters. - Improved performance of
[CPString copy].
Bug Fixes:
- Fixed:
CPURL -isEqual:for URLs with redundant slashes. - Fixed:
CPDatetimezone calculation ininitWithString:. - Fixed #1065:
CPString -rangeOfString:backwards search did not work. - Fixed:
CPString -rangeOfString:anchored backwards search did not work. - Fixed: searching a string for @"" with
CPString -rangeOfString:returned results other thanCPNotFound. - Fixed:
CPString -rangeOfString:options:rangereturned locations relative to the passed-in range instead of the full string. - Fixed:
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.
- New:
CPButtoncontinuous mode. - Improved:
CPSounderror handling and better Cocoa compliance. - Improved: table view keyboard row selection.
- New:
CPProgressIndicatoris now coding compliant. - 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
CGContext(CGContextSetFillColorwith a pattern color). - Clean up JavaScript (missing semicolons, don't use commas as statement separators.)
CPWebView -isLoadingmethod.- Support for web views with transparent or coloured backgrounds.
CPObjectController automaticallyPreparesContentsupport.- Added support for the
CPNullPlaceholderBindingOptionfor bound text fields. - New: text field support for
CPContinuouslyUpdatesValueBindingOption. - New: bindings support for inline table view cell editing.
- Support for
CPOutlineView outlineViewDeleteKeyPressed:delegate method. CPEventssent duringmouseDragged:now havedeltaXanddeltaYappropriately set (issues #1210, #1211).- New: coding support for
CPIndexPath. CPMenuitem validation.- New:
collectionView:menuForItemAtIndex:delegate method support. - New:
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.
- Added
CPMenu -removeAllmethod (issue #1260). - New:
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 ifclearsFilterPredicateOnInsertion. - Draw table view gridlines precisely inside the right side of cells so that grid line positioning and spacing matches Cocoa.
- New:
CPUserDefaultsControllerwhich can be used to easily bind controls to user default keys, in Interface Builder or elsewhere. - Optimise
CPArrayController insertObject:atArrangedObjectIndex:. - Minor array controller optimisation: don't send a
filterPredicatechange notification ifclearsFilterPredicateOnInsertionis YES butfilterPredicateis already nil wheninsertObject:atArrangedObjectIndex:is called. CPArrayController handlesContentAsCompoundValuesupport forcontentArraybinding.- Left and right arrow keys can now be used to expand and collapse items in
CPOutlineView. - New:
CPLevelIndicatorshows a meter with discrete levels from empty to full. CPFormattersupport forCPControl.- New scroll view
scrollViewWillScroll:andscrollViewDidScroll:delegate methods, inspired byUIScrollViewDelegate(issue #1177). - Multiple improvements to
CPMenuopening, closing and handling of submenus. - Coding support for
CPCharacterSetwhen the set is of thecharacterSetWithCharactersInStringkind. CPCharacterSet -isEqual:support when the set is of thecharacterSetWithCharactersInStringkind.- Inverted
CPCharacterSet +characterSetWithCharactersInStringnow archive properly. - New: coding support for
CPTokenField. CPArrayrange checking (issue #1334).CPBoxescreated with+boxEnclosingView:now take on the autoresizing mask of the passed view (issue #1335).- Improved table view redrawing performance when
usesAlternatingBackgroundColorsis YES (issue #1341). - Allow
CPAlertsubclasses to use+alertWithMessageText:...et al (issue #1333). - Improved performance of
valueForKeyPath:(issue #1344). [CPSound play]now plays the sound once it has been loaded if it hasn't yet (issue #1345).- Raise
CPRangeExceptionifCPString substringToIndex:is out of bounds. - New: support nested
willChange<Key>anddidChange<Key>calls. When multiple calls are nested, only the firstwillChange...and the lastdidChange...will notify observers, avoiding duplicate notifications for the same change. This can massively improve performance since observations sometimes lead to cascading updates (issue #1343). - Send
didChangein reverse order ofwillChangeinCPObjectController setContent:. - Implemented support for the
CPTokenField tokenField:shouldAddObjects:atIndex:delegate method (issue #1360). CPStepperbutton sizes can now be themed.- New:
CPColorWithImages()convenience function to quickly create aCPColorfrom single, 3-part or 9-part images (issue #1274). - Enhanced
-descriptionmethod ofCPImageandCPColorto 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
splitViewDidResizeSubviews:messages. - 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.)
- New:
CPWindow setMovable:support which specifies whether a window can be dragged (issue #1358). - New:
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.
Bug Fixes:
- Fixed with
CPViewAnimation:all animation curves behaved like a linear curve (issue #1313). - Fixed: issue with
CPSoundin Firefox. - Fixed #1033:
CPFlashViewsetParameters: bugs. - Fixed: uniform table view column resizing.
- Fixed:
CPSearchFieldlayout glitch. - 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
CPTextField:CPControlTextDidBeginEditingNotificationandCPControlTextDidChangeNotificationwere not sent after cut and paste. - Fixed: bugs with
CPTableViewcolumn resizing. - Fixed:
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
CPBrowser. - 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.
- Fixed:
[CPArrayController arrangedObjects]could be nil. - Fixed #1160:
CPSearchFielddelegate methodcontrolTextDidChange:didn't always get fired. - Fixed: memory leak in
CPSearchField. - 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
webView:didFinishLoadForFrame:delegate message. - Fixed:
CPSlider isContinuousdisagreed withsetContinuous:. - Fixed:
CPSlidersalways became continuous when archived/unarchived. - Fixed: more graceful handling when
nextKeyViewis self. - 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 whenadd:,remove:and similar methods were called. - Fixed #687:
CPColor colorWithCSSString:did not properly handle the alpha component of the CSS rbga() syntax. - Fixed:
CPInvalidArgumentException: Unsupported method on CPArraywhen attempting to bind to aCPArrayController's arrangedObjectsbefore callingsetContent:. - Fixed #1174:
CPArrayController _arrangedObjectsinitialisation error. - Fixed:
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 aCPTextFieldwould fail to decode the inset. - Fixed: table headers didn't scroll with the rest of the table during drag and drop.
- Fixed:
CGGradientCreateWithColorComponentsassumed there'd only be two colors in each gradient. - Fixed #1242: color space was missing for colors created by
CGColorCreateGenericGray,CGColorCreateGenericRGBandCGColorCreateGenericCMYK. - 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
CPPopUpButton itemWithTitle:. - Fixed: setting a new platform window on a visisble window caused a DOM exception.
- Fixed:
[CPIndexSet indexPathByRemovingLastIndex]didn't remove the last index. - Fixed:
[CPIndexSet indexes]did not return a copy of the indexes. - Fixed #1249: multiple
_CPImageAndTextViewssharing the sameCPImagefailed to properly observe its loading. - Fixed #684: sizing problem when revealing hidden
CPWebView. - 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 withcolorWithCSSString:. - Fixed:
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
addObject:(on arrangedObjects). - Fixed:
CPTableColumn width,minWidthandmaxWidthencoding. - Fixed: don't return nil from
CPController initWithCoder:. - Fixed: during
CPUserDefaultchange notifications,objectForKey:could return the value from prior to the change. - Fixed: array controller
remove:would not only remove selected rows, but also any other rowsisEqual: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 itsindexOfToken:parameter. - Fixed: in recent versions of WebKit window.open("") does not work, which broke new platform windows (issue #1352).
- Fixed:
CPArrayController setSelectionIndexes:sometimes modified its input. - Fixed: several
CPArrayControllermethods returnedundefinedinstead of booleans. - Fixed:
CPWindowdid not return NO toacceptsFirstRespondermessages. - Fixed: multiple errors with key view loops (window's content view not included at the start of the loop,
selectNextKeyView:,selectPreviousKeyView:,selectKeyViewFollowingView:andselectKeyViewPrecedingView:not acting like in Cocoa). - Fixed:
mutableArrayValueForKey:KVO proxy objects did not use plural selectors (e.g.remove<Key>AtIndexes:,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. - Fixed:
CPRadiosent its action after a programmaticsetState:change. - 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. - Fixed:
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:
CPProgressIndicatorsupport. - New: Support for image views in table views.
- New: Support 'enabled' state for controls.
- Much improved font support (issue #1197 among others.)
- Support for
sendsActionOnEndEditingflag. - 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
NSAddTemplateandNSRemoveTemplate(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.
Bug Fixes:
- 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
capp --help. - man page for
capp. - 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:
https://github.com/cappuccino/cappuccino. - Simplified bootstrap which better hides complexity.
- When bootstrapping, don't suggest changing
NARWHAL_ENGINEtojscif it's alreadyjsc.