On Wed, 6 Jan 2021 16:20:47 GMT, Jose Pereda <jper...@openjdk.org> wrote:

> As commented in the JBS issue, there is one single `dndGesture` object in 
> `Scene`, that can be instantiated from three different ways: 
> 
> - DropTargetListener, on dragEnter 
> - DragGestureListener, on dragGestureRecognized or 
> - MouseHandler, processing a right mouse click (these two are mutually 
> exclusive).  
> 
> This PR prevents that, for two almost simultaneous drag events (for instance 
> via mouse and touchpad), the `dndGesture` for the last of these events gets 
> initialized again, losing all existing drag info (`dndGesture.dragboard`) 
> that was added to the first one, avoiding the RTE.
> 
> The existing manual test 
> [DndTest](https://github.com/openjdk/jfx/blob/master/tests/manual/dnd/DndTest.java)
>  has been used on MacOS to verify the PR.

modules/javafx.graphics/src/main/java/javafx/scene/Scene.java line 3788:

> 3786:                         //old gesture ended and new one started
> 3787:                         gestureStarted = true;
> 3788:                         if (!PLATFORM_DRAG_GESTURE_INITIATION && 
> Scene.this.dndGesture == null) {

This will prevent the creation of the new `DndGesture`, but we will still clear 
the PDR targets. Have you confirmed that this is the desired behavior? It seems 
reasonable, since we also clear it on a mouse move, but wanted to get your take 
on it.

-------------

PR: https://git.openjdk.java.net/jfx/pull/372

Reply via email to