qooxdoo 0.8-alpha2 (2008-07-11)
Framework
Core
qx.Class.patchpreserves references to overwritten methods- Abstract classes should not be required to implement all interface methods
- The mixin
MUserDatawhich addssetUserData/getUserDatawas merged intoqx.core.Objectfor better performance of the core object class. - Fix in Property class: allow “deferredInit” to init complex types
- For improved performance the property values are not validated in non-debug builds anymore. It is suggested to test applications intensively using debugging enabled, though
- Use assertion for property checks. This gives us much better error messages and a stack trace.
- Adobe AIR is now correctly detected by the client detection.
Events
- Optimized event dispatch significantly
- Let
fireEventreturnfalseifpreventDefaultwas called on the event object fireDataEventis now non-bubbling- Improve error messages thrown by Object’s
addListener/removeListener - Added
getCharto KeyInput events - “load” and “input” events now not processed by the UI EventHandler anymore. These are custom implementations for every widget (mainly because not every widget can support these events)
ChangeandDataevents were merged to Data event. These were often used exchangeable but had complicated this because of different interfaces (getValuevs.getData)
Communication
- Some fixes to the transport layer:
serverDataproperty declaration fixed. Windows error code 12007 handled appropriately qx.util.Json.parseis now working.
BOM/DOM
- Added
getmethod in bom/element/Class class to retrieve classname property - Added
getElementIndexmethod to Hierarchy class - Fix URL to the helper html file in the history manager.
- The focus APIs of qx.html.Element were improved to allow better access to some information only the element itself can give (
isNativelyFocusable,isFocusable,getNodeName, ...) - Fixed event listeners in Iframe.js
- Make use of deprecation infrastructure from 0.7
GUI Toolkit
New Features
- Added support for embedding canvas tags into qooxdoo GUI applications.
- TabView scrolls TabButtons
- Introduced sub-control handling
- Introduced state inheritance support
- Implement
addChildandremoveChildevents - Added support for global cursors (used for resizing or drag arrows etc.) (no support for IE available)
- Ported the completely rewritten and improved SplitPane widget to 0.8.
- The improved TabView widget is now ported to 0.8.
- Polished SelectBox and ComboBox widgets are now available in 0.8.
Improved Features
- Major improvement for appearance caching. The new solution is heavily based on bit-masks and boosts performance for cache access tremendously.
- Implement remote padding and font style handling
- More polished themes
ClassicandModern - Atoms now support shrinking and show an ellipsis sign in their Labels when not enough room is available.
- I18N: Reintroduced optional runtime switching of locales.
LocalizedStringis now sub class ofString - Support for
tabFocuswas added. This means that on focusing a widget using theTabkey something else may happen than when using the mouse. This is mainly used by Spinners etc. to move the caret into the textfield when pressingTab. - Hopefully the “final” implementation for the scrolling system is now included. It correctly handles issues like scroll positions which got forgotten when toggling visibility of widgets. Also possible now is to scroll or to scrollIntoView at every moment of application runtime.
- The SlideBar widget was improved. First steps were made to support different orientations (as used by the TabView).
- SelectionHandling now supports a new method replaceSelection to easily switch to another selection (available in Lists, Trees, ...)
- TabView now supports all directions for positioning the SlideBar.
API Improvements
- Removed runtime switching of themes after discussion, as this showed to have significant technical impact
- Made Tree API more consistent
- The Spinner widget now enforces the configured limits when checking the value property. New
gotoValuemethod to automatically move value into allowed range. - Window got more love: Moved
zIndexcode from window into the window manager. Lazily create statusBar. Supportmaximize,minimize, andcloseevents. Grid layout used for captionbar. Support for modal windows is still missing. - RadioManager was renamed to RadioGroup
- Interfaces were created for form elements and radio items. All form elements already implement these.
- SelectBox and ComboBox now fire correct
changeSelectedrespectivelychangeValueevents. RadioGroupBoxnow behaves like a regularRadioButton(same interface)- The
alignproperty of the Atom has finally renamed back toiconPositionto not interfere with the already existingalignXandalignYproperties used by the layout managers. - Optional layout options for the Toolbar’s
addmethod. - ComboBox: Removed “editable” property. Use SelectBox for a non-editable and ComboBox for an editable widget.
Fixes
- Several fixes for IE under HTTPS to get rid of “insecure elements” warnings
- Fixed IE rendering issues and failing IE unit tests.
- Added support for loading external images → now handled by the ImageLoader
- Bug fixes and improvements for almost all widgets. Particularly resolved issues for Spinner, Image, Button, ...
- Fixed switching between text and icon multiple times in Atom
- Fixed Grid layout bug, as an incorrect
minSizewas calculated - Fixed appearance queue issues for dynamically created widgets through the appearance system itself which often received the wrong appearance.
- Remove Decorator queue. There is no longer a connection between widget and decorator
Todo
- Porting the following widgets has not been started: Menu, Table
- Complex combined controls like ColorPickers, Datepickers etc. are still missing
- FocusRoot support still missing
Tools
- Fix problems reported by
make lintadded new check to ecmalint: check if all loops statements are followed by a block - Fixed Profiler, which only reported static methods
- Like GWT qooxdoo’s string optimizer now uses scope global variables instead of an array. This makes the lookup of strings a lot faster in IE.
- The variable optimizer now takes care of reserved words and do not overwrite these in local variables anymore.
- Reworked structure of ‘tool’ folder
- Changed command line interface of new generator:
-cis optional (defaults toconfig.json) and-jis removed, the jobs being specified as arguments. - Implemented helper targets
pretty,clean,distclean,publish,lint,migration,fixin new generator.
- Standard applications Apiviewer, Demobrowser, Feedreader, Portal, Showcase, Skeleton, Testrunner and Website use the new generator for their main build targets (
source,buildandapi). - Minimized application-level config.json files for Feedreader, Skeleton, due to better support in generic application.json.
- Config files: New top-level include syntax and semantics.
includeentries are maps now. Namespace-less includes of external config files. Config files can still be imported under a name space prefix with the optionalaskey. List of jobs to import can be specified with the optionalimportkey. - Config files:
exportlist, to narrow the list of jobs to be exported on include. - Config files: Top-level
letsection which will be automatically added to each job. - Config files: Triggers
compile-distandcopy-resourcesdon’t rely on each other anymore and can be invoked independently forbuildjobs.
- Fixes in parsing of regexps and arithmetic expressions.
- Better support for native Win32 Python.
Applications
- Added portal application
- Many bugfixes for the demo section, e.g. Safari compatibility
- TestRunner runs again in IE7. Also missing icons were added.
- Added three new animation demos to demobrowser.
Documentation
- A lot of API documentation improvements
- Complete/Fix documentation of qx.core
- Major additions to the GUI Development article
