< 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 >