The week in qooxdoo (2010-10-08)

Enjoy another weekly wrap-up:

Mouse Cursor

Surely all of you have seen a typical qooxdoo splitpane already or use it in your own applications. The Demobrowser, Playground or Feed Reader that come with qooxdoo use this component as well. But in all those three applications, the handle to grab the splitter is quite small, so we already implemented some kind of distance detection. This allows to set an pixel offset and make the clickable area a bit wider than the splitter itself. But this distance detection triggered some massive calculations which lead to quite a slow cursor change.

We had a closer look and in the end managed to remove the whole distance detection and replace it with an implementation using a blocker, which can benefit from CSS for changing the cursor. So you should really see and feel a speedup in cursor handling, especially in old – therefore slow – browsers. Just give it a try in the online apps and compare the Demobrowser of trunk with the latest stable.

Mouse Wheel

We also spent some time on the mouse wheel handling and its intrinsic speed, which is kind of a mess in browsers. When receiving a mouse wheel event, it comes with a so-called “delta” information, which is then used in the qooxdoo scrolling. The problem here is that every browser returns a different number depending on such conditions as: acceleration enabled or not, operating system and so on. It goes as far as that even the same browser returns different numbers on two different systems, e.g. Chrome. For a long time we had a fix for that using browser detection and accounting for the version-specific factors. But over time this detection was getting bigger and bigger and grew with (almost) every new browser release. So we took some time this week and checked if its not possible to do some clever calculation which replaces all this browser sniffing code.

Finally, we ended up with a solution that seems to work for every browser / OS / mouse combination we were able to test. But as you can guess, there certainly may be a lot of other combinations out there. So we rely on your feedback on how mouse wheel scrolling feels for you using your individual setup. Just take a look at our devel apps, pick one, for example the demobrowser, and check the scrolling behavior when above the tree on the left (make sure you expanded many folders to have a large enough tree to scroll). We really like to hear back from you on that.

Text Selection

While checking for IE9 beta support we found some minor issues in our text selection implementation. The main issue was that the implementation was distributed over too many classes. Thus we refactored the implementation to keep it as maintainable as possible.

Maps

In the past a few times people asked about how to embed map solutions into a qooxdoo app. We now added a new demo, which demonstrates exactly that for Google Maps and Yahoo Maps:

Generator

When calculating class dependencies the generator so far printed a “.” to the console, to show its progress. To make this more informative, a “*” (asterisk) will now be printed for a freshly analyzed class, and the usual “.” (dot) if the dependency information could be retrieved from the cache.

Speaking of dependency analysis. This has been augmented to follow dependencies of method calls outside function definitions. An initial implementation is in place, but will be overhauled, particularly with respect to cache handling. The aim is to have a dedicated cache object for each class that holds dependency information on a per-attribute level. This allows for caching of class-local information which can easily be invalidated, and has then to be exploited in a recursive algorithm that calculates transient results for the current build run.

Bugfixes

For a complete list of tasks accomplished during the last working week, use this bugzilla query.

C U again next week!

6 thoughts on “The week in qooxdoo (2010-10-08)

  1. Scrolling feels good for me in Safari. Only issue I have there – not sure if it’s normal: scrolling do not start directly with the movement, but seem to “wait” a few milliseconds. This only happens the first time for me. Tested in Safari 5.x on OS X with Magic Mouse.

  2. The new split cursor handling is excellent. Not only the cursor changes faster, but also grabbing and dragging the split bar seems much more reliable. The new scrolling feels a bit sluggish, though, on my laptop’s touch pad (if that counts as a mouse wheel).

  3. Nice improvements. Mouse handling for the splitpane feels noticably better.

    I noticed in the demo for Google Maps, that the mouse wheel acts inversed when compared to the Google Website. Scrolling up zooms out in the demo, where it zooms in on the web. I don’t know if this is a property of the maps api or if it’s because of the qooxdoo implementation.

  4. Hi Marc,

    it seems that the demo works fine for me. When scrolling up, it zooms in, scrolling down, zooms out. I’ve tested this on Ubuntu, on both Chrome and Firefox. What browser/OS did you used?

    Thx

  5. Hi Adrian,

    I’m seeing this behaviour on Win7 with Opera 10.54. It’s working fine on Win7+IE9 and Ubuntu+Firefox. On the Google maps website it’s working normally, even with Opera.

  6. Pingback: qooxdoo » News » The week in qooxdoo (2011-03-18)

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">