RFR: 8365635: Add MOUSE_DRAG_DONE event type
Nir Lisker
nlisker at openjdk.org
Mon Aug 18 18:33:20 UTC 2025
On Sat, 16 Aug 2025 20:44:28 GMT, Nir Lisker <nlisker at openjdk.org> wrote:
> Adds `MOUSE_DRAG_DONE` event type to `MouseDragEvent` and appropriate handlers.
Forgot to attach a small manual test application I used for testing full DPR and DnD. Might be helpful for reviewers.
package main;
import javafx.application.Application;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.input.ClipboardContent;
import javafx.scene.input.Dragboard;
import javafx.scene.input.MouseEvent;
import javafx.scene.input.TransferMode;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
public class MouseTest extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(@SuppressWarnings("exports") Stage stage) throws Exception {
var sourceMouse = createSourceMouse();
var sourceDrag = createSourceDrag();
var target = createTarget();
var scene = createScene(sourceMouse, sourceDrag, target);
stage.setScene(scene);
stage.show();
}
private Rectangle createSourceMouse() {
var sourceMouse = new Rectangle(50, 50);
sourceMouse.setId("sourceMouse");
sourceMouse.setFill(Color.RED);
sourceMouse.setOnDragDetected(e -> {
sourceMouse.startFullDrag();
System.out.println(e.getEventType() + " " + sourceMouse.getId());
e.consume();
});
addDragListeners(sourceMouse);
return sourceMouse;
}
private Rectangle createSourceDrag() {
var sourceDrag = new Rectangle(50, 50);
sourceDrag.setId("sourceDrag");
sourceDrag.setFill(Color.GREEN);
sourceDrag.setOnDragDetected(e -> {
Dragboard db = sourceDrag.startDragAndDrop(TransferMode.ANY);
var content = new ClipboardContent();
content.putString("");
db.setContent(content);
System.out.println(e.getEventType() + " " + sourceDrag.getId());
e.consume();
});
addDragListeners(sourceDrag);
return sourceDrag;
}
private Rectangle createTarget() {
var target = new Rectangle(100, 50);
target.setId("target");
target.setFill(Color.BLUE);
target.setOnDragDetected(MouseEvent::consume);
addDragListeners(target);
return target;
}
private Scene createScene(Rectangle sourceMouse, Rectangle sourceDrag, Rectangle target) {
var scene = new Scene(new VBox(10, new HBox(sourceMouse, sourceDrag), target), 300, 200);
scene.setOnDragDetected(e -> {
scene.startFullDrag();
System.out.println(e.getEventType() + " scene");
});
scene.setOnDragDone(e -> {
e.acceptTransferModes(TransferMode.ANY);
System.out.println(e.getEventType() + " scene");
});
scene.setOnMouseDragReleased(e -> System.out.println(e.getEventType() + " scene"));
scene.setOnMouseDragDone(e -> System.out.println(e.getEventType() + " scene"));
return scene;
}
private static void addDragListeners(Node node) {
node.setOnDragOver(e -> {
e.acceptTransferModes(TransferMode.ANY);
System.out.println(e.getEventType() + " " + node.getId());
});
node.setOnMouseDragOver(e -> System.out.println(e.getEventType() + " " + node.getId()));
node.setOnDragDropped(e -> {
e.acceptTransferModes(TransferMode.ANY);
e.setDropCompleted(true);
System.out.println(e.getEventType() + " " + node.getId());
});
node.setOnMouseDragReleased(e -> System.out.println(e.getEventType() + " " + node.getId()));
node.setOnDragDone(e -> {
e.acceptTransferModes(TransferMode.ANY);
System.out.println(e.getEventType() + " " + node.getId());
});
node.setOnMouseDragDone(e -> System.out.println(e.getEventType() + " " + node.getId()));
}
}
-------------
PR Comment: https://git.openjdk.org/jfx/pull/1873#issuecomment-3197980633
More information about the openjfx-dev
mailing list