Need an official way to exclude parts of the SceneGraph from CSS-Processing

Tom Schindl tom.schindl at
Tue Jan 24 08:16:15 UTC 2017


Well in your sample one has the CSS-Performance hit on each Tab-Switch
for a customer I had implemented a custom TabPane who initially detached
the SG-Part once a Tab was not selected but because the sub-structures
in each Tab had been extremly complex the Tab-Switch lagged so much
finally came to the conclusion that we have to keep the SG elements.


On 21.01.17 19:17, Michael Paus wrote:
> Hi Tom,
> I am wondering whether it is really necessary to provide special API
> for this case or whether this is not just an implementation issue of
> controls like the TabPane.
> For performance reasons (not only CSS-processing) I normally track
> selection changes in TabPanes and similar controls and then explicitly
> remove all invisible branches from the scene graph and keep them
> elsewhere so that I can re-attach them if needed.
> But I also do this tracking for a second reason because I also want
> to tell my model which tab is visible so that I can shut down all
> processing in my model which only updates properties which are
> only used in the currently invisible branches of the scene graph.
> I think if currently invisible branches of the scene graph are explicitly
> detached from it, this does also solve your original problem of
> reparenting, doesn't it? It would however be nice if the TabPane would
> do the detaching/attaching itself.
> Michael
> Am 20.01.17 um 11:43 schrieb Tom Schindl:
>> Hi,
>> One of the biggest problems when working with JavaFX is that if you
>> reparent a big portion of the SceneGraph is that a full CSS-Pass is
>> applied on all reparented SG-Nodes even if those nodes are currently not
>> visible (eg. because they are part of a TabPane).
>> I general I think it is ok to also applyCSS changes on currently not
>> visible nodes (eg they still have an influence on layout-bounds) but
>> there are situations like the above mentioned example of TabPane that it
>> is unnecessary overhead to apply applyCSS changes on those parts of the
>> SG until they get visible.
>> I would not mind if the CSS-Pass on JavaFX would be as performant as the
>> one from current browsers but unfortunately it isn't so I'd like to
>> discuss the possibility of a API to *temporarily* exclude portions of
>> the SG from CSS-Passes.
>> In JavaFX8 i was able to hack that in by overwriting impl_processCSS in
>> a subclass who changed to doProcessCSS who now is private so my hack
>> does not work anymore.
>> To give you an impression on what performance gains we are talking about
>> just look at the video I recorded -
>> Tom

Thomas Schindl, CTO EDV Systemhaus GmbH
Eduard-Bodem-Gasse 5-7, A-6020 Innsbruck
Reg. Nr. FN 222302s am Firmenbuchgericht Innsbruck

More information about the openjfx-dev mailing list