On Wed, 10 Dec 2025 05:34:52 GMT, Michael Strauß <[email protected]> wrote:
> An extended stage seems to hang after a drag and drop operation. Note that in
> the attached reproducer, the application seems unresponsive until the mouse
> cursor leaves and re-enters the application window:
>
>
> import javafx.application.Application;
> import javafx.scene.Scene;
> import javafx.scene.control.Label;
> import javafx.scene.input.ClipboardContent;
> import javafx.scene.input.Dragboard;
> import javafx.scene.input.TransferMode;
> import javafx.scene.layout.BorderPane;
> import javafx.scene.layout.HBox;
> import javafx.scene.layout.HeaderBar;
> import javafx.stage.Stage;
> import javafx.stage.StageStyle;
>
> public class DragDropTest extends Application {
>
> @Override
> public void start(Stage primaryStage) {
>
> primaryStage.initStyle(StageStyle.EXTENDED);
>
> // Create drag source
> Label dragSource = new Label("Drag me!");
> dragSource.setStyle("-fx-background-color: lightblue; -fx-padding:
> 10px");
>
> // Create drop target
> Label dropTarget = new Label("Drop here!");
> dropTarget.setStyle("-fx-background-color: lightcoral; -fx-padding:
> 20px; -fx-min-width: 150px; -fx-min-height: 100px;");
>
> // Set up drag detection
> dragSource.setOnDragDetected(event -> {
> Dragboard dragboard =
> dragSource.startDragAndDrop(TransferMode.COPY);
> ClipboardContent content = new ClipboardContent();
> content.putString("Hello from drag source!");
> dragboard.setContent(content);
> event.consume();
> });
>
> // Set up drag over
> dropTarget.setOnDragOver(event -> {
> if (event.getGestureSource() != dropTarget &&
> event.getDragboard().hasString()) {
> event.acceptTransferModes(TransferMode.COPY);
> }
> event.consume();
> });
>
> // Set up drag entered (visual feedback)
> dropTarget.setOnDragEntered(event -> {
> if (event.getGestureSource() != dropTarget &&
> event.getDragboard().hasString()) {
> dropTarget.setStyle("-fx-background-color: lightgreen;
> -fx-padding: 20px; -fx-min-width: 150px; -fx-min-height: 100px;");
> }
> event.consume();
> });
>
> // Set up drag exited (reset visual feedback)
> dropTarget.setOnDragExited(event -> {
> dropTarget.setStyle("-fx-background-color: lightcoral;
> -fx-padding: 20px; -fx-min-width: 150px; -fx-min-height: 100px;");
> event.consume();
> });
>
> // Set up drop
> dropTarget.setOnD...
This pull request has now been integrated.
Changeset: 4a15d099
Author: Michael Strauß <[email protected]>
URL:
https://git.openjdk.org/jfx/commit/4a15d0996e12ad9d75f0abbbc8832a47341c4341
Stats: 59 lines in 1 file changed: 33 ins; 24 del; 2 mod
8367557: Extended stage seems to hang after drag and drop
Reviewed-by: lkostyra, angorya
-------------
PR: https://git.openjdk.org/jfx/pull/2003