--- old/modules/graphics/src/main/java/com/sun/javafx/scene/SubSceneHelper.java 2016-06-03 11:04:15.625423458 -0700 +++ new/modules/graphics/src/main/java/com/sun/javafx/scene/SubSceneHelper.java 2016-06-03 11:04:15.485423459 -0700 @@ -25,6 +25,12 @@ package com.sun.javafx.scene; +import com.sun.javafx.geom.BaseBounds; +import com.sun.javafx.geom.PickRay; +import com.sun.javafx.geom.transform.BaseTransform; +import com.sun.javafx.jmx.MXNodeAlgorithm; +import com.sun.javafx.jmx.MXNodeAlgorithmContext; +import com.sun.javafx.scene.input.PickResultChooser; import com.sun.javafx.sg.prism.NGNode; import com.sun.javafx.util.Utils; import javafx.scene.Camera; @@ -52,6 +58,10 @@ setHelper(subScene, getInstance()); } + public static void superProcessCSS(Node node) { + ((SubSceneHelper) getHelper(node)).superProcessCSSImpl(node); + } + @Override protected NGNode createPeerImpl(Node node) { return subSceneAccessor.doCreatePeer(node); @@ -63,6 +73,36 @@ subSceneAccessor.doUpdatePeer(node); } + @Override + protected BaseBounds computeGeomBoundsImpl(Node node, BaseBounds bounds, + BaseTransform tx) { + return subSceneAccessor.doComputeGeomBounds(node, bounds, tx); + } + + @Override + protected boolean computeContainsImpl(Node node, double localX, double localY) { + return subSceneAccessor.doComputeContains(node, localX, localY); + } + + void superProcessCSSImpl(Node node) { + super.processCSSImpl(node); + } + + protected void processCSSImpl(Node node) { + subSceneAccessor.doProcessCSS(node); + } + + @Override + protected Object processMXNodeImpl(Node node, MXNodeAlgorithm alg, MXNodeAlgorithmContext ctx) { + return subSceneAccessor.doProcessMXNode(node, alg, ctx); + } + + @Override + protected void pickNodeLocalImpl(Node node, PickRay localPickRay, + PickResultChooser result) { + subSceneAccessor.doPickNodeLocal(node, localPickRay, result); + } + public static boolean isDepthBuffer(SubScene subScene) { return subSceneAccessor.isDepthBuffer(subScene); } @@ -82,6 +122,12 @@ public interface SubSceneAccessor { NGNode doCreatePeer(Node node); void doUpdatePeer(Node node); + BaseBounds doComputeGeomBounds(Node node, BaseBounds bounds, BaseTransform tx); + boolean doComputeContains(Node node, double localX, double localY); + void doProcessCSS(Node node); + Object doProcessMXNode(Node node, MXNodeAlgorithm alg, MXNodeAlgorithmContext ctx); + void doPickNodeLocal(Node node, PickRay localPickRay, + PickResultChooser result); boolean isDepthBuffer(SubScene subScene); Camera getEffectiveCamera(SubScene subScene); }