Two more XBL2 Comments

Hi XBL2 geeks!

Here are a couple of more comments on the XBL2 spec.

First thing is fairly simple:
The interaction between :root and orphaned nodes is undefined. This 
should arguably be fixed in the selectors spec, but XBL is the first 
case where matching can be done on orphaned nodes.

The second things is bigger though:
It is undefined if -xbl-binding bindings are applied if the element or 
one of its ancestors is display:none. From an implementation point of 
view it is really desirable that such bindings are not applied since at 
least gecko does not normally do style resolution on such nodes. We in 
fact don't resolve style on even the nodes itself other than to get the 
display value.

We also need to decide is if we should not apply -xbl-binding bindings 
when the element itself is display:none, or only when a parent is 
display:none. From an implementation point of view it probably works 
fine either way, however it feels more consistent and logical from a 
user point of view if this applies when the node itself is display:none, 
that way we never apply -xbl-binding bindings whenever an element isn't 
displayed, be it due to an ancestor or not.


A followup issue to this is if such -xbl-binding bindings are not 
applied sometimes, it may appear erratic to the author that properties 
are missing, potentially due to user stylesheets hiding part of the 
page. This is actually partially a problem already since such bindings 
won't be applied until the page is restyled.

We could deal with this several ways
A)
We could accept this and discourage authors to put API in -xbl-binding 
bindings.

B)
We could ignore the <implementation> in such bindings. However this may 
be a problem since it's likely that <handlers> would still be useful for 
the author to do hover effects and the like, but such handlers wouldn't 
have an <implementation> to interact with which would severely limit them.

C)
We could stop forwarding properties to <implementation>s of such 
bindings and hide the implementation objects from the 
.xblImplementations list.

I think C is preferable. But if we do that we should change the implicit 
inheritance order such that CSS bindings are last in the chain (section 
3.7.2). I think this is something that would be a good idea anyway since 
it seems like CSS bindings are more likely to be attached and detached 
often than DOM bindings.


Best Regards,
Jonas Sicking

Received on Tuesday, 27 March 2007 17:00:51 UTC