The week in qooxdoo (2008-06-20)
Filed under: Activity Reports
By Andreas Ecker @ June 20, 2008 6:00 pm
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.

Comment by Siarhei Barysiuk
Hello,
Thank you very much for your hospitality. It was really fun for me to meet you as well as it was very useful. You are very interesting and open people. Now I know why qooxdoo is so great.
Can’t wait to add all stuff what we discussed in QxTransformer.
Andreas, Fabian, Thomas, Sebastian and Alex, thank you!
With best wishes from Minsk,
Siarhei
June 21, 2008 10:22 am