Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8093217

[Glass, Mac] While a stage is in fullscreen mode you cannot open another stage on top of the fullscreen stage

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: P3
    • Resolution: Fixed
    • Affects Version/s: 8u11
    • Fix Version/s: 8u40
    • Component/s: javafx
    • Environment:

      Mac OS X 10.9.4

      Description

      Creating a Stage and displaying it in fullscreen ( stage.setFullScreen(true) ) then attempting to display another stage as a modal will not show the modal stage even though true is returned when testing against stage.isFocused(), it does not appear on top of the fullscreen stage. This works perfectly fine under Windows 8.1.

      Example code of the issue occuring on Mac:

      import javafx.application.Application;
      import javafx.geometry.Rectangle2D;
      import javafx.scene.Node;
      import javafx.scene.Scene;
      import javafx.scene.input.KeyCode;
      import javafx.scene.layout.Pane;
      import javafx.stage.Modality;
      import javafx.stage.Screen;
      import javafx.stage.Stage;
      import javafx.stage.StageStyle;
      import javafx.stage.Window;
      import javafx.scene.control.*;

      public class Full extends Application
      {
          private void showPopUp(Window parent)
          {
              System.out.println("showPopUp...");
              Stage stage = new Stage();
              stage.setTitle("PopUp");
              stage.initModality(Modality.WINDOW_MODAL);
              stage.initOwner(parent);

              Pane root = new Pane();
              Scene scene = new Scene(root, 180, 200);
              stage.setScene(scene);
              stage.initStyle(StageStyle.UTILITY);
              stage.show();

              if (stage.isFocused())
              {
                  System.out.println("Stage: Focused");
              }
              else
              {
                  System.out.println("Stage: Not Focused");
              }
              stage.centerOnScreen();
              stage.toFront();
              //System.out.println("Stage x/y: " + stage.getX() + "/" + stage.getY());
              //stage.toFront();
              //stage.requestFocus();
              //stage.
          }
          
          @Override
          public void start(Stage primaryStage) throws Exception
          {
              Pane root = new Pane();
              Scene scene = new Scene(root, 640, 480);
              
              Button button = new Button("PopUp Test");
              button.setOnAction(event ->
              {
                  Node node = (Node)event.getSource();
                  showPopUp(node.getScene().getWindow());
              });
              
              root.setOnKeyPressed(event ->
              {
                  if (event.getCode() == KeyCode.ESCAPE)
                  {
                      primaryStage.close();
                  }
              });
              
              root.getChildren().add(button);
              
              Screen screen = Screen.getPrimary();
              Rectangle2D rec = screen.getVisualBounds();
              primaryStage.initStyle(StageStyle.UNDECORATED);
              primaryStage.setWidth(rec.getMaxX()/2);
              primaryStage.setHeight(rec.getMaxY()/2);
              
              primaryStage.setFullScreen(true);
              primaryStage.setScene(scene);
              primaryStage.show();
              //primaryStage.requestFocus();
              
              
              Window win = scene.getWindow();
              double fsWidth = win.getWidth();
              double fsHeight = win.getHeight();
              
              button.setPrefSize(fsWidth/8, fsHeight/16);
              button.setLayoutX(100);// - button.getPrefWidth()/2);
              button.setLayoutY(100);
          }

          public static void main(String[] args)
          {
              launch(args);
          }
      }





        Attachments

          Issue Links

            Activity

              People

              Assignee:
              anthony Anthony Petrov (Inactive)
              Reporter:
              duke J. Duke (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved:
                Imported: