< prev index next >

test/jdk/java/awt/dnd/Button2DragTest/Button2DragTest.java

Print this page
rev 58018 : 8238575: DragSourceEvent.getLocation() returns wrong value on HiDPI screens (Windows)
Reviewed-by: XXX

*** 1,7 **** /* ! * Copyright (c) 2006, 2016, 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. --- 1,7 ---- /* ! * Copyright (c) 2006, 2020, 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.
*** 19,38 **** * 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. */ import java.awt.Frame; import java.awt.Point; import java.awt.Robot; import java.awt.datatransfer.StringSelection; import java.awt.dnd.DnDConstants; import java.awt.dnd.DragGestureEvent; import java.awt.dnd.DragGestureListener; import java.awt.dnd.DragSource; ! import java.awt.dnd.DragSourceAdapter; import java.awt.dnd.DragSourceDropEvent; import java.awt.dnd.DragSourceListener; import java.awt.dnd.DropTarget; import java.awt.dnd.DropTargetAdapter; import java.awt.dnd.DropTargetDropEvent; import java.awt.event.InputEvent; --- 19,43 ---- * 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. */ + import java.awt.Color; import java.awt.Frame; + import java.awt.GraphicsConfiguration; + import java.awt.GraphicsDevice; + import java.awt.GraphicsEnvironment; import java.awt.Point; import java.awt.Robot; import java.awt.datatransfer.StringSelection; import java.awt.dnd.DnDConstants; import java.awt.dnd.DragGestureEvent; import java.awt.dnd.DragGestureListener; import java.awt.dnd.DragSource; ! import java.awt.dnd.DragSourceDragEvent; import java.awt.dnd.DragSourceDropEvent; + import java.awt.dnd.DragSourceEvent; import java.awt.dnd.DragSourceListener; import java.awt.dnd.DropTarget; import java.awt.dnd.DropTargetAdapter; import java.awt.dnd.DropTargetDropEvent; import java.awt.event.InputEvent;
*** 40,80 **** import test.java.awt.regtesthelpers.Util; /** * @test * @key headful ! * @bug 4955110 * @summary tests that DragSourceDragEvent.getDropAction() accords to its new * spec (does not depend on the user drop action) * @library ../../regtesthelpers * @build Util * @run main/othervm Button2DragTest * @author Alexander.Gerasimov area=dnd */ public final class Button2DragTest { private volatile boolean dropSuccess; private static Frame frame; public static void main(final String[] args) { Button2DragTest test = new Button2DragTest(); try { test.run(); } finally { - if (frame != null) { frame.dispose(); } } } public void run() { ! frame = new Frame(); ! final DragSourceListener dragSourceListener = new DragSourceAdapter() { ! public void dragDropEnd(DragSourceDropEvent e) { ! dropSuccess = e.getDropSuccess(); System.err.println("Drop was successful: " + dropSuccess); } }; DragGestureListener dragGestureListener = new DragGestureListener() { public void dragGestureRecognized(DragGestureEvent dge) { --- 45,115 ---- import test.java.awt.regtesthelpers.Util; /** * @test * @key headful ! * @bug 4955110 8238575 * @summary tests that DragSourceDragEvent.getDropAction() accords to its new * spec (does not depend on the user drop action) * @library ../../regtesthelpers * @build Util * @run main/othervm Button2DragTest * @author Alexander.Gerasimov area=dnd */ public final class Button2DragTest { private volatile boolean dropSuccess; + private volatile boolean locationValid = true; private static Frame frame; public static void main(final String[] args) { + var lge = GraphicsEnvironment.getLocalGraphicsEnvironment(); + for (GraphicsDevice device : lge.getScreenDevices()) { Button2DragTest test = new Button2DragTest(); + frame = new Frame(device.getDefaultConfiguration()); try { test.run(); } finally { frame.dispose(); } } } public void run() { ! final DragSourceListener dragSourceListener = new DragSourceListener() { ! private void checkLocation(DragSourceEvent dsde) { ! if (!frame.getBounds().contains(dsde.getLocation())) { ! System.err.println("Expected in" + frame.getBounds()); ! System.err.println("Actual" + dsde.getLocation()); ! locationValid = false; ! } ! } ! ! @Override ! public void dragEnter(DragSourceDragEvent dsde) { ! checkLocation(dsde); ! } ! ! @Override ! public void dragOver(DragSourceDragEvent dsde) { ! checkLocation(dsde); ! } ! @Override ! public void dropActionChanged(DragSourceDragEvent dsde) { ! checkLocation(dsde); ! } ! ! @Override ! public void dragExit(DragSourceEvent dse) { ! checkLocation(dse); ! } ! ! public void dragDropEnd(DragSourceDropEvent dsde) { ! checkLocation(dsde); ! dropSuccess = dsde.getDropSuccess(); System.err.println("Drop was successful: " + dropSuccess); } }; DragGestureListener dragGestureListener = new DragGestureListener() { public void dragGestureRecognized(DragGestureEvent dge) {
*** 91,105 **** System.err.println("Drop"); } }; new DropTarget(frame, dropTargetListener); ! //What would normally go into main() will probably go here. ! //Use System.out.println for diagnostic messages that you want ! //to read after the test is done. frame.setUndecorated(true); ! frame.setBounds(100, 100, 200, 200); frame.setLocationRelativeTo(null); frame.setVisible(true); Robot robot = Util.createRobot(); --- 126,138 ---- System.err.println("Drop"); } }; new DropTarget(frame, dropTargetListener); ! frame.setBackground(Color.GREEN); frame.setUndecorated(true); ! frame.setSize(200, 200); frame.setLocationRelativeTo(null); frame.setVisible(true); Robot robot = Util.createRobot();
*** 113,125 **** Util.drag(robot, startPoint, endPoint, InputEvent.BUTTON2_MASK); Util.waitForIdle(robot); robot.delay(500); ! if (dropSuccess) { ! System.err.println("test passed"); ! } else { throw new RuntimeException("test failed: drop was not successful"); } } - } --- 146,155 ---- Util.drag(robot, startPoint, endPoint, InputEvent.BUTTON2_MASK); Util.waitForIdle(robot); robot.delay(500); ! if (!dropSuccess || !locationValid) { throw new RuntimeException("test failed: drop was not successful"); } } }
< prev index next >