Hello,

well, the behavior we are looking for is being able to proceed with a drag after the thing on which the drag started changed (got removed / replaced). It doesn't sound very convenient for me that a thing that is not in the scene graph anymore can still the mouse capture, which means that no component of the whole application receives any mouse events at all. I think that it is not an uncommon scenario for an application to change things when a drag is detected. A new DragEvent that starts where the old has ended because the target became invalid sounds promising to me, but any solution is appreciated. Should I file an issue in the JavaFX jira for it?

Kind regards,
Sebastian

Am 16.08.2013 17:38, schrieb Richard Bair:
The existing behavior does sound consistent at least. When a drag starts, the node 
"captures" the mouse and doesn't let go until the event concludes. This is the 
same as if the node had remained in the scene graph. Since the node is no longer in the 
scene graph, there is no hierarchy to bubble / filter / capture events in.

What other options are there which would also work? We could send a mouse drag 
ended, mouse release, etc to the node which has been removed from the scene 
graph and then start a new drag event at the current location. I'm guessing 
this is the behavior you were looking for?

Richard

On Aug 16, 2013, at 7:53 AM, Sebastian Rheinnecker 
<sebastian.rheinnec...@yworks.com> wrote:

Hello,

we're not sure if we are doing something wrong but in our testing we noticed a 
behavior of javafx event processing that is unfortunate.

I attached a SSCCE that shows the issue. In the application, an ellipse shape 
is following the mouse, and when you click and drag, a listener that is called 
upon MouseEvent.DRAG_DETECTED removes the drag target from the scene graph (in 
this case, the ellipse) and immediately places a newly created ellipse in the 
same place.
The issue is: as soon as the ellipse (the drag target) is removed from the 
scene graph, no events are fired anymore for the entire drag operation *at 
all*. The sample application binds listeners to the scene, the stage and to the 
window but no mouse events are received until the user releases the mouse 
button. This happens in JavaFX 2.x as well as JavaFX 8.

We'd like to know if this is the intented behavior or a bug and if there is a 
way to receive the missing mouse events somehow.

Thanks in advance and kind regards,
Sebastian Rheinnecker

--
Sebastian Rheinnecker
phone: +49 7071 9709050
fax: +49 7071 9709051

yWorks GmbH
Vor dem Kreuzberg 28
72070 Tuebingen
Germany
http://www.yworks.com
Managing Directors: Sebastian Müller, Michael Pfahler
Commercial Registry: Stuttgart, Germany, HRB 382340

<MouseEventTest.java>


--
Sebastian Rheinnecker
phone: +49 7071 9709050
fax: +49 7071 9709051

yWorks GmbH
Vor dem Kreuzberg 28
72070 Tuebingen
Germany
http://www.yworks.com
Managing Directors: Sebastian Müller, Michael Pfahler
Commercial Registry: Stuttgart, Germany, HRB 382340

Reply via email to