FrameJumpingToMouse.java revision 14851:980da45565c8
1/*
2 * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
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        4752312
28 * @summary    Tests that after moving non-focusable window it ungrabs mouse pointer
29 * @author     Denis Mikhalkin: area=awt.focus
30 * @library    ../../regtesthelpers
31 * @build      Util
32 * @run        main FrameJumpingToMouse
33 */
34
35import java.applet.Applet;
36import java.awt.BorderLayout;
37import java.awt.Dialog;
38import java.awt.Frame;
39import java.awt.Point;
40import java.awt.Robot;
41import java.awt.TextArea;
42import java.awt.Toolkit;
43import java.awt.event.InputEvent;
44import javax.swing.JFrame;
45import test.java.awt.regtesthelpers.Util;
46
47public class FrameJumpingToMouse extends Applet
48{
49    JFrame frame = new JFrame("Test jumping frame");
50    Robot robot = Util.createRobot();
51
52    public static void main(String[] args) {
53        FrameJumpingToMouse test = new FrameJumpingToMouse();
54        test.init();
55        test.start();
56    }
57
58    public void init() {
59        frame.setFocusableWindowState(false);
60        frame.setBounds(100, 100, 100, 100);
61    }
62
63    public void start() {
64        frame.setVisible(true);
65        Util.waitTillShown(frame);
66
67        Point loc = frame.getLocationOnScreen();
68        robot.mouseMove(loc.x + frame.getWidth() / 4, loc.y + frame.getInsets().top / 2);
69        robot.delay(50);
70        robot.mousePress(InputEvent.BUTTON1_MASK);
71        robot.delay(50);
72        robot.mouseMove(loc.x + 100, loc.y + 50);
73        robot.delay(50);
74        robot.mouseRelease(InputEvent.BUTTON1_MASK);
75
76        Util.waitForIdle(robot);
77
78        loc = frame.getLocation();
79        robot.mouseMove(loc.x + frame.getWidth() / 2, loc.y + frame.getHeight() / 2);
80        Util.waitForIdle(robot);
81
82        if (!(frame.getLocation().equals(loc))) {
83            throw new RuntimeException("Test failed: frame is moving to mouse with grab!");
84        }
85        System.out.println("Test passed.");
86    }
87}
88