MozillaZine

Tree Closes For 0.9.8

Wednesday January 16th, 2002

Mozilla.org has closed the tree to approved checkins only, starting as of 12am Wednesday, and will do so until 0.9.8 has branched. 0.9.8 will have a variety of new items including new natively drawn widgets on WindowsXP, Mac OS X, and GTK, when you are in the classic skin (We will have more on this later, including screenshots); the addressbook was rewritten, and now supports printing, a new "Get Map" button allowing you to query for a map based on a card address, and other stability fixes; Windows MAPI support; and a huge amount of performance and stability work.

Many believe this is one of the last milestones prior to 1.0, and that Mozilla.org will actually have 1.0 following 0.9.9. 0.9.8 should branch sometime next week, with a release two Mondays from now. We'll keep you updated on both the branching and the release.


#33 "Native" widgets

by sab39

Thursday January 17th, 2002 9:36 AM

You are replying to this message

Okay, let me see if I can explain this - it's really not that hard to understand.

XUL is used to describe the structure of the UI. It specifies things like "put a button here, a toolbar here, a menu here with these items in it".

CSS is layered on top of the XUL describing how to render these widgets. Usually up to now this has been done by specifying background colors, border styles etc to match the known styles of OS widgets. The new addition is a "-moz-appearance" CSS style which tells mozilla to actually *ask* the OS what the widgets should look like, rather than specifying colors and styles that *we think* they look like.

The implementation of the "ask the OS what they should look like" step is platform-specific. As you say, on GTK it appears to be done by actually creating a GTK widget and seeing what it looks like. On the Mac the appearance manager is used. On Windows XP, there is a "theme DLL" of some kind which is asked about what the rendering should look like.

XUL has never been a rendering layer; the rendering layer was a combination of CSS and Gecko (which knows how to draw CSS). This is still the case, but Gecko has now been extended to know how to ask the OS to draw a native widget where appropriate.

These are both "true native widgets" AND "xul widgets". The two have never been mutually exclusive. Anyone who said "we can't make them really native" in the past actually meant "we don't know how to". It took a brainwave from a talented engineer to figure out how to do this, and it's now being done.

The implementation stragegy, as I understand it, is actually very different on windows, since windows XP provides this "theme DLL" that is being used here. Thus on Windows we are currently *not* actually asking the OS to create a widget, but rather *just* asking it to draw something that looks like one. This is why the windows code is not trivially portable to older windows versions.

However, there is no reason in principle why the GTK strategy of actually creatingg a widget shouldn't later be implemented for older windows versions too. So far it seems like nobody is interested in using resources to do this. But that doesn't rule out it happening later.

Stuart.