qooxdoo Changelog

What's new in qooxdoo 4.1

Dec 29, 2014
  • app.apiviewer.website:
  • Support deprecations (8467)
  • Use CodePen instead of jsFiddle (7984)
  • Offer possibility to add samples for event types (8488)
  • Website API viewer should show info popup if filter is returning with no results (8617)
  • Improve startup performance (8479)
  • Hint the user about the fact search is done by using the browser search (8485)
  • Enhance the filtering to include the module names (8552)
  • Link to external online playground only "works" once on iPad (7957)
  • Don't show overridden methods (8788)
  • app.mobileshowcase:
  • Migrate config.json to Gruntfile.js (8595)
  • toggle buttons have confusing names (8783)
  • app.playground:
  • Error in the playground when switching from the website tab (8523)
  • app.showcase.desktop:
  • spelling mistake in 'Languages' section (8761)
  • Dragging from "Cart" list on Drag & Drop example throws an exception (8659)
  • app.todo:
  • checkbox appears after cancelling (8762)
  • app.tutorial:
  • Ellipses in Select Tutorial button (portrait mode) (8817)
  • app.widgetbrowser.website:
  • RadioButtonGroup can't handle focus (8808)
  • Slider: Customized slider is at the wrong position after scaling (8766)
  • Rating: Modify scaling changes rating symbols (8764)
  • core:
  • Add 'range' functionality for Arrays (8448)
  • Firefox 31 complains about 'window.controllers' (8503)
  • Remove deprecations in 4.0 (7877)
  • Reduce the code size of qx.core.Environment class (8486)
  • Remove automaticaly all bindings from an object when the destructor is called (8428)
  • qx.bom.client.CssTransform.get3D duplicated function (7899)
  • qx.bom.element.Opacity reduces opacity=1 to an empty string (8679)
  • Pdf plugin detection on IE11 fails (8513)
  • qx.Validate.email must validate extensions with more than 4 characters (8555)
  • qx.Bootstrap.getClass is returning "Object" for null and undefined under IE8 (8530)
  • qx.bom.element.Style.compile returns wrong CSS string (8501)
  • qx.bom.element.Style.compile returns wrong style property name for "float" (8464)
  • CommandManager + CommandHandler to organize and suspend commands (6639)
  • core.databinding:
  • Improve marshaling to chose Array class (8381)
  • Add function to SingleValueBinding to remove all bindings related between two objects (8521)
  • Point the developer to fact what no event will be fired if a splice did not change the array. (8419)
  • Debounce write of the offline data store (8596)
  • Return bindings by getAllBindingsFromObject even if the object is the target (8517)
  • qx.data.SingleValueBinding#resolvePropertyChain throws Exception when propertyChain is just an Array Accessor (8637)
  • qx.data.Array#splice fires a changeBubble event when noting changed (8377)
  • core.dev:
  • Console log breaks if className of SVG element is type of SVGAnimatedString (8432)
  • core.event:
  • Prevent clearing of drag sessions on trackeend event, if no drag session started (8658)
  • Find alternative to 'stopPropagation' in PointerCore handler (8435)
  • addListenerOnce doesn't remove listener (8100)
  • dbltap triggered on mouse action using two different mouse buttons in rapid sequence (8755)
  • Click on qx.ui.window caption bar buttons show no reaction on IE9/Vista (8587)
  • Infinite loop in IE11 with document mode 10 (8533)
  • cellDbltap can be triggered when clicking 2 different cells closely after each other. (8735)
  • Swipe does not fire when target changes (8421)
  • Regression: preventDefault on dragstart handler does not clear the session anymore (8619)
  • wrong wheelDelta values in Firefox (8433)
  • TouchEvent is fired on wrong position (element) when displaying a pdf in an iframe in chrome (8493)
  • Horizontal scrolling broken (8791)
  • qx.event.handler.Pointer will be disposed on hybrid applications. (8551)
  • triple tap results in two dbltap events (8780)
  • Emitting an event on an item from a collection is returning a wrong target (8498)
  • core.io:
  • Fakeserver implementation needs to resolve status text for HTTP code 207 (8769)
  • core.lang:
  • Object clone doesn't work correctly (8597)
  • desktop:
  • Tap event is not handled properly in IE 10/11 on Windows 7 (8436)
  • Improve localStorage feature detection. (8592)
  • context menu not displayed if the height of the display area is smaller than the menu (8757)
  • Scrolling on drag session does not work if drag able widget is a parent of the scroll container (8287)
  • Multiple scrolling on nested scrollareas (8327)
  • qx.util.DisposeUtil.destroyContainer needs qx.ui.mobile.core.Widget (8403)
  • Dragging of elements of virtual widget stops on resize (8660)
  • Text of rich Label outside client area (7506)
  • Dragging of elements inside the table stops on rerendering (8321)
  • Menu popup wrong placement (8544)
  • Ellipsis in Safari 8 for webfonts (8786)
  • qx.ui.core.Command doesn't accept "," as shortcut for the numpad DEL key (8564)
  • desktop.core:
  • Prevent re opening of context menu on right click at the menu itself (8572)
  • 'execute' not always fired for buttons (8577)
  • IOS8: .getWidgetByElement() returns wrong object (8657)
  • Error on closing qx.ui.core.Blocker when previous active widget is not focusable (8668)
  • desktop.form:
  • SplitButton does not lose hover state on Modern theme when inside a toolbar w/ padding (7947)
  • RadioButtonGroup.removeAll removes only half of the elements in RadioGroup (8021)
  • VirtualSelectBox : preselect fails on Groups (8554)
  • Spinner SingleStep issue when clicking up/down button (8461)
  • desktop.html:
  • qx.html.Element AddListenerOnce does not remove listener (8528)
  • desktop.layout:
  • Changing the decorator doesn't add the widget to the widget queue if insets change (8422)
  • Flow layout computes wrong height when container has padding (8683)
  • desktop.list:
  • Additive selection mode not working correctly (8434)
  • desktop.table:
  • qx.ui.table.pane.Scroller#__cellEditor should be protected (8398)
  • qx.ui.table.model.Simple: when setRows is called with a smaller array than table currently has not all rows are removed (8561)
  • Error on test in Filtered table model (8500)
  • Filters excluding many rows takes too much CPU (7709)
  • Doubling of key events on table check box cell editor (8578)
  • Drag & Drop on table doesn't work (8404)
  • desktop.theming:
  • _getContent of MLinearBackgroundGradient not in use? (8478)
  • Improve theme switch on runtime (6979)
  • CSS class name collision between website widget button and UI decorator button (8502)
  • Wrong behavior while switching themes (8341)
  • desktop.virtual:
  • Prevent automatically scrolling to selected item into view at toggling the open button of virtual tree items (8173)
  • Virtual WidgetCellSpan does not mark span spacer as empty cell (8540)
  • Improve scrolling speed of virtual widgets (8368)
  • Allow item size to be 0 on qx.ui.virtual.core.Axis (8539)
  • documentation.manual:
  • Manual for switching mobile themes is not up-to-date (8444)
  • mobile:
  • qx.Mobile Scroll container should fire momentumStart/momentumEnd event (8505)
  • Optimize qx.Mobile dependencies (7620)
  • Waypoints should enable a "pull-to-refresh" feature (8535)
  • qx.Mobile List Group Header should be sticky (8504)
  • Carousel gets broken if swipe ends on target outside of scroll container (8462)
  • NavigationPage "stop" event fires too late (8425)
  • Popups don't refresh position when image is loaded (8473)
  • mobile.core:
  • Allow to explicitly turn off animation when switching mobile pages (8397)
  • Add possibility to prevent a back action (8627)
  • Rethink file structure for SCSS source files (8043)
  • On iPhone 6 Plus, the navigation bar is not visible in landscape mode when multiple taps are open (8599)
  • mobile.theming:
  • Search for an alternative for cssmin.py job (6973)
  • mobile.widget:
  • qx.ui.mobile.container.MIScroll has a memory leak (8460)
  • Prevent back action and close Drawer if visible (8629)
  • Add waypoints for scrolling (8409)
  • Prevent back action when dialog is shown (8631)
  • qx.Mobile Carousel should hide pagination when unnecessary (8423)
  • Icons stretched when positioned top / bottom (8752)
  • qx.ui.mobile.basic.Atom is leaking memory when containing both icon and label (8601)
  • TextArea in Internet Explorer ignores new line characters (8402)
  • qx.ui.mobile.container.Collapsible has memory leaks (8455)
  • Pagination labels of the carousel are not round (8779)
  • qx.ui.mobile.container.Carousel has memory leaks (8459)
  • Auto-snapping of mobile scrolling sometimes slow (8499)
  • JS error occurs when a mobile widget gets disposed before the initialization of iScroll is finished (8441)
  • qx.ui.mobile.layout.Card has memory leaks (8458)
  • Refactor qx.Mobile Picker (8487)
  • other:
  • Move contents of folder tool/admin/www into a separate repository (8515)
  • tool:
  • Clean up clean and distclean (8005)
  • tool.grunt:
  • Define a set of necessary, qooxdoo specific optimizations (8407)
  • Implement "variants" optimization (8468)
  • Add caching to the grunt toolchain (8522)
  • Prototype build (8405)
  • Extend the build prototype to the playground (8406)
  • tool.test.automation:
  • Add tests for all skeletons (8384)
  • website:
  • Drop support for IE6 and IE7 (8396)
  • Add support for box layouts (8414)
  • qx.lang.String.format does not escape native replace short hands (8633)
  • Store the 'useCapture' parameter (8584)
  • Enable qx.debug for the non minimzed version of qxWeb (8051)
  • website.bom:
  • Enhance qx.bom.Label to be able to sanitize values (8626)
  • Make qx.bom.element.Transform#__mapToCss reachable (8526)
  • XHR implementation lacks of check for valid payload data (8559)
  • Initialize matchMedia polyfill on loadtime (8691)
  • Use 3d properties for CSS transform if available (8527)
  • IE11 returns bogus values for .getBoundingClientRect() inside an iframe where an element is displayed full screen (8545)
  • Safari throws an exception when deleting an undefined data-attribute (8640)
  • Geolocation doesn't work in Chrome on Android (8787)
  • text ellipses in almost all labels (8567)
  • values returned from qx.bom.Viewport.isLandscape() and qx.bom.Viewport.isPortrait() are wrong on Android (8647)
  • website.modules:
  • qxWeb(…).removeProperty() missing (8590)
  • Support developers to check easily empty / wrong collections (8603)
  • Add 'merge' functionality for objects (8454)
  • Allow collection method overriding (8709)
  • 'once' on a collection is only triggered every 2nd time (8772)
  • .getData() is returning a wrong value on android 4 when the corresponding attribute is missing (8543)
  • Pointer handler is not being called although the listener is still present (8481)
  • website.widgets:
  • Extend the calendar widget to support range selection (8400)
  • Tabs should have an responsive behavior (8417)
  • Add cellHover and cellOut events to the table widget (8634)
  • The state set with "widget.setEnabled" is not persisted (8427)
  • Event handler of native event "play" added by .on() will not called on Safari (8244)
  • Calendar widget: deactivating disable function does not work correctly (8763)

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.5 (Dec 12, 2013)

  • 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 ( BUG 7855 and BUG 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 chldren 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.

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.