qooxdoo 3.5 (2013-12-10)

Summary

This release comes with exciting new features besides a large number of bugfixes.

Highlights

Please see the corresponding blog post.

Bugfixes

See the corresponding bugzilla query for the issues resolved for qooxdoo 3.5.

Core

  • Invalid routes (i.e. routes for which no listeners exist) now return the default path (7525).
  • Superseded 'JSON 2' with 'JSON 3' (7570)

Browser Support

  • Fixed detection for new WebKit-based Opera versions (7554).
  • Fixed request animation frame handling for newer Webkits including iOS7 (7691).
  • Fixed widgets getting white as soon as transform is used in Safari (7757).
  • Check for Safaris private mode in the storage detection (7718).
  • Several fixes to deal with floating point numbers as CSS property values (7904), (7864).

Transport

  • Added overrideMimeType() XHR support within qx.bom.request.Xhr (7661).
  • Fixed JSON serialization when appropriate content type. (7665).

qx.Website

  • placeTo now works within parents with position: relative (7783).
  • qx.bom.element.Dataset.get and q().getData() now always return undefined if the requested attribute does not exist (7777).
  • q.create() now accepts an optional argument: The document for which new elements should be created (7859).
  • new method q.equalNodes: Equality check DOM nodes (7832).
  • new TextSelection module (6558).
  • q().getNext() and q().getPrev() now return collections instead of plain Arrays (7609).
  • Added a new 'ui' module containing a number of lightweight widgets based on the collection paradigm (7710).
  • Improved qx.Website API Viewer with grouped list view and mobile-friendly responsive UI (7831).
  • Fixed return types for data sets (7777)
  • isChildOf method added to the traversing module (7823)
  • Added new website widgets (7710)
  • Added a text selection module
  • Added unique method to the collection (7776)
  • Added 'transform' support for IE9 within the animation layer (7788)
  • Updated mustache.js to version 0.7.3 (7449)
  • Renamed the class MediaQueryListener (7896)
  • Consolidated website modules files as ZIP-File for easier downloading (6849)

Library

  • New module utility module for working with Objects ( (7809) )
  • The placeTo of the placement module now also supports hidden element ( 7824 )
  • Added support for getting the width / height of non-displayed elements ( 7846 )
  • Getting the widths and heights of all elements in a collection is now supported ( 7848 )
  • throttle and debounce are now part of the new Function module ( 7855 and 7897 )

qx.Desktop

  • Fixed display of Image widgets using padding and combined images (7601).

UI Core

  • Fixed root Blocker for IE8-10 (7726)
  • Allow configuration of mouse buttons used for drag & drop (7828)
  • Added ability to scroll within a Drag and Drop session (7244).

Data Binding

  • Improve error message if a model class could not be found (7585)
  • Throw an error when binding to a not existing property, source or target (7698)

Form

  • Fixed icon loss of Splitbuttons when show property is set to label (6822)
  • Fixed slider rendering in the simple and indigo theme (7587)
  • Prevent closing of popups when clicking on the scrollbar buttons of selectbox and combobox (7655)

Widgets

  • Fixed ColorPopup positioning for background scrolling (5879)
  • Toolbar children sync appearance on child add / remove (7654)
  • Fixed dispose of the color popup when the color selector window has been opened
  • Relayout tab button after icon reset in qx.ui.tabview.Page (5622).
  • VirtualTree: Improved performance for open and close icon rendering (7501).

qx.Mobile

  • Fixed RegEx for os.version to detect iOS 7.0.x (7786).
  • WP8/IE10+: Touchend event is not fired when user entered another div element (7774).
  • WP8/IE10+: Pointer API does not provide multi touch detection out of the box (7891).
  • WP8/IE10+: Scrollbars are not visible (7771).
  • WP8/IE10+: Drawer does not react on taps (7773).
  • WP8/IE10+: Carousel animation was wrong (7772).
  • WP8/IE10+: Event normalization "transitionEnd" does not work (7875).
  • WP8/IE10+: Form labels are not wrapped when using FlexBox layout (7814).
  • WP8/IE10+: Menu no longer works in demo (7817).
  • IE11: MSPointerEvents are no longer available (7884).
  • iOS7: qx.bom.Viewport.getHeight(win) returns wrong value under (7785).
  • iOS7: Carousel's size is calculated wrong (7842).
  • iOS7: Scrolling does not work in Feedreader (7716).
  • iOS7: Headers are partially covered by the browser's chrome in landscape view (7717).
  • iOS7: TextField did not react when NativeScroll was used (7660).
  • iOS7: qx.Mobile Page are sized wrong on page transition (7843).
  • iOS7: Page scrolls to y:0 when using soft keyboard's next/previous buttons (7756).
  • qx.Mobile Checkbox should have a red border if validated false (7768).
  • Improved touch device detection of Carousel (7887).
  • Manage Carousel's pagination label overflow (7801).
  • Master-Detail Drawer keeps hidden when app resizes during transition (7812).
  • Review px-based mobile code and make it resolution-independent (7762).
  • SelectBox Menu's Height should be adjustable (7751).
  • Appear event of invisible page is fired on startup (7695).
  • qx.Mobile Custom theme should be adjustable to flat appearance (7608).
  • Popup can't be reused if mixing anchor and non-anchor modes (7621).
  • isOneLineWidget() makes it difficult to implement custom widget (7464).
  • Fade and Dissolve transitions look identical (7540).
  • TextArea does not allow "Return" key (7334).
  • Slider should display its value (7625).
  • TextArea is "readonly" when placing on a popup (7622).
  • Buttons did not show ellipsis when dimension is very small (7610).
  • Picker slot rendering performance should be improved (7605).
  • Carousel page transition should adapt the swipe velocity (7595).
  • Form label has no own color in custom theme (7590).
  • Centering of the Popup is wrong (7903).
  • Opened popup should ignore touch action on anchor (7913).
  • After disabling a qx.Mobile widget data entry is still possible by clicking widget label (7352).
  • Cursor jumps to the end of the text field on editing in liveupdate mode (7883).
  • Samsung Galaxy S4 did not display border-radius (7840).
  • Menu is not displaying "active" state (7868).
  • Android 4.x: Slider and RadioButtons are looking blurry (7847).
  • Firefox displays Menu too large (7822).
  • SelectBox.resetValue() throws ValidationError (7767).
  • Form button not centered (7455).
  • Menu should be able to forget previous selection (7784).
  • Modal Popup's Blocker does disappear on tap (7676).
  • UI elements disappearing (on page transition) (7282).
  • SelectBox is editable even after calling setEnabled(false) (7736).
  • qx.ui.mobile.form.renderer.Single does not hide the label of a multi-line widget (7707).

Applications

Demobrowser

  • Fixed animation.Scroll demo

Playground

  • Fixed initial size of the desktop play area.

Todo

  • Added clean and distclean jobs (7400).

API Viewer

  • Improved the website API viewer (7831)

Test Runner

  • Updated Sinon.JS to version 1.7.3 (7451).

Skeletons

  • New job dependencies allows to pre-calculate the class dependencies of the current library; useful when using libraries in larger projects.
  • Experimental Grunt support. Skeletons can now use the grunt frontend command in place of generate.py to run Generator jobs. Requires a local Node.js (which includes npm) and Grunt installation.

Tooling

  • Generator jobs can now be interrupted (with e.g. Ctrl-C) without printing a stack trace to the console.

Generation

  • Upgraded pyScss from 1.1.4 to 1.2.0 (7744).
  • Compiler throws syntax exception if illegal syntax (7043).

Configuration

  • Macros with non-string values (maps, arrays, null, …) can now be referenced in string values, where they will be .toString-included.

Code Validation

  • New JSDoc sub-key @lint ignoreJsdocKey to suppress warnings about unknown @ keys; useful when integrating foreign libraries that use different JSDoc keys. (7182)

Documentation

  • Improved the manual page about selection handling in the data binding context (6012)
  • Additional text of @see JSDoc keys now make it into the API docs.

Migration

API Changes

  • The update of mustache.js to version 0.7.3 changed the context of custom render function to the template string instead of the data.

Missing Features

  • Active support for Python 2.5 has been dropped (i.e. Python 2.6 is now the lowest supported version).

Known Issues

  • The Flash widget (i.e. qx.ui.embed.Flash) doesn't work with IE 11 (7960).
  • VirtualTree open and close icon will not be updated when initial children value is null (7806).
  • The cursor of the Editor component in the playground and tutorial app can be misplaced in safari. (7952)