unify/unify — Issue #90: 500ms delay of queue flush on touchend really needed?
Author: dominikg
Created: 2012-02-14 17:34:09+00:00
State: open

in our qooxdoo fork qx.ui.core.queue.Manager does something that may cause unexpected behaviour in applications.

usually, Manager#flush is called immediatly when a "useraction" event is received. If the event is a 'touchend' though, the flush is delayed by a timeout for 500ms, and subsequent calls to flush are ignored until the delayed flush was executed.

A comment mentions qooxdoo bug 4033 and describes that this has been done to keep touchend -> click event chain intact.
(ios devices fire a click event 300ms after touchend and dom manipulations between touchend and click could interfere).

Basically this means no layout updates for 500ms after each touchend. 500ms is an eternity on touch devices with scrollables and tappable buttons.

We should investigate if something breaks after we remove the delay (unify applications usually don't care for the 300ms late click event, instead we act on 'tap', which is fired directly from a touchend handler).

If we really need to wait for the click event because not doing so would break more than just that click event, we should add an additional click listener that executes the flush as soon as possible.

Subsequent calls to flush during that period should also not simply return without notice.