New in qooxdoo 4.0.1 (Jul 9, 2014)
- core.dev:
- Console log breaks if className of SVG element is type of SVGAnimatedString (8432)
- core.event:
- addListenerOnce doesn't remove listener (8100)
- Focus won't be set on touch devices (8450)
- Swipe does not fire when target changes (8421)
- wrong wheelDelta values in Firefox (8433)
- desktop:
- Tap event is not handled properly in IE 10/11 on Windows 7 (8436)
- desktop.embeds:
- Iframe test fails in IE (7729)
- qx.test.ui.embed.Flash.testEvents fails in IE 11 on Win 8.1 (7960)
- desktop.form:
- Spinner SingleStep issue when clicking up/down button (8461)
- desktop.list:
- Additive selection mode not working correctly (8434)
- desktop.table:
- Drag & Drop on table doesn't work (8404)
- desktop.theming:
- Wrong behavior while switching themes (8341)
- mobile:
- NavigationPage "stop" event fires too late (8425)
- mobile.widget:
- JS error occurs when a mobile widget gets disposed before the initialization of iScroll is finished (8441)
- qx.ui.mobile.container.Collapsible has memory leaks (8455)
- qx.ui.mobile.container.Carousel has memory leaks (8459)
- TextArea in Internet Explorer ignores new line characters (8402)
- qx.ui.mobile.layout.Card has memory leaks (8458)
- website.widgets:
- The state set with "widget.setEnabled" is not persisted (8427)
New in qooxdoo 4.0 (Jun 6, 2014)
- app:
- Use pointer events in the qx.Desktop demo apps (8120)
- Use pointer events in the qx.Website demo apps (8115)
- Use pointer events in the qx.Mobile demo apps (8119)
- app.apiviewer.desktop:
- Add grunt support to the ApiViewer (8063)
- app.apiviewer.website:
- Polyfill methods should be findable using the search (8035)
- qx.Website API Viewer should mark optional parameters (8253)
- Send messages when a module header is rendered (8332)
- Migrate Selenium based tests to WebDriver (8150)
- Add extension points for index.html of website API viewer (8247)
- widget factory methods listed twice in the docs (8166)
- $onFirstCollection is not listed as plugin method (8264)
- Duplicate module docs (8316)
- Different interpretation of @link tags (8268)
- Api viewer: undefined.getCalendar (8350)
- app.demobrowser:
- Remove test demos (8190)
- Add grunt support to the Demobrowser (8053)
- app.featureconfeditor:
- Add grunt support to the FeatureConfigurationEditor (8054)
- app.feedreader:
- Add grunt support to the FeedReader (8055)
- app.mobileshowcase:
- Migrate Selenium based tests to WebDriver (8144)
- Enhance demo for "Page Transitions" (8002)
- Add grunt support to the MobileShowcase (8056)
- Reverse animation is missing (8001)
- Label overlays SelectBox in Mobile Showcase (7539)
- qx.Mobile toolbar button is cut off at bottom (7543)
- app.playground:
- Add grunt support to the Playground (8057)
- Update ajax.org code editor (ace) (7450)
- Cursor misplaced in ACE (7952)
- app.showcase.desktop:
- Add grunt support to the Showcase (8058)
- app.testrunner:
- Hide 'Native Profiling' button if no performance tests are loaded (7953)
- Add grunt support to the Testrunner (8062)
- app.testrunner.website:
- Low-level Test Runner should support partial test suite loading (8225)
- app.todo:
- Add grunt support to the todo app (8059)
- app.tutorial:
- Add grunt support to the tutorial app (8060)
- app.widgetbrowser.desktop:
- Add grunt support to the WidgetBrowser (8061)
- app.widgetbrowser.website:
- Migrate Selenium based tests to WebDriver (8146)
- WidgetBrowser: When application is resized the content shines through the right sidebar (8352)
- core:
- Using requireJS parallel to qooxdoo breaks qx.bom.Template and qx.lang.Json (8064)
- Missing object comparison in qooxdoo (8152)
- An instance has no 'classname' property when the class is defined with qx.Bootstrap.define (8046)
- qx.bom.client.Plugin does not recognize that Firefox is able to open PDF files (8142)
- qx.util.format.NumberFormat#parse fails to parse decimals
New in qooxdoo 3.0 (Jul 23, 2013)
- Desktop:
- qooxdoo's GUI toolkit for feature-rich applications has become much more lightweight.
- While keeping most of its sophisticated feature set, every desktop widget now consists of just one DOM element (from 2-5 before) and corresponding JavaScript object representation. So a typical desktop application now comes with less than 50% of elements, a fact that improved UI performance on all devices tested.
- 
Illustrating the reduced DOM elements: previous qooxdoo (left) vs. qooxdoo 3.0 (right)
- The optimizations were only possible by revisiting the browser support: We took further advantage of native features built into modern browsers. At the same time we implemented graceful degradation in older browsers (like IE8) and discontinued support for some legacy browsers (like IE6 and IE7). Moreover, this release already embraces future browsers (like IE11 Preview).
- Chances are good you won't have to change anything in your existing qx.Desktop application. See the documentation if your application needs some manual adjustment (e.g. if you created a custom theme).
- We have been able to achieve a good user experience in running qx.Desktop apps on touch devices. For instance, on hybrid devices (like Windows 8 convertibles) or tablet devices like the iPad. To further support the latter scenario, we introduced a new setting for you to opt-in to mouse event emulation on touch devices. This further increases subjective performance when using your fingers to interact with desktop apps.
- Website:
- The qx.Website API Viewer saw some improvements: Many new API samples were added, consisting of HTML and CSS as well as JavaScript code. Most of them can be executed and edited on jsFiddle with just one click.
- Beside qx.io.rest.Resource there exists now also qx.bom.rest.Resource which brings REST to qx.Website (exposed as q.rest.Resource) in company with a FakeServer (q.fakeServer) for testing purposes.
- In addition to providing qx.Website as a single all-in-one script file we also offer separate module builds (i.e. q-core-3.0.min.js, q-animation-3.0.min.js, …) which are freely combinable.
- Mobile:
- iOS devices use "-webkit-overflow-scrolling:touch" instead of iScroll.
- Using SCSS instead of LESS as the CSS-precompiling technology LESS to SCSS. With this comes the powerful new possibility to customize our qx.Mobile standard theme Indigo.
- 
- Support for BlackBerry 10 OS.
- Support for displays with different device pixel ratios (1.5x, 2x, 3x).
- New container widget: Drawer.
- 
- A longtap event has been added. You can test the event on the events page of the mobile showcase.
- Community / Tooling:
- A new qooxdoo-contrib infrastructure was being rolled out. With the new release the Github-based catalog will be used to find and download contributions. (See dedicated blog post).
- New tool chain jobs:
- watch (auto-building the application)
- watch-scss (auto-building CSS files from SCSS, mobile apps)
- source-server (mini webserver for the source version)
- source-httpd-config (web server configuration for the source version)
- source-server-reload (auto-reload application in the browser)
- validate-config, validate-manifest (validate config.json, Manifest.json)
- Cold cache built speed-ups through pre-compiled information of the framework classes.
- Enhanced manual including special characters in search strings (`.`, `-`, `#`, `@`), and upper-case words.
- Browser Support:
- Improved feature detection for pointerEvents.
- Core:
- Serializer now supports serializing qooxdoo classes / mixins / interfaces (#7369)
- Added a cancel method for requestAnimationFrame based frame sequences (#6994)
- Use HighResolutionTime for requestAnimationFrame if supported (#7003)
- Added a wrapper for the PageVisibility API (#5391)
- Added basecall feature (i.e. this.base(arguments, varargs)) from qx.Class also for qx.Bootstrap classes (#7404)
- Resolved error when overriding a generated property method (#4726)
- Data Binding:
- Only fire a change event on array splice if the content really changed. (#5777)
- Call the converter in case the property chain for binding breaks (#6880)
- Added a set of convenience methods to the data array (#6787)
- Fixed the bubble handling when removing and adding the same instance with splice (#7132)
- Fixed Single Value Binding cleanup (#6947)
- Added two new properties to the array's change event data: added and removed items. (#6207)
- Transport:
- New mock HTTP backend based on Sinon.JS (#7188)
- getResponse() does no longer return null for error status (#6680)
- Added a isDisposed() method to the bom requests (#6848)
- Fixed JSONP handling in combination with REST (#7533)
- qx.Website
- Cloning DOM nodes now works as expected for collection with child nodes (#7358)
- It's now possible to add native 'MSPointer*' events to any DOM node if necessary (#7342)
- Animation of the attributes 'width' and 'height' now work for all IE browsers (7310)
- API Viewer code samples can now contain HTML and CSS as well as JavaScript code. Samples flagged as 'executable' will be opened in jsFiddle. (#7224)
- q()/qxWeb() now optionally accepts a collection as context. (#7264)
- Event module: New method allOff() removes all listeners (optionally of a given type) from the collection items. (#7202)
- Touch events are now normalized (using MSPointer events in modern IEs). (#7147)
- Do not apply the keep frame if the animation has been stopped before end (#7418)
- Fixed stopping of JS based animations (#7015)
- Two animations can run on one element when two collections are used (#6948)
- Added support for prefixed css keys in animations (#7002)
- Updated mustache.js to version 0.7.2 (#6866)
- Library:
- Added build-module-all and build-module-all-min jobs which build module tailored qxWeb js-files (#6849)
- Added q.rest.resource module (#7332)
- Added q.dev.fakeServer module (#7331)
- Added renderToNode() method to template module (#7300)
- Fixed slice(): q('div').slice(0, 0) now returns [] (#7322)
- Fixed empty(): fixed destroying of child elems in IE (#7323)
- Fixed replaceClass(): only adds a class as replacement (#7265)
- Added code samples for modules Core, CSS, Manipulating, Traversing (#7064)
- qx.Desktop
- UI Core:
- Fixed scroll handling on container edges (#6175)
- Allow to release child controls (#6932)
- Prevent dragover and dragleave events on the drag&drop cursor (#6909)
- Close all menus on scroll via mouse wheel to make sure the positioning does not break. (#7009)
- Added mouse emulation for touch devices (#7145)
- Make use of AnimationFrame in the queue manager (#7153)
- Prevent click events after drop (#6951)
- Added a method to stop scroll animations (#7211)
- Removed the container element (#7302)
- Associated buddy is toggled if qx.ui.basic.Label is clicked (#6881)
- Fixed qx.ui.toolbar.ToolBar items show property regression (#6823)
- Added missing initialization of shortcut string for qx.ui.core.Command (#7036)
- Fixed hiding of all popups in qx.ui.popup.Manager (#7126)
- Data Binding:
- Form controller resets form item values when bound model is set to null (#6060)
- Enhanced documentation of changeSelection event for data bound selections (#6110)
- Form:
- Fire changeValue event when maxLength is set and value has changed (#7158)
- Double form renderer aligns labels right (#7489)
- Prevent selection of null on mouse wheel on an empty select box (#7007)
- MenuButton now has its own appearance id plus theming. (including a down arrow) (#6981)
- Make sure 0 (and only 0) will be accepted as value when the input field is set to required (#7052)
- Widgets:
- Fixed resetSource of IFrames (#7443)
- Fixed wrong selection when opening qx.ui.table.celleditor.SelectBox (#6889)
- Added "top-right" and "bottom-right" as icon position to the atom (#6347)
- Theming;
- If a appearance can't be resolved correctly (e.g. a nested child control) a info message is shown to aid the developer how this fix this issue (#7086)
- Apply decorator styles to the content element (#7273)
- Allow disabling of dynamic theme change (#7138)
- React more specific on theme changes (#6979)
- qx.Mobile
- New container widget Drawer, similar to the iOS or Android drawer widgets. It is a kind of “pull-down” menu which can be added to the application’s root or any qx.ui.mobile.container.Composite.
- qx.Mobile now supports the BlackBerry 10 OS (#7415)
- Mobile labels and list items now support runtime locale changes. (#7099)
- OrientationChange Event always returned the wrong mode on Galaxy Nexus. (#7163)
- Tap event fired unintentionally when scrolling back and forth, then releasing. (#7374)
- Replaced __selectedIndex through selectedIndex property in menu, for firing event 'changeSelection'
- Updated __selection to property in qx.ui.mobile.form.SelectBox for firing event "changeSelection" on every property apply
- qx.ui.mobile.form.SelectBox.setSelection method did not fire "changeSelection" event (#7228)
- Picker widget not "stopping" button events (#7152)
- Carousel scrolls to wrong position when user switches between TextArea on different CarouselPages (#7205)
- qx.ui.mobile.form.Form.showRow hides the row (#7210)
- Unexpected behaviour in the qx.ui.mobile.container.Carousel (#7065)
- Zoom gesture on an Android mobile platform don't work (#7115)
- Update styling of qx.Mobile radio buttons and check boxes (#7494)
- Added MS prefix to qx.Mobile SASS gradient mixins
- Improved responsiveness of checkboxes and radio buttons (#6993)
- Use Android ICS Input Field Fix (#7361)
- Use double-sized resolution images for Retina Display (#7058)
- Use overflow:scroll / -webkit-overflow-scrolling: touch; in iOS5 instead of iScroll (edit) (#5313)
- Form Renderer access to labels and rows (#7426)
- New: shownPage as property of carousel (#7397)
- Modified qx.Mobile's widget _removeAll method for returning removed children
- qx.Mobile ScrollComposite should have a scroll lock for vertical and horizontal direction (#7144)
- qx.Mobile Page has a "wait" lifecycle state (#7262)
- Added the platform type as a CSS class into Mobile's root div, for being able to react on platform specific CSS bugs
- Added "watch-scss" job to qx.Mobile Showcase
- qx.ui.mobile.form.SelectBox: Added getSelectionDialog method
- Enhance MScroll options (#6384)
- Added a "inAnimation" state for preventing double execution of any animation
- Added CSS class flag for detecting the portrait or landscape mode on root's widget
- Add SCSS Support to the Toolchain (#6859)
- Merge qx.Mobile Dialog with qx.Mobile Popup (#7069)
- Migrated theming from LESS to SCSS/SASS (#7047)
- Provide a way to create application-specific themes in qx.Mobile (#7039)
- Carousel's scrollLoop does not work on swipe (#7018)
- A longtap event has been added (#6964)
- Added a changeCurrentIndex event to the carousel (#7022)
- Applications
- Playground:
- Updated ace to version 1.1.01 (#6867)
- Added a link to jsFiddle (#7040)
- Added possibility to resize the mobile playground vie predefined settings (#7428)
- API Viewer:
- Display mixin items included from other mixins. (#7468)
- Fixed hyperlinks which give HTTP 301, 404 or links to missing manual pages within js source files (#6988)
- Test Runner:
- Updated Sinon.JS to version 1.7.1 (#7184)
- Skeletons:
- New watch job auto-builds your application when source files change.
- New watch-scss job for mobile applications, to auto-build CSS files from SCSS files when they change.
- New source-server job to start a mini webserver to export the source version of an app.
- New source-httpd-config to generate configuration snippets for popular web servers, to export the source version of an app.
- New source-server-reload job to automatically reload an application in the browser when it has changed.
- New validate-config job to validate an application's config.json.
- New validate-manifest job to validate an application's Manifest.json.
- New build-module-all job to build separate qx.Website modules.
- New build-module-all-min job to build separate qx.Website modules (minified).
- Tooling
- New dependencies job to speed up cold-cache compilation of applications using the current library.
- Start a mini webserver to export the SDK's index.html (for better demo and API consumption).
- Check for undocumented class properties. (#7472)
- Warnings for incomplete API documentation can now be displayed on the shell, in the API Viewer, or both. (#5939)
- The 'api' job can now optionally calculate the percentage of undocumented API items for each package. (#7019)
- Generation:
- Compiler hints: `#` compiler hints are deprecated; use `@` hints in JSDoc comments instead.
- Compiler hints: `@lint ignoreUndefined` is deprecated; use `@ignore` instead.
- Reduced icon images (physically & registered) in build (#7045)
- Added support for CSS at-rules (e.g. @keyframes, @-moz-document and @media etc.) in patched pyScss version (#7064)
- Configuration:
- Changed exclude configuration key semantics: A leading `=` in front of an excluded class will now remove also all classes required by this class from the build.
- Add new configuration key lint-check/ignore-shadowing-locals.
- Added Manifest.json validation via JSON Schema (#6674)
- Added config.json validation via JSON Schema (#5426)
- Internationalization;
- Updated CLDR data to v.23.1
- Code Validation:
- New lint check: Local variables that shadow global library symbols (such as qx) will now be warned about (control with lint-check/ignore-shadowing-locals).
- Code validation during compile runs can now be toggled with compile-options/code/lint-check or the COMPILE_WITH_LINT macro.
- Code Formatting;
- Fix of various pretty-printing issues (switch-case formatting, statement parsing, trailing comments, 'keep-column', 'comment-cols', 'padding' options)
- API Changes:
- The method setTextColor in the class qx.ui.embed.HtmlArea has been renamed to setTextForegroundColor. The method still exists but is inherited from the widget API. So ode won't break but does not work as expected anymore if not updated.
- Renamed the 'event.pointer' environment key to 'css.pointerevents' (#7483)
- qx.ui.mobile.container.Carousel: Renamed setShowTransition to setTransitionDuration
- The change event of the data array features two new properties: added and removed each holding an array of items. The items property is therefore deprecated. (#6207)
New in qooxdoo 1.2 (Aug 4, 2010)
- The entire manual is now in SVN, using reStructuredText as markup. It is delivered with the SDK as HTML and also as a PDF document for offline reading (about 400 pages).
- A new virtual List was added, which can handle really large numbers of items. It takes full advantage of qooxdoo’s data binding layer, so another demo shows how you can create an extended list with custom renderers. The virtual List is marked as experimental, and we look forward to include user feedback as we continue with the development of additional virtual widgets.
- As another preview we added a Selenium window to the cross-browser Inspector to aid in developing automated GUI tests for qooxdoo applications.
- The API Viewer now allows you to open distinct tabs for any class or package description. Just press “shift” or “ctrl” when mouse-clicking on a reference.
- Many handy features made it into the release to support your work as app developers, e.g. generating API doc files for dedicated classes by a single command, including child control info with the API reference, several optimizations in the toolchain, more configuration options for the generator, experimental Jython support, real-time logging in the Playground, and so on.
- More than 200 bugfixes and enhancements over the previous release.
New in qooxdoo 1.1 (Apr 30, 2010)
- Application parts can now be downloaded in parallel instead of consecutively in the running application. By leveraging parts the minimum size of a qooxdoo application is down to about 6kB gzipped (from about 30kb gzipped).
- Application shutdown and disposal has been improved (~30% speedup on shutdown).
- Support for CSS3 decorators (40% - 50% speedup on supported browsers).
- Support for HTML5 functionality where available.
- Support for ECMAScript 5 functionality where available.
- Improved class system (~60% speedup when creating instances).
- Re-implementation of the base call optimizer.
- Improved object registry (~33% speedup when registering objects).
- Speed ups of the build system.
New in qooxdoo 1.0.1 (Jan 28, 2010)
- Highlights
- Fixed an issue in Firefox 3.6, which was released last week (01/21/2010). The native scrollbar widgets did no longer react on clicks on the scrollbar buttons. This is a known regression in Firefox 3.6, but fortunately we could find a workaround for this issue.Fixed a critical issue that prevented IE to run properly under SSL. See Bug #3305 for details. It is strongly recommended to update to this release, if your application is deployed via https.Hiding elements, which use the AlphaImageLoader, can occasionally cause IE to completely black out the screen. We now use a technique described here to fix it.
- Framework
- Low-level
- qx.bom.Window now parses the Boolean values correctly. See Bug #3285 for details. Thanks to Evgeny for the detailed bug report and the provided fix!Explicitly added the class qx.event.handler.Application to config of the BOM skeleton. This could have been a random problem of the previous release, so to be sure, please adjust the config file of your BOM application accordingly. For details have a look at bug report.
- GUI Toolkit
- UI Core
- Scaled image sometimes were not visible. Bug #3273Added a deprecation warning in case the selection of a disabled widget is manipulated.Fixed the corrupt “no drag” cursor bug #3367.
- Data Binding
- Minor improvements of the form controller.
- Widgets
- Fixed sorting issues in the Table widget.General fixes of the evens of input fields: the former value is available now in each event; the same set of normalized events is now fired in all browsers.The selection of the SelectBox widget can now also be reset for empty selections.bug #3272.
- HtmlArea
- Fixed bug in the advanced paragraph-handling for all Gecko browsers. Bug #3346Inserting a link on a collapsed selection now also works in Opera. Bug #3347Inserting a background image now additionally supports integer values for top and left positions. Bug #3307A number of minor fixes and refactorings (e.g. removal of useless function bindings)
- Applications
- Demobrowser
- Improved the search for demos: You can now also search for name of classes used in a demo.Demobrowser’s internal data has been bumped to be valid JSON and the file be renamed to demodata.json.
- Playground
- Major code refactorings led to a maintainable and extensible code base.Improved the memory management of the application.Completed the application’s API doc coverage.Added URL shortening support via bit.ly.Introduced Gist support, which allows for integrating externally hosted code samplesSome settings are now stored locally in a cookie, thus are kept at reload
- Portal
- Major refactoring completed. See Bug #1485 for details.Horizontal resizing of the boxes now also works in Webkit browsers. Bug #2520
- Test Runner
- Added automatic sorting of the tests, which reduces the number of unexpected test failures and allows them to be reproduced.
- Tooling
- Generation
- Generation of build variants has been heavily optimized, resulting in significant time and space savings for initial build runs (ie. with empty cache).
- Configuration
- #2619, #2448 New experimental user preferences support individual configs in /.qooxdoo/generator.json, which will be automatically included into each generator run started by this user.
- Code Validation
- Various built-in Ecma262 error classes (like EvalError, RangeError,...) are now recognized as such by the parser.
New in qooxdoo 0.8.1 (Jan 10, 2009)
- Framework
- Core
- Most protected members where changed to private ones, so that nobody can overwrite protected members in subclasses by mistake.
- Non-static classes have to define the “extend” key
- qx.List now works correctly in IE if running an application from the local file system
- The addListener() method now returns an id
- Introduced new qx.util.TimerManager, thanks Derrell
- Added a method to qx.core.Assert, which can check if an event would be fired.
- Application
- Life-cycle methods terminate() and close() methods are available for qx.application. The re-introduced close() method allows a user to prevent accidentially unloading the document, i.e. exiting the application.
- Fixed issue in startup of an “Inline Application” in IE.
- Browser Support
- IE8 is currently supported in IE7 compatibility mode. Full support for IE8 standard mode is expected in time with the final IE8 release.
- Chrome 1.0 is fully supported.
- Of course, the latest versions of Safari 3.2.x and Firefox 3.1 beta are also fine.
- Improved handling in client detection, particularly if an illegal user agent string is sent.
- Transport
- Additional HTTP headers inserted by qooxdoo up to version 0.7.x were removed to reduce unnecessary overhead
- Low-level
- Fixed issue in IE with creating an element and applying its styles at the same time
- Removed “ontimeout” property for IE in “qx.bom.Request” class
- Fixed ellipsis problems at low-level layer
- Fixed clipping issue in IE
- “OpenBSD” is now recognized correctly
- Added “has” method in “qx.bom.Multimedia” class
- qx.ui.root.Inline can be configured to no longer disregard the size of its root DIV node. This is perfect for often encountered setups when integrating qooxdoo widgets into traditional HTML pages.
- GUI Toolkit
- UI Core
- Parts of the child control API are now no longer protected but public. Particularly getChildControl() is meant for widget authors, who want to access child controls, which are created by the widget itself. This method exposes widget internals and modifying the returned sub widget may bring the widget into an inconsistent state. Accessing child controls defined in a super class or in an foreign class is not supported. Do not use it if the result can be achieved using public API or qooxdoo’s theming capabilities.
- “_hasChildren” method now returns “false” instead of null if no children widgets are available
- Implemented “height for width” for layouts (it was previously only available for widgets). This feature request was brought up by contributors that required this behaviour for custom layouts.
- Add missing methods “getActiveWidget()” and “getFocusedWidget()”
- As intended it is again impossible to select text on labels in Opera and Internet Explorer.
- Changed the implementation of the action queues at startup. Now every action (like “focus”, “activate”, etc.) is queued and flushed to ensure the actions are processed in the right order
- Fixed problems with scrolling and focus if the queue hasn’t already rendered all widgets.
- Fixed FocusRoot issue with wrong tabOrder
- Fixed rendering problems in IE6: A widget couldn’t become smaller than the currently applied font size.
- In IE6 some icons showed a black background (image transparency broken).
- Drag selection within the tree widget is now working again
- General fix for drag selections - drag selection didn’t work if an already selected item was used
- Added support for drag and drop inside window widgets
- Fixed issue with combination keys for command shortcuts (every combination key was shown)
- Command shortcuts which use the keys “-” and “+” are now working properly
- Horizontal lists can now be scrolled using the mouse wheel
- Fixed mousewheel support at SelectBox widgets inside Scroll container widgets
- Data binding
- Added a single-value binding as a solid basis for the upcoming data binding components. This features is still experimental. A detailed description is in the preliminary Data Binding documentation.
- The possibility of validating the properties of a qooxdoo class has been added. This is also experimental and may change.
- Widgets
- Fixed Spinner issues with deactivating/activating buttons, if the value were greater or less than the min/max value.
- The Spinner value is now correctly set in IE when pressing the enter key
- Fixed Desktop widget
- Hidden textfields are removed from the tab sequence
- A readonly textfield is not focusable any longer
- No “keypress” event in textfields for some keys in FF3
- TextArea will automatically get a scrollbar if its content implies that
- The location of an iframe can now be set in it’s construtor
- Set property allowShrinkY by default to false in Label.
- Add rich property in ToolTip for rich text tooltips.
- Add formatter property in ComboBox to allow for HTML entities in the List items.
- ColorPopup: init values changed from “black” (RGB 0, 0, 0) to “null” (no color).
- ColorSelector: Buttons now correctly show associated icons.
- Table
- Status bar can now be hidden permanently
- Removed spurious horizontal scroll bars in table
- Filtered Table Model does restore values more than once.
- Table pane no longer caches rows if maxCacheLines property is zero
- Flash
- Support for Flash has significantly been updated and extended.
- Fixed the issue that it is not possible to call the External API form Flash in IE7 and higher.
- Fixed memory leaks in IE.
- Window
- Added method to get the current mode (”minimized”, “maximized”, “normal” and “close”).
- Fixed issue with using the center() method: If the window was larger than the view, the title is moved out the view, so it wasn’t possible to close the window.
- Fixed issue with maximizing/minimizing a window if it is managed by the window manager.
- Added support for deactivating window widgets
- Windows won’t interrupt dragging when being moved too quickly
- Modal windows now work as expected in IE
- Theming
- The API of the manager classes were made consistent: a property “theme” was added to the appearance manager class. The existing “appearanceTheme” property is deprecated and will be removed in a future release
- Re-introduced the possibility of including/patching themes at runtime
- “grey” is now a named color - as an alias to the already defined color “gray”
- Implemented missing hover effects on SelectBox widgets
- Improved style of disabled buttons in Modern theme
- Fixed ugly problem with wrongly referenced image in IE6
- Fixed issue with hover effects for toggle buttons in checked state
- Fixed appearance issue with disabled and checked checkbox widget
- Fixed appearance for right aligned tab buttons
- Fixed several appearance issues of the toolbar widget
- Fixed appearance of SelectBox widget in Classic theme
- Fixed appearance of slider-knob in Classic theme
- Harmonized tree open/close symbols
- Image names in compat theme have been modified to better work with the legacy theme
- Applications
- Playground
- A new interactive application was introduced. It allows for experimenting with qooxdoo application code. Basically, the code in a (syntax-highlighting) JavaScript editor on the left can be executed as an application on the right. This works purely in the browser, also offline, without the usual, locally installed tools or any server-side components. Playground does not pretend to be an online IDE, but it certainly is a handy solution. Particularly new users can now actually “play” with qooxdoo code without being required to setup qooxdoo’s tool chain on their local computers. The Playground app is fairly new, so be aware of any existing issues. Feedback welcome.
- Skeleton
- Added empty theme to the default GUI skeleton, which is the starting point for creating a typical qooxdoo application. The custom theme extends the built-in Modern theme. This enables a user to easily add theme entries for his/her custom widgets into the theme files provided.
- Updated include list for low-level “BOM”-style applications
- Skeleton templates have been reduced to gui (default), migration and bom. The with-contrib skeleton is gone, its features are re-created in the gui skeleton as comments.
- Demobrowser
- All demos have been tested and corrected if necessary.
- Removed the remote table model demo (may be re-introduced in the future once improved hosting is available). You may also be interested in checking out the RpcExample in qooxdoo-contrib.
- Minor fix for the BOM selection and application demo
- Testrunner
- Removed testrunner output from browser’s native console
- API viewer
- Replaced the combined PNG image with a GIF image to resolve issues.
- Portal
- The application now fits nicely onto screen for a 1024×768 resolution
- Suppress the console for IE in build version.
- Tooling
- Python under Windows
- For MS Windows users it is now recommended to install the free ActivePython distribution. It comes with a nice wizard that allows for a really simple installation. The default settings of the wizard are fine, and it also takes care of adding the python interpreter to the list of known executables (via PATH environment variable). This further simplifies the installation of python compared to the previously featured “orginal” python distribution from Python.org.
- Internationalization
- Support adding comments to PO files. On the JavaScript side the “trc()” method of the locale manager now also supports translations with contextual comments.
- proper support for trn() framework method; plural keys now working
- Source code validation
- Added encoding support for Unicode in ecmalint source code validator
- The rest of the Tooling section is about the Generator:
- Jobs
- new standard job source-all includes all classes in a source build
- new includer job libraries, to take a single library key for additional libraries of the application
- job name resolution order acknowledged and job “shadowing” available as documented
- jobs of external config files can now be imported under a different name, to prevent name clashes (s. the import sub-key of include)
- overriding jobs and job features now possible with = prefix
- when merging jobs, all map keys are now deep merging, and all list keys are appending, minus duplicates
- the base configuration files (base.json, application.json, ...) now export all of their jobs; jobs are only filtered at the application-level config.json, as can be seen in the skeletons’ config.json files
- Known Issues and workarounds:
- lint job: you should remove the cache files after running the lint job that had errors
- api job: you should remove the cache files before running api job when using additional libraries/contribs
- URI handling
- URI handling has been revamped; the most significant change is that the uri key of library entries is optional, but if present will take precendence when calculating URIs to resources of that library. If the uri parameter is absent, settings of the individual job (compile-source, compile-dist, ...) will be used to calculate URIs.
- Macros
- macros from a config’s global let section are now usable throught the config file, e.g. in the include section
- macros QOOXDOO_URI and APPLICATION_URI have been removed, the QOOXDOO_PATH macro is now expected to point to the root qooxdoo installation folder
- in Skelton-based apps, it now suffices to change QOOXDOO_PATH in config.json to switch to another qooxdoo installation; the generate.py script will also read it from there
- QXTHEME defaults to qx.theme.Modern
- new macro OPTIMIZE, to tweak compile-dist’s optimize parameter
- Config Keys
- compile-dist has been revamped and restructured, to provide a clearer interface [this change is incompatible with the old version of the key]
- packages has been restructured and extended, to allow more fine-grain control over package sizes
- the themes key has been renamed to asset-let, to better match its purpose
- new key log with log/classes-unused, to report unused classes of a library
- new key desc, to add a descriptive string to a job; these descriptions are printed on the command line when invoking ‘generate.py x’
- keys with minor changes: cache, library
- Packages
- merging packages is now only done for parts that should be collapsed
- size for unshared packages can now be limited
- Misc
- resource compilation has been optimized
- console logging has been split to the standard streams, STDOUT (levels “debug” and “info”) and STDERR (levels “warning”, “error” and “fatal”)
- unknown classes are now reported
- the contrib:// download cache now defaults to /downloads
- removal of the framework/tool folder and other 0.7 legacy stuff
- new experimental tool/data/test folder, for generator tests
- Documentation
- Many improvements and corrections of the 0.8 manual
- A number of additional articles, e.g. for “qx.ui.core”, “qx.ui.container” and “Layouting”
- The Tooling documentation was kept in sync with the often rapid development progress. Lots of fixes of missing or incorrect documentation were applied.
New in qooxdoo 0.8 (Aug 30, 2008)
- Core: Thanks to the input of various volunteers, the following translations were completed for both farmework and feedreader: en, de, es (Camilo), fr (Dan), it (Alessandro), sv (Henric).
- Added all missing destructors (and destructor entries) which resulted in zero additional hints reported by our internal memory leak testing set.
- Introduced many enhancements to reduce the size of maps which are dynamically reused a lot. e.g. queues, registries, etc. Previously used hash codes are now being reused. This really solves to keep memory consumption constant in IE when dealing with interim disposes, for instance when parts of the GUI are replaced with other parts (and the old parts are disposed). Thanks to Stefan for stamina, patience and ideas.
- Fixed issues in Array.min/Array.max methods.
- Updated CLDR data from unicode.org to version 1.6.1
- Improved performance of application shutdown. Switching to a new web page is faster up to a factor of three.
- Improved checks of event handling to prevent the possibility to fire events with no target information given.
- Minor fix of event useraction to not being fired when the application is already disposed.
- The HTML element (integral part of the whole GUI system) now allows to use existing elements instead of always having to create new ones. This is used by the decorator system for improved performance.
- Fixed support for Escape key in Safari.
- Added example for MessageBus and fixed implementation to be compatible to 0.8
- Core: Many theme fixes for a better compatibility to different systems and machine setups.
- Fixed a major issue, that only showed up at a few IE7. There seems to be a conflict between the opacity filter and the display of stretched PNG images when using an IMG tag. Now the AlphaImageLoader for all possible PNGs is used in IE7 as well to fix these issues. Thanks to the mailing list for the tremendous support and Maria for the great collaboration.
- Added qxType for improved DOM debugging possibilities during development (only active in debug:on variant)
- Fixed a minor typo in Canvas layout that caused issues with maximum sizes
- Major fix to scrollbar handling. Previously it could happen that the scrollbar was rendered into an invisible area. Especially when toggling the content size.
- Improved queues for appearance, widget logic and dispose to be more friendly to IE‘s memory issues (as described above).
- Fixed issues with additive selection mode in List, Tree, etc.
- The unit test interface classes have made it into the framework. They are available under qx.dev.unit. Formerly, they were available only under the testrunner namespace in the application section. There is revised documentation on using this package.
- Widgets: Added missing MenuBar class with custom appearance in Modern and Classic theme. Basically a toolbar with menu buttons, but with a look more typical for menu bars.
- Significantly improved keyboard support and cross-browser stability for interactive usage of ComboBox and DateField. The Alt+Down key combination should work much more reliably in this version.
- The DateField now works properly as a regular form element in qooxdoo. It supports all typical keyboard events now and correctly fires events for any changes made.
- Fixed issues with keyboard navigation in Table widget.
- Major improvements to ColorSelector and ColorPopup for better interaction.
- Converted ColorPopup to make use of sub controls. This was the last widget which still used manually created and managed widgets.
- Fixed interaction in SplitPane widget. There were a few oddities with wrong positioning of the splitter after releasing the mouse button.
- Themes: More polishing of qooxdoo themes, further consolidation to use more semantic identifiers. Replaced “black” decorator with “main” decorator.
- Fixed rendering of decorators in IE6, especially the small cells of the Grid decorator made issues.
- Improved default styling of tree widget in Modern theme
- Fixed tiny scrollbar issues, in that the knob of the scrollbar could get too small. The new version comes with some minimum sizes to improve usability.
- Applications: Added common header for all included qooxdoo applications
- API Viewer: Fixed a lot of API Viewer issues related to cross-linking of classes, methods and properties.
- Improved search table, for instance to fix all the odd scrolling issues
- Fixed some race-conditions in API Viewer during load of individual data files.
- Excluded qx.test and qx.legacy from framework API Viewer
- Made more use of combined images for an improved start-up time
- Feed Reader: Automatic detection of system locale was re-enabled.
- Fixed long-term issue with wrong feed URLs
- Demo Browser: Reworked design to have a consistent look among applications. Introduced flexible pane handling. SmarterSplitPane usage. Improved logging console stability
- Added examples for Separator support. Now available for Box layouts and Dock layout.
- A SplitPane demo is now part of the widget section.
- Test Runner: Open up first levels of navigation tree at start-up for better usability.
- Added tests for detecting correct destruction of widgets by means of mass creation/disposal of widgets, followed-up by checks of the internal data structures.
- Tool Chain: Command-line parameter usability and stability improved for create-application.py script.
- Improved handling for applications when paths contain spaces. Previously, there has been issues for users of the native Python package under Windows, and for developers whose project had a path with spaces. Both issues are fixed in the final release.
- Documentation: Many overview pages for the framework documentation were added. This should offer a good initial overview for new users.
- API documentation was added and completed. qooxdoo 0.8 is the first release that has almost full API coverage.
- Improved content and design of the top-level index.html of the SDK.