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

[macosx] JFrame + JDialog + Retina Display + External Monitor = Bad Behavior

    XMLWordPrintable

    Details

      Description

      FULL PRODUCT VERSION :
      Java 1.7.0_80 (also happens on 1.8.0_45)

      ADDITIONAL OS VERSION INFORMATION :
      Max OSX 10.10.3

      EXTRA RELEVANT SYSTEM CONFIGURATION :
      MUST BE Retina Display and an External Monitor

      A DESCRIPTION OF THE PROBLEM :
      When you have a JFrame and a JDialog (or JWindow) owned by that JFrame bad things happen with Mac OSX 10.10 with a Retina Display and External monitor.

      When the JFrame is dragged it will also move the JDialog (which seems like a bug itself) and if you get into a situation where the JFrame is dragged onto one display but the JDialog is left on the other one then the JDialog disappears.

      REGRESSION. Last worked in version 7u80

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      Create a class like this with a JFrame and an owned JDialog:

      public class TestMacWindows {
          public static void main(String[] args) {
              EventQueue.invokeLater(new Runnable() {
                  public void run() {
                      JFrame f = new JFrame("Main Frame");
                      f.setSize(300,300);
                      f.setLocation(100,100);
                      f.setVisible(true);

                      JDialog d = new JDialog(f, "Dialog");
                      d.setSize(300,300);
                      d.setLocation(500,100);
                      d.setVisible(true);
                  }
              });
          }
      }

      Run the class which setups up the JFrame with JDialog beside it. Now drag the JFrame (which will also move the JDialog) and position so the JFrame is on one monitor but the JDialog is left on the other monitor then release the drag.


      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      Expected result is that the JFrame and JDialog will remain displayed but instead the (plus the JDialog shouldn't have been moving in the first place when we dragged the JFrame).
      ACTUAL -
      JDialog will disappear.

      REPRODUCIBILITY :
      This bug can be reproduced always.

      ---------- BEGIN SOURCE ----------
      public class TestMacWindows {
          public static void main(String[] args) {
              EventQueue.invokeLater(new Runnable() {
                  public void run() {
                      JFrame f = new JFrame("Main Frame");
                      f.setSize(300,300);
                      f.setLocation(100,100);
                      f.setVisible(true);

                      JDialog d = new JDialog(f, "Dialog");
                      d.setSize(300,300);
                      d.setLocation(500,100);
                      d.setVisible(true);
                  }
              });
          }
      }
      ---------- END SOURCE ----------

      CUSTOMER SUBMITTED WORKAROUND :
      No work around.

      SUPPORT :
      YES

        Attachments

          Activity

            People

            Assignee:
            Unassigned Unassigned
            Reporter:
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Dates

              Created:
              Updated: