What's New in Cappuccino 0.9.6 (RC2)
Get the source on GitHub: https://github.com/cappuccino/cappuccino/tree/v0.9.6-RC2. To install:
curl https://raw.github.com/cappuccino/cappuccino/v0.9.6-RC2/bootstrap.sh >/tmp/cb.sh && bash /tmp/cb.sh
Release date: 2012-08-22
Foundation and Core
- Improved documentation for
CGGeometrysince they are equivalent in Objective-J.
CFDatabase64 encoding optimised.
- New: very basic
CPNumberFormatter generatesDecimalNumberssupport, enabled by default.
- Fixed: a
CPURLRequestcreated without using the designated initialiser wouldn't work.
- Fixed #1512: patch for rhino-narwhal to add
JAVA_OPTSsupport when running Cappuccino utilities through rhino. This generally improves configurability for special cases, and specifically enables a work around for the
failed to map segment from shared objecterror on some platforms.
- Fixed #1529: incorrect
CPDecimalNumberresult for 220000/220. In general divisions where the quotient had fewer digits than the dividend when disregarding exponent would fail.
CPStringpath methods should collect
- Fixed: main bundle URL missing final
/when running in CommonJS.
CPDateReferenceDateshould be 'Jan 1 2001' instead of 'Feb 1 2001'
- Fixed: removed redundant
- Fixed: incorrect change information sent to observers when the top level object of an observed key path changes.
- Fixed: crash if an observer was set between
- Fixed #1624:
CPNumberFormattergrouping was wrong.
CPNumberFormattergrouping separator support.
perMillSymbolwas incorrectly used as the grouping separator.
CPSetused identity checks, not Objective-J equality checks.
CPArrayshould throw an exception when observer is added/removed.
CPSet removeObject:for an object not a member is not an error.
- Properly allow
CPNumberFormatterto operate on most
CPNumbertypes. This only worked by accident before.
CPNumberFormattermaximum fraction digits property name.
CPNumberFormatterCPCoding support and fix rounding default.
CPDecimalwould not accept strings such as '.003' or '-.003' (no integer component).
- Much improved support for sheets in general and modal sheets in particular (doc-modal).
- Better animation of sheet shadow when the sheet animates in our out.
CPPredicateEditorimprovements. Bindings compatibility.
- Raise an exception if a view is added to itself as a subview.
showRelativeToRect:is called while a popover is closing, it is ignored.
showRelativeToRect:is called when the popover is already open the existing popover is repositioned.
- Close all popovers when a window is closed.
- New: small progress indicator spinners.
- New: hold down the option key while expanding an outline view item to expand all children as well.
- The parent window of a sheet can be moved.
CPWindowsheet delegate messages.
CPTableViewthemed attribute for round rect selection of rows. Selections in the tableview can now have round corners. The default is a regular rect.
CPTableViewcontent binding (especially useful for Lion style view-based tables.)
CPImage data. If the image was not initialised using data but the browser supports canvas, data is generated.
- Improve toolbar item layout. The height of all items is determined by the tallest item. If a toolbar item has a small view or a small icon, it is now centred within the available space above the label. For example, for a tiny icon in one item next to a normal size icon the tiny icon would be centre aligned with the larger icon.
- New: toolbar
- New: toolbar support for tall custom widgets. You can now finally have that
CPTableViewyou always wanted in your toolbar.
- New: toolbar "labels only" mode.
- Use any size toolbar icons such as 48x48 and the toolbar adapts automatically (unlike Cocoa).
- Improved artwork for button bars (switch odd blue colour for a more standard white).
tokenField:representedObjectForEditingString:. This improves support for represented objects and is used both when an autocompletion suggestion is used or when the name of a token is typed in by hand.
- Place token autocomplete underneath what's being completed.
- Autosize token field autocomplete menu. The new menu is much more efficient for the user:
- Less tall items makes it much easier to select among many completions.
- Exactly wide enough for widest item.
- Tall enough to show all items (instead of just 3 as before).
- Uses a maximum width and height defined by the screen edges and some Cocoa-like constants.
- Improve token field subclassing support. Token field now triggers autocompletion from
textDidChange:which better meets the expectations of Cappuccino programmers. Eliminated custom non-Cappuccino key press handler.
- New: key bindings support for token field. Also improve compatibility with
CPTextFieldsuperclass and subclassing support by properly using
- Allow token field subclasses to override
- Allow token field
insertText:to be somewhat overridden. If
insertText:is overridden to do nothing, nothing in inserted.
- Overwrite selected tokens by typing.
- New: select all support for
- Improve token field keyboard navigation when tokens are selected.
- New: many more
showsStateBysupport, including for subclasses (
CPRadio) when appropriate. All button types now supported:
- New: full
userInfonow contains the divider index.
- Better focus ring for
CPTextFieldand all subclasses, and improved drawing of disabled contents.
- New: themable
CPColorWellwith Aristo look. Highlighted and disabled visuals.
CPColorWell's mouse handling and highlighting. Switch to
- New: the system font can now be changed at runtime, even for archived UI (e.g. through
nib2cib.) There is no need to recompile if the system font is changed in Info.plist.
CPControlnow archives its formatter. This allows you to use a formatter with a table column's data view.
- New: a font of size 0 now uses the current system font size.
CPFontManager setSelectedFont:isMultiple:and other basic properties.
- New: notify when a
CPTableViewcolumn moves through
CPTableViewColumnDidMoveNotificationand the delegate.
- New: inactive windows (windows which are not the key window) now have a greyed out window title.
- Fixed: attempt to close a sheet while it is animating is now handled.
- Fixed: in Safari 5.1 sheets would sometimes not correctly order out.
- Fixed #1279:
CPRuleEditorwas not compatible with Internet Explorer 7, 8 or 9.
CPRuleEditorwould not scroll properly in a scroll view as more rules were added.
CPTabViewitem selection could not be fully disabled through the delegate.
- Fixed #1457: clicking
CPPopUpButtonthen dragging to an item and releasing the mouse button did not select the item.
- Fixed cases where a
CPMenuwould not close after certain mouse interactions.
- Fixed: check box binding value transformers were ignored.
- Fixed: reverse value transformations were not applied for table view bindings.
CPPopover closeconsulted the delegate's
- Fixed: infinite loop with empty collection in
- Fixed: return
valueForUndefinedKey:value properly for KVC.
CPSet valueForKeyPath:returned incorrect results in some cases.
CPTextFielddid not send
CPControlTextDidEndEditingNotificationif editing had not started, contrary to Cocoa.
- Fixed #1433: more initial key view loop calculations.
- Fixed: flashing
CPTextFieldinsertion point when text field becomes the first responder.
- Fixed: when bindings were applied in reverse, the source of the binding would cause the destination to needlessly update again, causing e.g. the
CPTextFieldcursor to jump to the end after every character typed when
- Fixed: table view highlighting drawing bug.
- Fixed: table view infinite loop when finishing cell editing.
CPEvent timeStampdid not return seconds since startup.
- Fixed: don't crash when removing objects from an array controller which has its arrangedObjects.@count observed.
- Fixed: a collection view wouldn't become the first responder when its items were clicked.
- Fixed #1485:
CPScrollerdecoding bugs which would lead to errors such as
CPInvalidArgumentException: CPScroller does not contain theme attribute 'scroller-width'.
- Fixed: timestamp for
CPEvents from periodic events.
- Fixed: menu item highlighting error.
- Fixed #1491:
CPInvalidArgumentException: - [_CPMenuBarWindow scrollByDelta:] unrecognized selector sent to instancewhen attempting to scroll in a menu.
- Fixed: collection views cleared their selection whenever the content was changed.
Display value must be…exception in recent revisions.
CPOutlineView setMenu:was not effective.
- Raise an error on attempt to add a new sheet to a window which already has one, or to a window which is a sheet.
- Fixed: sheets would order out without an explicit
orderOut:message, unlike Cocoa.
CPProgressIndicatorencoder wasted space and caused errors. The errors would cause exceptions such as
Not allowed to load local resource: file:///<some local path from the machine that ran nib2cib>when loading cib driven app through a web server.
control:didFailToFormatString:errorDescription:did not actually send a string.
CPTableViewbug where dragged rows didn't have their bindings applied.
- Fixed: when a
popoverShouldClosedelegate method should be checked.
- Added a very hacky workaround for the jittery resize bug in WebKit.
CGPointFromStringwould try to parse only integer values.
- Fixed: shared
window.statusaccess when not running in the browser by
CPOutlineViewdisclosure control width was hardcoded.
CPMenuhighlights wouldn't always disappear.
CPButton's "dim image when disabled" should be on by default.
- Fixed: token field auto completions. Auto completions are strings, not represented objects.
CPTokenFieldautocomplete menu could show up underneath other windows.
- Fixed: make sure autocomplete menu fits within browser.
CPTokenField keyDown:handling. Previous nonstand implementation interacted poorly with Cappuccino's event handling and subclasses.
CPTokenFieldobject value for half finished tokens. Try to convert to a
representedObjectbefore responding to
tokenField: representedObjectForEditingString:returns nil, act the same as if the delegate method didn't exist.
CPTokenFieldtoken layout when tokens are selected.
- Fixed: browser shortcuts wouldn't work when a
- Fixed: evaluation of whether a document based application needs an untitled document on startup.
toolbarDefaultItemIdentifiers:is optional. This fix makes it possible for a cib-defined toolbar to have a delegate set without defining
toolbarDefaultItemIdentifiers:. You might be implementing other delegate methods.
CPPredicateEditor CPTextFieldaction bug.
- Fixed: non-bordered buttons should retain their size, not shrink to fit.
- Fixed #1559: many edge cases of split view autosaving and restoration, including deeply nested split views. This fix also makes it easier to override autosave restores in a subclass or a controller's
CPWindowController setViewControllerContainerView:and fix
- Use theme system for
CPColorWellbordered state. This is more consistent with the rest of Cappuccino and prepares for theming support.
- Fix clipping of text due to fractional pixels.
CPRuleEditorfixes regarding format strings and regexes.
- Fixed: browser propagation control when not in browser. This would lead to a
[CPPlatformWindow _willPropagateCurrentDOMEvent] unrecognized selector sent to instanceerror if an event was sent in a non DOM environment.
- Fixed #1593: editing of custom data views in
- Fixed: a
CPArrayControllerdriven table could show an empty selection after
- Fixed: removing selected
CPPopUpButtonitem. When the selected item of a
CPPopUpButtonis removed the first item should become selected.
- Fixed: popovers in modal windows couldn't be interacted with. This prevented e.g. date picker popovers in sheet dialogs.
CPCib instantiateCibWithOwner:topLevelObjects:did not allow a nil owner.
- Fixed: jumping text when editing a
CPTextFieldin some browsers, especially Firefox and newer versions of Chrome.
- Fixed: Internet Explorer drew toolbars of borderless windows wrong.
CPCib initWithContentsOfURL:returns nil if the requested data is nil.
CPTokenFields would sometimes unexpectedly steal first responder status. If an autocomplete choice was made followed by immediately focusing on another control, the token field would reclaim first responder status a moment later.
CPTokenFieldscrolling away from selected token. Sometimes clicking a token would cause the token field to scroll to some other spot.
data2weren't stored right. They were stored in globals instead of ivars, allowing only one
data2in the whole app.
- Fixed: in
CPArrayControllerwrong indexes would become selected when removing arranged objects.
CPWindowController setViewController:was incorrectly causing view loading.
- Fixed: wrong text sizing across the board for custom fonts. If a custom font was used with the CSS
@font-facesyntax, Cappuccino would calculate the wrong sizes for strings throughout.
CPControlformatter to format nil.
- Fixed: many sheet related first responder and mouse interaction bugs.
- Fixed: non-key window text fields tried to receive input, looked active.
- Fixed: text field font size while editing was wrong in Internet Explorer.
- Fixed: text field cut/paste by context menu would not trigger a change notification. Also just regular copy and paste could fail to trigger notifications.
- New: XcodeCapp support for Xcode 4.4 with much improved code generation. The Xcode 4.4 support enables connection of new outlets and actions without restarting Xcode. At the same time Xcode should now be better at recognising the super classes of Cappuccino classes.
- New: support for User Defined Runtime Attributes in IB.
- New: support for defining userland NS classes for conversion from IB.
- New: support for nib2cib configuration files.
- New: support
CPDateFormatter(although actual formatting not yet implemented in Cappuccino.)
- New: support for tooltips.
- Faster image utility.
- New: support for
- nib2cib will now log the path and size of custom image resources in super verbose mode.
- New: support alternative image and title for buttons.
- New: support "thick divider" split view style.
- New: support for tags on
NSCell, useful for radio groups.
NSButtonnow allows buttons that are not fixed height, if the theme allows it.
- Fixed: a regular size spinner in IB became twice as large in Cappuccino.
- Fixed: button
- Make the default grid color in IB show correctly in
NSClipViewobey the Draw Background checkbox in IB
capp ThemeDescriptortemplate with better tasks, documentation and structure.
- Stop generating useless XML from doxygen.
dump_themetool to inspect themes.
capp_lintadded to Tools.
- Fixed: don't mention
narwhaljs.orgin bootstrap.sh - it doesn't exist anymore.
- Warn about the need to
capp_lintcheck for space inside parens and dependent statement on same line
What's New in Cappuccino 0.9.6 (RC1)
Release date: 2012-04-26
Foundation and Core
- Improved docuemntation for
--includeTypeSignatures) option which activates the
CFPropertyListsupport for date decoding.
- Fixed #1405:
TypeError: framework is not a function, it is undefinedwhen compiling Objective-J on Linux.
- Fixed #1405:
Error: Could not load file at Foundation/Foundation.jwhen compiling Aristo on Linux.
CPNotificatioNCenternotifications were sent to removed observers. If one observer of a notification centre notification removed another observer, that other observer would still be notified even that it was no longer observing.
- Fixed #1424: incorrect PNG paths for
CFPropertyList.propertyListFromXMLdid not properly decode base64 encoded data values.
- Archive default theme attribute values.
- New: tooltips are now themable.
- New: some bindings support for
- New: title support for
- New: support for split view
- Improved: rewritten
CPSplitViewresizing which plays well with a mix of fixed size and non-fixed size panes.
- Throw an exception when trying to set a scroller's knob proportion to NaN or Inifinity.
- Throw an exception when trying to set a null minimum item size for a
- Support for "small" size toolbars (
- Improved documentation for
- New: checkbox placeholder bindings options.
- Calculate a default key view loop for windows loading from cibs if necessary even if
CPColorcomponents to [0.0, 1.0].
- Stub out
- Tile narrow vertical three part images horizontally, and short horizontal three part images vertically. For example you can use a 1px wide vertical three part image to stretch to any width.
appkit_tag_dom_elementsdebug option adds a
data-cappuccino-viewattribute to most Cappuccino controls, making it easier to troubleshoot in a browser based document inspector.
- Minor scroll view optimisations.
- Don't draw a table corner view if there is no vertical scrollbar.
CPView registerThemeValues:to change view theme attributes at runtime in a manner similar to
CPPopoveranimation tweaks and improvements.
- New: select
CPOutlineViewitem parent with left arrow key.
CPOutlineView selectionShouldChangeInOutlineView:delegate method.
- Fixed #1296:
CPBrowserdid not notify its delegate of new selections if the selection was made using the keyboard.
- Fixed #1413: Internet Explorer
colorWithCSSString:crash. Syntax such as
[[CPColor colorWithCSSString:@"rgba(0,0,0,0.5)"] cssString]lead to a CSS string incompatible with browsers without the CSS rgba feature.
- Fixed #1412: Internet Explorer rendered clearColor shadows in black.
- Fixed #1411: in Internet Explorer, no table/outline view selection highlights would render for certain cibs.
CPArray filterUsingPredicate:did not work for certain types of arrays, and could potentially cause erroneous results for
CPArrayControllers with filter predicates.
- Fixed #1436: calling
CPShadowView shadowViewEnclosingView:on a subclass of
CPShadowViewwould return an instance of the superclass.
CPTabView selectedTabViewItemwould raise an exception when there were no tab items instead of nil.
CPTabViewwould not properly reflect changed views if the view changed while the tab was not selected.
CPSplitViewtried to auto save even without an auto save name.
+ CPFont boldFontWithName:size:italic:sometimes returned a non-bold, non-italic font.
- Fixed #1444:
+ CPFont fontWithName:size:italic:sometimes returned a non-italic font even for
CPTableColumndecoded and set its header view twice.
CPArrayController avoidsEmptySelectionincorrectly was applied when setting an empty selection through code.
- Fixed #1450: a scroll view with non hiding legacy scrollbars would crash if the document view had a size of 0 pixels in either dimension.
CPCollectionView setSelectionIndexes:nilwould freeze the app.
- Fixed: don't crash when loading a
CPCollectionViewwith no item prototype view from a cib.
- Fixed: sending
CPWindow setAutorecalculatesKeyViewLoop:NOcaused the window to recalculate the key view loop.
[CPString count] unrecognized selectorerror when binding an array controller's content array to a key of another AC's selection.
CPWindow autorecalculatesKeyViewLoopnow defaults to NO rather than null.
- Fixed: small size toolbars in bridge windows didn't show the bottom shadow line.
- Fixed: blurry
- Fixed: scroll views with a bezel border had two strange dots in the upper corners instead of a Lion-like bezel.
- Fixed: table column divider lines were drawn on top of the header bottom line.
CPViewControllerview loading behaviour tweaks.
CPViewController initWithCibNamed:bundle:ignored the
CPPopovercreated a new window every time it opened, leaking memory in the process.
popoverDidClosecould be called before animation finished.
CPPopUpButtonexposed an unintended
- Make bold text labels a little taller when converted to avoid cropping the bottom.
CPTableViewbackground colour support.
- Fixed: empty
CPTabViews could not be converted.
- Fixed: toolbars with standard items such as
NSToolbarShowColorsItemdidn't convert right.
CPBoxtitle position 'none' was converted to 'on top'.
- Support for
- Fixed: base64 data could not be decoded from nib files.
- Fixed: search fields had the bottom pixel cut off.
- Fixed: toolbar search fields were cut in half height-wise due to a too small max size.
- Fixed: spinner style progress indicators were nib2cibbed to progress bars.
- Fixed: spinner progress indicators took on the wrong size in Cappuccino.
- Fixed #1401: Cappuccino docs wouldn't display properly in Windows.