From ea525ba90149c943d920c440376f22910395654e Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Wed, 15 Jun 2016 22:04:28 +0200 Subject: [PATCH] Add null check --- .../bitsquare/gui/main/overlays/Overlay.java | 62 ++++++++++--------- 1 file changed, 32 insertions(+), 30 deletions(-) diff --git a/gui/src/main/java/io/bitsquare/gui/main/overlays/Overlay.java b/gui/src/main/java/io/bitsquare/gui/main/overlays/Overlay.java index 4c8f4f0df9..6e05ef2023 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/overlays/Overlay.java +++ b/gui/src/main/java/io/bitsquare/gui/main/overlays/Overlay.java @@ -374,43 +374,45 @@ public abstract class Overlay { if (owner == null) owner = MainView.getRootContainer(); - Scene rootScene = owner.getScene(); - if (rootScene != null) { - Scene scene = new Scene(gridPane); - scene.getStylesheets().setAll(rootScene.getStylesheets()); - scene.setFill(Color.TRANSPARENT); + if (owner != null) { + Scene rootScene = owner.getScene(); + if (rootScene != null) { + Scene scene = new Scene(gridPane); + scene.getStylesheets().setAll(rootScene.getStylesheets()); + scene.setFill(Color.TRANSPARENT); - setupKeyHandler(scene); + setupKeyHandler(scene); - stage = new Stage(); - stage.setScene(scene); - Window window = rootScene.getWindow(); - setModality(); - stage.initStyle(StageStyle.TRANSPARENT); - stage.show(); + stage = new Stage(); + stage.setScene(scene); + Window window = rootScene.getWindow(); + setModality(); + stage.initStyle(StageStyle.TRANSPARENT); + stage.show(); - layout(); + layout(); - addEffectToBackground(); + addEffectToBackground(); - // On Linux the owner stage does not move the child stage as it does on Mac - // So we need to apply centerPopup. Further with fast movements the handler loses - // the latest position, with a delay it fixes that. - // Also on Mac sometimes the popups are positioned outside of the main app, so keep it for all OS - positionListener = (observable, oldValue, newValue) -> { - if (stage != null) { - layout(); - if (centerTime != null) - centerTime.stop(); + // On Linux the owner stage does not move the child stage as it does on Mac + // So we need to apply centerPopup. Further with fast movements the handler loses + // the latest position, with a delay it fixes that. + // Also on Mac sometimes the popups are positioned outside of the main app, so keep it for all OS + positionListener = (observable, oldValue, newValue) -> { + if (stage != null) { + layout(); + if (centerTime != null) + centerTime.stop(); - centerTime = UserThread.runAfter(this::layout, 3); - } - }; - window.xProperty().addListener(positionListener); - window.yProperty().addListener(positionListener); - window.widthProperty().addListener(positionListener); + centerTime = UserThread.runAfter(this::layout, 3); + } + }; + window.xProperty().addListener(positionListener); + window.yProperty().addListener(positionListener); + window.widthProperty().addListener(positionListener); - animateDisplay(); + animateDisplay(); + } } }