Debugging CSS

Scott Palmer swpalmer at gmail.com
Fri Apr 3 20:39:15 UTC 2015


How exactly can you use pseudo-class state for this sort of change?

I have a similar requirement in my own app.  It always did feel a little
'heavy' when I added and removed style-classes, but it still seemed like
the best way to trigger visual changes on my nodes.
Though I guess one benefit is that by frequently changing the style-classes
in a node I discovered leaks in ProgressBar that were subsquently exposed
(RT-40384).

Scott


On Fri, Apr 3, 2015 at 4:19 PM, David Grieve <david.grieve at oracle.com>
wrote:

> When you add or remove style-classes, CSS for the node (and all its
> children) is totally re-calculated. This means that cached data for that
> node is tossed out and the node is styled from scratch, as if it were just
> added to the scene-graph.
>
> You are much better off using pseudo-class state for what you are trying
> to do. Changes in pseudo-class state just causes evaluation of what styles
> are applied in that state, which is relatively low overhead compared to
> re-calculating styles.
>
> To debug, you should try using Scenic View (http://fxexperience.com/
> scenic-view/)
>
> You can also use the Node API Map<StyleableProperty<?>,List<Style>>
> impl_findStyles(Map<StyleableProperty<?>,List<Style>> styleMap). Note
> that this is deprecated API
>
>
> On 4/3/15 2:13 PM, Tom Eugelink wrote:
>
>> One addition: the move happens if, for example, "segment0-active" is
>> added to the skinnable. Even if that class is empty or even not defined in
>> the CSS.
>>
>> Tom
>>
>> On 3-4-2015 19:48, Tom Eugelink wrote:
>>
>>> I'm pushing the envelope a bit -I think- concerning the use of CSS. I
>>> have setup a control (gauge) in such a way that, depending on the position
>>> of the needle, certain CSS classes are added or removed from the control.
>>> For example a "errorSegment-active" class if the value comes into the
>>> 90-100 value in a 0-100 gauge. In this class a CSS variable
>>> -fx-error-indicator-visibility is set to "visible" and that again shows
>>> some kind of indicator on the gauge. Works great.
>>>
>>> What is strange is when this class is assigned to the control, a totally
>>> unrelated node (the value in the needle) suddenly moves out of position. I
>>> do not understand this, because the CSS only involves colors and
>>> visibility, never any transformation.
>>> https://github.com/JFXtras/jfxtras-labs/blob/8.0/src/
>>> main/resources/jfxtras/labs/internal/scene/control/gauge/
>>> linear/SimpleMetroArcGauge.css
>>>
>>> Is there any way to debug what CSS settings are applied to nodes? I
>>> really would like to find out what causes that node to move.
>>>
>>> Tom
>>>
>>
>>
>


More information about the openjfx-dev mailing list