# HG changeset patch # User rupashka # Date 1313150009 -14400 # Node ID 303a387c2ebced40df32e1a97d7d5aef06590892 # Parent 2132929d2ec38ea58b48925bf25b22c177463c47 7071609: javax/swing/JPopupMenu/6694823/bug6694823.java failed on solaris10 Reviewed-by: alexp diff -r 2132929d2ec3 -r 303a387c2ebc jdk/test/javax/swing/JPopupMenu/6694823/bug6694823.java --- a/jdk/test/javax/swing/JPopupMenu/6694823/bug6694823.java Fri Aug 05 15:35:04 2011 -0700 +++ b/jdk/test/javax/swing/JPopupMenu/6694823/bug6694823.java Fri Aug 12 15:53:29 2011 +0400 @@ -69,7 +69,12 @@ toolkit.realSync(); System.out.println("Test passed!"); - frame.dispose(); + + SwingUtilities.invokeAndWait(new Runnable() { + public void run() { + frame.dispose(); + } + }); } private static void createGui() { @@ -88,30 +93,44 @@ frame.setSize(200, 200); } - private static void showPopup(final boolean shouldBeShifted) { - SwingUtilities.invokeLater(new Runnable() { + private static void showPopup(final boolean shouldBeShifted) throws Exception { + SwingUtilities.invokeAndWait(new Runnable() { public void run() { // Place frame just above the task bar Dimension screenSize = toolkit.getScreenSize(); frame.setLocation(screenSize.width / 2, screenSize.height - frame.getHeight() - screenInsets.bottom); frame.setVisible(true); + } + }); + // Ensure frame is visible + toolkit.realSync(); + + final Point point = new Point(); + SwingUtilities.invokeAndWait(new Runnable() { + public void run() { // Place popup over the task bar + point.x = 0; + point.y = frame.getHeight() - popup.getPreferredSize().height + screenInsets.bottom; + popup.show(frame, point.x, point.y); + } + }); + + // Ensure popup is visible + toolkit.realSync(); + + SwingUtilities.invokeAndWait(new Runnable() { + public void run() { Point frameLoc = frame.getLocationOnScreen(); - int x = 0; - int y = frame.getHeight() - - popup.getPreferredSize().height + screenInsets.bottom; - popup.show(frame, x, y); - if (shouldBeShifted) { if (popup.getLocationOnScreen() - .equals(new Point(frameLoc.x, frameLoc.y + y))) { + .equals(new Point(frameLoc.x, frameLoc.y + point.y))) { throw new RuntimeException("Popup is not shifted"); } } else { if (!popup.getLocationOnScreen() - .equals(new Point(frameLoc.x, frameLoc.y + y))) { + .equals(new Point(frameLoc.x, frameLoc.y + point.y))) { throw new RuntimeException("Popup is unexpectedly shifted"); } }