Version: (using KDE Devel)
Installed from: Compiled sources
:hover triggers erratic behaviour in some situations.
Try hovering the big table:
Instead of changing the rows background-color, it's the cells' (and also the links' within) that change in a weird way.
It seems to stem from r532332 (the big dynamic restyling changes).
- the erratic behaviour is apparently triggered by an :hover rule that is erroneously preceded by a space. It would be ignored in quirk mode, but page is strict.
Nevertheless, the style content of said rule doesn't seem to justify the erratic behaviour that is observed.
- when removing the problematic space, erratic behaviour goes away, but correct style still isn't applied to rows.
Created attachment 17362 [details]
Returns 500 internal server error
page is available now
This bug seems caused by inheriting non-inherited CSS properties. This is something our model doesn't currently handle.
If it worked before but not now, it's because I made restyling more fine-grained, and it only worked by accident before.
I have an experimental patch that enables dynamically inheriting non-inherited properties. I will try it with this test case.
Created attachment 17932 [details]
Dynamically update inherited "non-inherited" properties
This patch fixes the webpage :)
> dynamically inheriting non-inherited properties.
Could you explain that paradox in some more details?
The patch works absolutely fine but for the life of me, I can't make any sense out of what it does :)
Okay okay. I just like writing it that way because it sounds so non-sensitical ;)
The point is CSS has inherited and non-inherited properties. When we restyle an element and a inherited attribute change we restyle all the children. (NodeImpl::diff and ElementImpl:recalcStyle)
Now non-inherited properties can be set to value "inherit". In this test-case the background-color is inherited. When the parent element change background-color we don't restyle the children because no inherited property was changed.
This patch catches all cases value "inherit" on non-inherited properties and sets a flag so we restyle the element when a non-inherited property change in the parent.
ahh alright, that's all clear now. Maybe the method would need be even more verbose for the casual reader to understand?
e.g setInheritedNoninherited => setExplicitelyInheritingNoninherited
or something similar... oh well.
allan: do you still have this patch in mind?
SVN commit 625864 by carewolf:
Handle dynamic inheritance when inherit value is used explictly on
default non-inherited properties.
M +12 -1 ChangeLog
M +82 -47 css/cssstyleselector.cpp
M +6 -2 rendering/render_style.h
M +4 -3 xml/dom_elementimpl.cpp
M +8 -0 xml/dom_nodeimpl.cpp
M +2 -0 xml/dom_nodeimpl.h
M +2 -1 xml/dom_textimpl.h