RFR: 8273379: GTK3 stops sending key events during drag and drop [v32]
Lukasz Kostyra
lkostyra at openjdk.org
Mon May 8 13:06:49 UTC 2023
On Sat, 6 May 2023 21:20:59 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;
>> * It does not rely on `gdk_threads_add_idle` because it may be inconsistent.
>>
>>
>> 
>> 
>
> Thiago Milczarek Sayao has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 78 commits:
>
> - Merge branch 'master' into 8273379-dnd-keys
> - Merge branch 'master' into 8273379-dnd-keys
> - Merge branch 'master' into 8273379-dnd-keys
> - Merge branch 'openjdk:master' into master
> - Merge branch 'openjdk:master' into master
> - Merge branch 'openjdk:master' into master
> - Merge branch 'openjdk:master' into master
> - Merge branch 'openjdk:master' into master
> - Merge branch 'openjdk:master' into master
> - Merge branch 'openjdk:master' into master
> - ... and 68 more: https://git.openjdk.org/jfx/compare/c50ce609...53ee86e8
apps/toys/DragDrop/src/dragdrop/DragDropDuke.java line 126:
> 124:
> 125: private void subDownload() throws IOException {
> 126: URL url = new URL("http://cr.openjdk.java.net/~jeff/Duke/png/Hips.png");
I think, if possible, tests should be as independent from online-hosted content as possible (and in this case it seems like we only need an Image). I'd consider either adding Duke image to the repo, or (if adding a .png is not a good solution either - @kevinrushforth would have to confirm) generating a Test image.
-------------
PR Review Comment: https://git.openjdk.org/jfx/pull/986#discussion_r1187418418
More information about the openjfx-dev
mailing list