849
850 if (Toolkit.getToolkit().getSystemMenu().isSupported()) {
851 final Scene scene = getSkinnable().getScene();
852 if (scene != null) {
853 // RT-36554 - make sure system menu is updated when this MenuBar's scene changes.
854 if (sceneChangeListener == null) {
855 sceneChangeListener = (observable, oldValue, newValue) -> {
856
857 if (oldValue != null) {
858 if (oldValue.getWindow() instanceof Stage) {
859 final Stage stage = (Stage) oldValue.getWindow();
860 final MenuBarSkin curMBSkin = getMenuBarSkin(stage);
861 if (curMBSkin == MenuBarSkin.this) {
862 curMBSkin.wrappedMenus = null;
863 systemMenuMap.remove(stage);
864 if (currentMenuBarStage == stage) {
865 currentMenuBarStage = null;
866 setSystemMenu(stage);
867 }
868 } else {
869 if (curMBSkin != null && curMBSkin.getSkinnable() != null &&
870 curMBSkin.getSkinnable().isUseSystemMenuBar()) {
871 curMBSkin.getSkinnable().setUseSystemMenuBar(false);
872 }
873 }
874 }
875 }
876
877 if (newValue != null) {
878 if (getSkinnable().isUseSystemMenuBar() && !menusContainCustomMenuItem()) {
879 if (newValue.getWindow() instanceof Stage) {
880 final Stage stage = (Stage) newValue.getWindow();
881 if (systemMenuMap == null) {
882 initSystemMenuBar();
883 }
884 wrappedMenus = new ArrayList<>();
885 systemMenuMap.put(stage, new WeakReference<>(this));
886 for (Menu menu : getSkinnable().getMenus()) {
887 wrappedMenus.add(GlobalMenuAdapter.adapt(menu));
888 }
889 currentMenuBarStage = null;
|
849
850 if (Toolkit.getToolkit().getSystemMenu().isSupported()) {
851 final Scene scene = getSkinnable().getScene();
852 if (scene != null) {
853 // RT-36554 - make sure system menu is updated when this MenuBar's scene changes.
854 if (sceneChangeListener == null) {
855 sceneChangeListener = (observable, oldValue, newValue) -> {
856
857 if (oldValue != null) {
858 if (oldValue.getWindow() instanceof Stage) {
859 final Stage stage = (Stage) oldValue.getWindow();
860 final MenuBarSkin curMBSkin = getMenuBarSkin(stage);
861 if (curMBSkin == MenuBarSkin.this) {
862 curMBSkin.wrappedMenus = null;
863 systemMenuMap.remove(stage);
864 if (currentMenuBarStage == stage) {
865 currentMenuBarStage = null;
866 setSystemMenu(stage);
867 }
868 } else {
869 if (getSkinnable().isUseSystemMenuBar() &&
870 curMBSkin != null && curMBSkin.getSkinnable() != null &&
871 curMBSkin.getSkinnable().isUseSystemMenuBar()) {
872 curMBSkin.getSkinnable().setUseSystemMenuBar(false);
873 }
874 }
875 }
876 }
877
878 if (newValue != null) {
879 if (getSkinnable().isUseSystemMenuBar() && !menusContainCustomMenuItem()) {
880 if (newValue.getWindow() instanceof Stage) {
881 final Stage stage = (Stage) newValue.getWindow();
882 if (systemMenuMap == null) {
883 initSystemMenuBar();
884 }
885 wrappedMenus = new ArrayList<>();
886 systemMenuMap.put(stage, new WeakReference<>(this));
887 for (Menu menu : getSkinnable().getMenus()) {
888 wrappedMenus.add(GlobalMenuAdapter.adapt(menu));
889 }
890 currentMenuBarStage = null;
|