Table of Contents
qooxdoo 1.0 (2009-12-17)
The following release notes detail the changes after the latest stable release qooxdoo 0.8.3, therefore including the changes of the pre-release qooxdoo 1.0-beta1.
For more info about the many features and highlights of qooxdoo 1.0, please see the following:
People coming from older versions of qooxdoo and upgrading to 1.0 will have to migrate their existing applications.
Framework
Performance
- Disposing of objects takes less time.
- Assertions are faster now.
qx.html.element.Style.setStyleshas been improved.- Improved
qx.lang.String.pad.
Event System
- #2891 Mouse capturing now works even if the user leaves the browser view port.
- #2919 Mouse Capturing: Captured events are now bubbling.
- #2795 All native events can now be cloned without breaking any of the public API.
- #2856 Drag and drop events are now bubbling.
qx.event.Commandhas been split up into two different classes. One,qx.bom.Shortcut, handles the shortcut functionality. The other,qx.ui.core.Commandis the high level command.
Core
- All legacy code has been removed.
- Improved browser detection and added
qx.bom.client.Browserwhich can be used to get the browser name and version number. Thanks to Sebastian Werner for contribution. - Added detection for Windows 7 to
qx.bom.client.System. - Fixed some issues with the size calculation on
qx.bom.Viewportandqx.bom.Document. - Safari 3 always returned the wrong value for
isStandardModeonqx.bom.Document, this is now fixed. - Fixed an iframe issue in Firefox. Whenever the iframe got a new parent element Firefox did load the wrong source under certain circumstance.
- Prevent inline root from growing endlessly if the height of the element is implicit (=defined by the content).
- New method
qx.util.DisposeUtil.disposeTriggeredBy(). - Corrected several destructors.
- Fixed wrong format and size return values in
qx.io.ImageLoader. - Added serializer util class
qx.util.Serializerthat produces a native JavaScript object. - Removed almost all dependencies from qx.core.Assert which can lead to a smaller footprint of qooxdoo.
- Fixed loading/startup issue in IE whenever qx was loaded within a frame.
- Types of fired custom events are now validated against the declared types in the class map.
Browser Support
- Firefox 1.5 is working again.
- #2230 For Internet Explorer 8, fixed unreachable TextField when a TextField is lying over an image.
- Fixed mouse events in iPhone.
Transport
qx.io.remote.RequestQueuestopped sending when too many requestHandler throw an exception. Applied a patch that places the request handler in a try/catch block to prevent a program crash upon exception. If an exception is thrown, an "aborted" message is now issued to the application.- Fixed a timeout issue at the new HttpRequest implementation (qx.io.HttpRequest). Thanks to Sebastian Werner for the contribution.
Low-level
- The History Manager has been refactored. It now supports the native
hashchangeevent and IE support has been improved. Additionally the state is now available as a property which makes it bindable. - Fixed loading issue in BOM libraries in IE.
- Improved low-level blocker class.
- The global error handling is disabled for the BOM skeleton. In this scenario every error is handled by the browser directly (and not catched by the framework).
- Low-level XMLHttp implementation received a major overhaul. Thanks to Sebastian Werner for the patches.
- Added support for modal native window.
- Testing an element for event support is now supported.
GUI Toolkit
UI Core
- #3075 Fixed size hint calculation for some edge cases.
- Removed the color
greyas valid color, because this is not a valid color for IE6 and IE7. - Added property
wraptoqx.ui.basic.Label, to allow or deny line breaks. But this feature only works with rich labels. - Added property
blockToolTiptoqx.ui.core.Widgetto disable a tool tip. - Removed limitation of not being able to change the scaling mode and/or the source of a
qx.ui.basic.Imagewidget during runtime. - Fixed alpha PNG issue at decoration utility class.
- AlphaImageLoader is now used for all IE browsers. The reson is documented in Bug #3253.
- Bugfix in Element queue. Thanks to Derrell Lipman for the patch.
- Use the CSS3
pointer-eventsproperty to optimize shadow rendering.
Layouts
- Fixed a bug in the box layouts which caused some wrong flex values.
- Fix HBox and VBox decorators for IE quirks mode.
- Add public API to the Grid layout to read the number of rows and columns.
Data Binding
- The data binding is no longer experimental.
- Added two new data stores.
- JSONP data store.
- YQL data store.
- Two new delegate methods for the data stores.
- Added the possibility to change settings on the created request.
- Added the possibility to manipulate the data returned from the request.
- Improvements to the form controller concerning init values and binding options.
- Improvements to the selection handling of the controller.
- Improved the single value binding in cases of binding property chains on the target.
- Minor improvements in the tree and list controller.
- Introduced a reverse binding possibility in the list and tree controller.
- Improvements to the data binding selection handling.
Forms
- Form validation is no longer experimental.
- The placeholder now also supports password fields.
- Minor improvements to the resetter.
- The model selection array for RadioGroup's, RadioButtonGroup's, List's, SelectBox'es and Trees has been changed from a native JavaScript array to a qooxdoo data binding array.
- Fixed some problems with executions on check boxes and radio buttons.
Widgets
- #730 Large menus are no longer cut off at browser window.
- #2847 Option to use native browser scroll bars in all widgets.
- Changed
unblockandunblockContenbehavior from our Blocker. Both methods take now care of the number ofblockandblockContentcalls, before the Blocker is removed. To force a unblock, two new methods are addedforceUnblockandforceUnblockContent. - Adjust the
Tableto the Selection API and renamed theclearSelectionmethod toresetSelection. - Table column model has a new method
setColumnsOrder(), the remote table model new setters for attributessortColumnIndex.andsortAscending - The
getPreviousSiblingOf()method of Tree has new param allowing search to be restricted to current nest level. - Progressive: removed experimental indications. The Progressive interface is now considered reasonably stable. Contributed and maintained by Derrell Lipman.
- RadioButtons and CheckBoxs are not updated when using a shortcut from a command. This bug #3037 is fixed.
- Fixed drag selection issue on
qx.ui.tree.Treebug #3208. - Setting decorators and paddings on root widgets is now prevented because it will break the positioning of popups.
- Add support for dynamic locale switching to the
DateFieldwidget.
Table
- The table pane now sends an event after it has modified the DOM.
Theming
- The default theme for applications is now
qx.theme.Modern.
Applications
Showcase
- New Showcase application that highlights some of qooxdoo's features.
Inspector
- The auto completion now works with the key word
thisand you can type the tab key without having a valid sub key likeqx.. - Done some improvements on the property window do make it more reliable for internal exceptions.
- Done some improvements basically minor bug fixes.
Demobrowser
- Demobrowser GUI and demos are now generated jointly in one generator process.
- A search field has been added to the demo browser which makes it possible to search for the names of demos.
- General improvements to the filter capability.
- Added a welcome page and links to other interesting qooxdoo apps.
- The code of most of the demos can now be send to the playground for live testing.
Playground
- New table demo.
- New a YQL demo.
- New tree demo.
- #2772 Fixed issue with hash value in IE.
API Viewer
- We improved the user interface of the API Viewer: property methods are shown now by default and we switched from a menu toolbar to simple radio buttons to allow faster access.
- #1649
throwinformation will now be displayed for every method which can throw errors. - #1780 You can now include API doc for all used libraries of the application, using the API_INCLUDE config macro.
- The viewer will also scroll correctly to the selected entry now.
Test Runner
- #2907 Generator jobs "test" and "test-source" now honor the "libraries" job, so that additional libraries used in the application are also considered for the test application.
Skeletons
- [BUG #2488] New
nativeapplication template, for low-level applications with full qooxdoo OO and event support but no widget layer. - The
migrationapplication template has been withdrawn (as there is no longer the qx.legacy.* infrastructure.
Tooling
- A new bash COMPSPEC file allows tab-completion of generator jobs (tool/bin/generator_compspec.bash).
Generation
- The generator now only prints stack traces when invoked with the -s command line option.
- #2376 Dependency checking is more accurate now, also after library changes; unknown global symbols are warned about.
- #2800 New experimental option to split off I18N data in separate files, using config key packages/i18n-with-boot = false. There is no automatic loading of these files, this is currently up to the application.
- #2129 Resource information is now maintained on the package level, not globally in the loader script, which greatly reduces loader script sizes; using this with the new packages/<part>/no-merge-private-package key allows theme-specific packages to retain their own resource info.
- #2879 Add facility to hook JS code into qx.$$loader.decodeUris(), using compile-options/code/decode-uris-plug.
- Parts are now being verified after package collapsing, to make sure they contain all required classes.
- The compile cache will be auto-cleared by default when a cache-affecting change in the tool chain was made (controlled by the cache/invalidate-on-tool-change config key); the cache directory now maintains a .cache_check_file to check cache freshness.
- Speed up in the generation of .po files.
#ignorecompiler hints in class code are functional again.- The clean-files action key now allows Python-style file globs.
- Improved logging when checking/downloading contribs.
- Various parser bug fixes.
- #3031 If create-application.py is invoked with both namespace and application name parameters, only the namespace will be modified to only contain valid JavaScript identifier characters.
- #2038 New generator job
info: Prints some basic environment information for debugging. - #2220 The
copy-filesjob will now overwrite target files that are write-protected.
Configuration
- The compile-source and compile-dist config keys have been deprecated in favour of compile-options and compile. The old keys are still accepted, but if you have extended or overridden standard build jobs (
source-scriptorbuild-script) in your own config, migrate to the new keys. - #2868 Set translate/poentry-with-occurrences = false, to disable the generation of location comments in .po files.
- New add-script config key allows inclusion of arbitrary Javascript files.
- The loader template for the source/build versions is now configurable (compile-options/paths/loader-template); see
tool/data/generator/loader.tmpl.jsfor a sample. - A new generator option -m/--macro allows specification of let macros on the command line.
Internationalization
- Various updates to the translation handling module (polib).
Code Formatting
Migration
People developing with older versions of qooxdoo and upgrading to 1.0 have to migrate their existing applications. Here are a few related notes. For more info about the semi-automatic migration support, and to migrate existing applications, please see the migration guide.
API Changes
qx.util.ColorUtil.hsbToRgbnow returns the RGB value as array instead of a map.- The
qx.io2.*namespace is moved toqx.io.*.
Missing Features
- Part handling is still experimental.
- Active support for Python 2.4 has been dropped.
- HtmlArea won't start correctly in Opera 9.6.x and below under Linux. This issue is documented at Bug report #3257.
