RFR: 8273379 - GTK3 stops sending key events during drag and drop [v26]

Thiago Milczarek Sayao tsayao at openjdk.org
Thu Jan 19 17:25:40 UTC 2023


On Thu, 19 Jan 2023 17:22:38 GMT, Thiago Milczarek Sayao <tsayao at openjdk.org> wrote:

>> This PR fixes 8273379.
>> 
>> I reverted back to use GDK (from [8225571](https://bugs.openjdk.org/browse/JDK-8225571)) to handle the events. 
>> 
>> It may also fix [8280383](https://bugs.openjdk.org/browse/JDK-8280383).
>> 
>> There's also some cleaup.
>> 
>> To do general testing (two tests were added):
>> `java @build/run.args -jar apps/toys/DragDrop/dist/DragDrop.jar`
>> 
>> Information for reviewing:
>> * Previously an offscreen window where used to pass events. Now it gets the window were Drag initially started  (`WindowContextBase::sm_mouse_drag_window`);
>> * There's a new `DragSourceContext` instead of global variables;
>> * DragView were simplified;
>> * It handles `GDK_GRAB_BROKEN` events (I still need to figure it out a test case for this - It should happen when another window grabs the device during the drag);
>> * There's a special case for `GDK_BUTTON_RELEASE` because `WindowContext` will notify java about the button release and set `DnDGesture` to null before the end of the DND.
>> * `gdk_drag_find_window_for_screen` -> pass the DragView window to be ignored (as it would "steal" destination motion events);
>> * The Scenario were the drag source window closes during the drag is now covered;
>
> Thiago Milczarek Sayao has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Do not rely on gdk_threads_add_idle_full to end drag as it might lead to inconsistent behaviour.

Did many tests on Ubuntu 22.04 (Xorg and Wayland) and Ubuntu 16.04. Looking good.

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

PR: https://git.openjdk.org/jfx/pull/986


More information about the openjfx-dev mailing list