java/awt/grab/MenuDragEvents/MenuDragEvents.java
Print this page
*** 1,6 ****
--- 1,28 ----
/*
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+ /*
test
@bug 6390326
@summary REGRESSION: Broken mouse behaviour of menus partially outside the main window.
@author oleg.sukhodolsky: area=awt-drab
@run applet AutomaticAppletTest.html
*** 34,45 ****
import javax.swing.WindowConstants;
import javax.swing.event.MenuDragMouseEvent;
import javax.swing.event.MenuDragMouseListener;
- import sun.awt.SunToolkit;
-
public class MenuDragEvents extends Applet
{
//Declare things used in the test, like buttons and labels here
boolean mouseDragged = false;
boolean mouseEntered = false;
--- 56,65 ----
*** 116,149 ****
frame.setVisible(true);
Robot r = null;
try {
r = new Robot();
}
catch (AWTException ae) {
throw new RuntimeException(ae);
}
! SunToolkit tk = (SunToolkit) Toolkit.getDefaultToolkit();
! tk.realSync();
Point loc = m.getLocationOnScreen();
loc.x += m.getWidth() / 2;
loc.y += m.getHeight() / 2;
r.mouseMove(loc.x, loc.y);
r.mousePress(InputEvent.BUTTON1_MASK);
! tk.realSync();
Point loc2 = i.getLocationOnScreen();
loc2.x += i.getWidth() / 2;
loc2.y += i.getHeight() / 2;
// move from menu on menubar to menu item
dragMouse(r, loc, loc2);
r.mouseRelease(InputEvent.BUTTON1_MASK);
! tk.realSync();
if (!mouseEntered || !mouseDragged || !mouseReleased || !actionReceived) {
throw new RuntimeException("we expected to receive both mouseEntered and MouseDragged ("
+ mouseEntered + ", " + mouseDragged + ", " + mouseReleased
+ ", " + actionReceived + ")");
--- 136,171 ----
frame.setVisible(true);
Robot r = null;
try {
r = new Robot();
+ r.setAutoDelay(50);
}
catch (AWTException ae) {
throw new RuntimeException(ae);
}
! r.waitForIdle();
Point loc = m.getLocationOnScreen();
loc.x += m.getWidth() / 2;
loc.y += m.getHeight() / 2;
r.mouseMove(loc.x, loc.y);
r.mousePress(InputEvent.BUTTON1_MASK);
! r.waitForIdle();
! r.delay(1000);
Point loc2 = i.getLocationOnScreen();
loc2.x += i.getWidth() / 2;
loc2.y += i.getHeight() / 2;
// move from menu on menubar to menu item
dragMouse(r, loc, loc2);
r.mouseRelease(InputEvent.BUTTON1_MASK);
! r.waitForIdle();
! r.delay(1000);
if (!mouseEntered || !mouseDragged || !mouseReleased || !actionReceived) {
throw new RuntimeException("we expected to receive both mouseEntered and MouseDragged ("
+ mouseEntered + ", " + mouseDragged + ", " + mouseReleased
+ ", " + actionReceived + ")");