--- old/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/ProgressIndicatorSkin.java 2017-11-15 15:48:42.750125000 +0530 +++ new/modules/controls/src/main/java/com/sun/javafx/scene/control/skin/ProgressIndicatorSkin.java 2017-11-15 15:48:42.433967000 +0530 @@ -193,6 +193,9 @@ registerChangeListener(control.visibleProperty(), "VISIBLE"); registerChangeListener(control.parentProperty(), "PARENT"); registerChangeListener(control.sceneProperty(), "SCENE"); + if ((control.getScene() != null) && (control.getScene().getWindow() != null)) { + registerChangeListener(control.getScene().getWindow().showingProperty(), "WINDOWSHOWING"); + } initialize(); } @@ -217,6 +220,8 @@ updateAnimation(); } else if ("SCENE".equals(p)) { updateAnimation(); + } else if ("WINDOWSHOWING".equals(p)) { + updateAnimation(); } } @@ -293,7 +298,9 @@ ProgressIndicator control = getSkinnable(); final boolean isTreeVisible = control.isVisible() && control.getParent() != null && - control.getScene() != null; + control.getScene() != null && + control.getScene().getWindow() != null && + control.getScene().getWindow().isShowing(); if (indeterminateTransition != null) { pauseTimeline(! isTreeVisible); } else if (isTreeVisible) {