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

Mac: DirectoryChooser not modal anymore


    • Type: Bug
    • Status: Closed
    • Priority: P4
    • Resolution: Duplicate
    • Affects Version/s: 7u40
    • Fix Version/s: None
    • Component/s: javafx
    • Environment:

      OS X 10.8.4 (12E55), JavaFX 2.2.40-b43


      According to http://docs.oracle.com/javafx/2/api/javafx/stage/DirectoryChooser.html#showDialog%28javafx.stage.Window%29 we expect the following behaviour:

      "If the owner window for the directory selection dialog is set, input to all windows in the dialog's owner chain is blocked while the dialog is being shown."

      This works on Linux and Windows but at least not (anymore?) on Mac OS X 10.8.4 using JavaFX 2.2.40. The system dialog the DirectoryChooser creates is not modal anymore.

      Here is a SSCCE to reproduce this issue:

      import javafx.application.Application;
      import javafx.event.EventHandler;
      import javafx.geometry.Insets;
      import javafx.scene.Scene;
      import javafx.scene.control.Label;
      import javafx.scene.control.TextField;
      import javafx.scene.input.MouseEvent;
      import javafx.scene.layout.VBox;
      import javafx.stage.DirectoryChooser;
      import javafx.stage.Stage;

      import java.io.File;

      public class DirectoryChooserNotModalMain extends Application {
          public static void main(String[] args) {

          public void start(final Stage stage) throws Exception {

              final Label label = new Label("- Click into the textfield.\n- Move the new DirectoryChooserDialog to the side.\n- Click the textfield again!");
              final TextField field = new TextField("click me ... ");
              field.setOnMouseClicked(new EventHandler<MouseEvent>() {
                  public void handle(final MouseEvent actionEvent) {
                      DirectoryChooser directoryChooser = new DirectoryChooser();
                      directoryChooser.setTitle("This Dialog is not modal on Mac OS X");
                      File directory = directoryChooser.showDialog(field.getScene().getWindow());
                      if (directory != null) {
              VBox root = new VBox();
              root.setPadding(new Insets(10));
              root.getChildren().addAll(label, field);

              Scene scene = new Scene(root);


          Issue Links



              • Assignee:
                pchelko Petr Pchelko (Inactive)
                jhohmuthjfx Jens Hohmuth (Inactive)
              • Votes:
                0 Vote for this issue
                3 Start watching this issue


                • Created: