Welcome to a new weekly status report.

Siarhei visiting

This week we had Siarhei visiting the qooxdoo framework team at 1&1 in Karlsruhe. Before, we knew each another just from the mailing list and individual emails, so it was a great experience to meet in person. We had a lot of fun hanging out together, watching games of the Euro 2008 Soccer Championship. Of course, we also talked a lot about qooxdoo, QxTransformer and a lot of interesting technical stuff, be it related to qooxdoo or more general. Siarhei (pronounced like "Sergey" as we learned) is from Minsk/Belarus and was on a business trip at a local customer. If you also happen to be in Germany and possibly close to Karlsruhe, let us know, we'd be happy to invite you over to meet the team.

Generator

Generation of different files according to chosen variants were added, and a new section on packages has been added to the config manual. The generator.py command line was simplified through making the -c switch optional and defaulting to config.json, and removing the -j switch and making the job list into an argument. Please adapt your build invocations.

String Optimizer

The string optimizer in 0.8 now creates a closure around each class and defines scoped variables. In earlier version an global array (for all classes) was used which helps to reduce the cost of strings in IE dramatically, but still means that you have an additional lookup to an array index. The inspiration came from GWT. They seem to optimize strings in the same way. And from now on qooxdoo can do the same for every qooxdoo 0.8 application.

Fun with IE stack size exceeded

We ran into an issue this week while working with list widgets where IE would bomb with a stack-size-exceeded message. Since it is not trivial to find the code that might cause this stack overflow, we used qooxdoo's AOP features to track down the issue. To that end a Tracer class was defined that would record stack depth and store the highest reached stack depth and the corresponding stack. (For your own aspect classes you can find a template here).

Finally it was related to some redirection of the focus in the original focus event. The implementation for IE used a native method to make elements active, this was one cause of the issue. Finally I also cleaned up a lot of the existing code. It is somewhat complex stuff. The focus handling has nearly completely different implementation for each supported browser. It looks quite good now. The support for Opera and Safari was improved as well and seems to be quite solid now as well. You might want to have a look yourself into the various examples.

Scrolling TabView

This is somewhat like a quite old issue. If a TabView in 0.8 has too many tabs to show them together you automatically get two scroll buttons to slide the tabs to the desired side. This is never a good choice from the usability point of view, but still a good default behavior for any toolkit.

Legacy_0_7_x

Fixing memory leaks in various widgets - thanks for the submissions.

C U next week. :-)