Although it has been out for a couple weeks already, I had never officially announced the completion of the SproutCore Web Application Development book in this blog. So for anyone that has been waiting for a book on SproutCore, you should know that it has finally been completed and you can purchase a copy here.
This book covers almost every aspect of SproutCore with detailed explorations of the runtime environment, the MVC layers that SproutCore brings, using statecharts, interacting with multiple remote data stores and many many other topics all the way through to unit testing and deploying real SproutCore applications. So if you’re looking to take the next big leap in web software development and have ever been curious about SproutCore, now is your chance to learn everything you need to know in one easy read.
SproutCore 1.10.2 is now available. This is a patch level release and includes the following fixes:
- Fixed problems with keypress handling in IE8 and Opera.
- Fixed the swap transition plugin,
SC.ContainerView.REVEAL, to properly reset the content view’s layout after transitioning out.
- Fixed a problem with
SC.View.prototype.cancelAnimation(SC.LayoutState.CURRENT) that failed to stop at the proper top or left positions when using CSS transform animations when the top or left values were negative. This also improves the
SC.ContainerView.PUSH transition, making it possible to push multiple content views without overlapping (see example).
SC.ContentValueSupport to notify a change to each of the dependent content keys when the content changes entirely (i.e. the ‘*’ property changes).
SC.SelectView to update correctly when its items collection is replaced.
SC.AutoMixin to prevent the attributes from the former child views being applied to the latter child views.
- Fixed locally-scoped ‘and’ & ‘or’ bindings.
- Fixed a problem when the initial
isEnabled value of a view is
false, that failed to update the
isEnabledInPane value of that view and its child views.
- Fixed the problem that setting the
isEnabled value to
true of a view which had disabled ancestors, could change the value of
isEnabledInPane for that view to
SC.TextFieldView being able to still be edited if it had focus at the same time that an ancestor view was disabled.
- Fixed the
defaultTabbingEnabled property of
SC.TextFieldView to actually prevent tabbing when the property is set to
false. Also added
insertBacktab handler support to
interpretKeyEvents in order to prevent tabbing on shift-tab in
- Added missing support for touch events to
- Fixed a bug that caused
SC.TextFieldView hints to have a
0px line-height at times.
- Fixed a regression in collection views that prevented them from properly re-rendering when inside nested scroll views.
- Removed a duplicate listener on
selectstart events in
- Removed the jQuery ready hold in
SC.platform that was used to delay launching of the app until the transition and animation event names tests completed. Several browsers will not run the transition/animations in hidden tabs, which slows and possibly blocks an app from launching. Since the results of these tests are used only to optimize the event listeners set up in
SC.RootResponder, the code has been changed to setup the root responder at whatever point the tests successfully finish.
- Fixed picker panes failing to popup in the wrong place if they have some form of resizing. Added an observer to
SC.PickerPane border frames so that the pane will re-position itself if it changes size.
- Removed the appearance of an
undefined attribute in
- Fixed internal identification of IE7 to prevent any possible future version of Trident from being mistaken for IE7.
- Fixed a minor memory leak when manually removing event listeners from an element.
- Fixed a minor memory leak when using
This post is about one of the most important goals of SproutCore, making web app development easier and faster. SproutCore has always been largely about really fast app performance, but in many ways the performance benchmarks of a framework are only as good as the real world performance of the developers using that framework. Therefore, we wanted to highlight a number of recent additions to SproutCore purely for the purpose of helping developers create even faster SproutCore applications even faster.