10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24 /**
25 * @test
26 * @key headful
27 * @bug 7154841
28 * @summary JPopupMenu is overlapped by a Dock on Mac OS X
29 * @author Petr Pchelko
30 * @library ../../../../lib/testlibrary
31 * @build ExtendedRobot jdk.testlibrary.OSInfo
32 * @run main bug7154841
33 */
34
35 import java.awt.*;
36 import javax.swing.*;
37 import java.awt.event.MouseEvent;
38 import java.awt.event.MouseMotionAdapter;
39 import java.util.concurrent.atomic.AtomicReference;
40 import jdk.testlibrary.OSInfo;
41
42 public class bug7154841 {
43
44 private static final int STEP = 10;
45
46 private static volatile boolean passed = false;
47 private static JFrame frame;
48 private static JPopupMenu popupMenu;
49 private static AtomicReference<Rectangle> screenBounds = new AtomicReference<>();
50
51 private static void initAndShowUI() {
52 popupMenu = new JPopupMenu();
53 for (int i = 0; i < 100; i++) {
54 JRadioButtonMenuItem item = new JRadioButtonMenuItem(" Test " + i);
55 item.addMouseMotionListener(new MouseMotionAdapter() {
56 @Override
57 public void mouseMoved(MouseEvent e) {
58 passed = true;
59 }
60 });
61 popupMenu.add(item);
62 }
63
64 frame = new JFrame();
65 screenBounds.set(getScreenBounds());
66 frame.setBounds(screenBounds.get());
67 frame.setVisible(true);
68 }
69
70 public static void main(String[] args) throws Exception {
71 if (OSInfo.getOSType() != OSInfo.OSType.MACOSX) {
72 return; // Test only for Mac OS X
73 }
74
75 try {
76 ExtendedRobot r = new ExtendedRobot();
77 r.setAutoDelay(100);
78 r.setAutoWaitForIdle(true);
79 r.mouseMove(0, 0);
80
81 SwingUtilities.invokeAndWait(bug7154841::initAndShowUI);
82
83 r.waitForIdle(200);
84
85 SwingUtilities.invokeAndWait(() -> {
86 popupMenu.show(frame, frame.getX() + frame.getWidth() / 2, frame.getY() + frame.getHeight() / 2);
87 });
88
89 r.waitForIdle(200);
90
91 int y = (int)screenBounds.get().getY() + (int)screenBounds.get().getHeight() - 10;
|
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24 /**
25 * @test
26 * @key headful
27 * @bug 7154841
28 * @summary JPopupMenu is overlapped by a Dock on Mac OS X
29 * @author Petr Pchelko
30 * @library /test/lib
31 * @build ExtendedRobot jdk.test.lib.Platform
32 * @run main bug7154841
33 */
34
35 import java.awt.*;
36 import javax.swing.*;
37 import java.awt.event.MouseEvent;
38 import java.awt.event.MouseMotionAdapter;
39 import java.util.concurrent.atomic.AtomicReference;
40
41 import jdk.test.lib.Platform;
42
43 public class bug7154841 {
44
45 private static final int STEP = 10;
46
47 private static volatile boolean passed = false;
48 private static JFrame frame;
49 private static JPopupMenu popupMenu;
50 private static AtomicReference<Rectangle> screenBounds = new AtomicReference<>();
51
52 private static void initAndShowUI() {
53 popupMenu = new JPopupMenu();
54 for (int i = 0; i < 100; i++) {
55 JRadioButtonMenuItem item = new JRadioButtonMenuItem(" Test " + i);
56 item.addMouseMotionListener(new MouseMotionAdapter() {
57 @Override
58 public void mouseMoved(MouseEvent e) {
59 passed = true;
60 }
61 });
62 popupMenu.add(item);
63 }
64
65 frame = new JFrame();
66 screenBounds.set(getScreenBounds());
67 frame.setBounds(screenBounds.get());
68 frame.setVisible(true);
69 }
70
71 public static void main(String[] args) throws Exception {
72 if (!Platform.isOSX()) {
73 return; // Test only for Mac OS X
74 }
75
76 try {
77 ExtendedRobot r = new ExtendedRobot();
78 r.setAutoDelay(100);
79 r.setAutoWaitForIdle(true);
80 r.mouseMove(0, 0);
81
82 SwingUtilities.invokeAndWait(bug7154841::initAndShowUI);
83
84 r.waitForIdle(200);
85
86 SwingUtilities.invokeAndWait(() -> {
87 popupMenu.show(frame, frame.getX() + frame.getWidth() / 2, frame.getY() + frame.getHeight() / 2);
88 });
89
90 r.waitForIdle(200);
91
92 int y = (int)screenBounds.get().getY() + (int)screenBounds.get().getHeight() - 10;
|