Bug 508111

Summary: Drag and drop doesn't work on Firefox extension popups (unless they use an xdg_popup)
Product: [Plasma] kwin Reporter: Emilio Cobos Álvarez (:emilio) <emilio>
Component: Wayland drag-and-dropAssignee: KWin default assignee <kwin-bugs-null>
Status: RESOLVED FIXED    
Severity: normal CC: dennis.lissov, kde, nate, postix, vlad.zahorodnii
Priority: NOR    
Version First Reported In: unspecified   
Target Milestone: ---   
Platform: Other   
OS: Linux   
See Also: https://bugs.kde.org/show_bug.cgi?id=497031
https://bugzilla.mozilla.org/show_bug.cgi?id=1977853
Latest Commit: Version Fixed/Implemented In: 6.5.0
Sentry Crash Report:

Description Emilio Cobos Álvarez (:emilio) 2025-08-11 13:00:44 UTC
SUMMARY

When Firefox uses a subsurface to render an extension popup (if the popup fits within the window, generally), then dropping stuff inside the popup doesn't work (gets dropped in the main surface).

STEPS TO REPRODUCE
1. On Firefox, install NoScript (https://addons.mozilla.org/en-US/firefox/addon/noscript/). Make sure the toolbar icon is at the right (default position), so that the popup fits in the window by default.
2. Click on the extension button to open the panel
3. Drag any UI element at the top. Doing so shows the "Drop here to hide." box from the extension itself.
4. Move the pointer towards that area that appeared at step 3 (and release it).

OBSERVED RESULT

The drop gets registered on the main window, a tab appears.

EXPECTED RESULT

The icon moves. Note that this is also the observed result if you move the extension button to the left on the window (then GTK will use an xdg_popup in order to use move-to-rect).

SOFTWARE/OS VERSIONS
Operating System: Arch Linux
KDE Plasma Version: 6.4.4
KDE Frameworks Version: 6.17.0
Qt Version: 6.9.1
Kernel Version: 6.16.0-arch1-1 (64-bit)
Graphics Platform: Wayland
Comment 1 Vlad Zahorodnii 2025-08-26 14:33:57 UTC
Git commit 8ad4fb88242c937ba4b9e06dc4bb6a143af55309 by Vlad Zahorodnii.
Committed on 26/08/2025 at 11:33.
Pushed by vladz into branch 'master'.

Fix drag-and-drop for subsurfaces

If a drag-and-drop operation origanates from a subsurface, kwin will
send dnd related events to the main surface. This confuses clients such
as Firefox.

M  +1    -0    autotests/integration/CMakeLists.txt
A  +981  -0    autotests/integration/dnd_test.cpp     [License: GPL(v2.0+)]
M  +4    -0    autotests/integration/kwin_wayland_test.h
M  +14   -0    autotests/integration/test_helpers.cpp
M  +2    -13   autotests/wayland/client/CMakeLists.txt
M  +0    -166  autotests/wayland/client/test_datadevice.cpp
D  +0    -751  autotests/wayland/client/test_drag_drop.cpp
M  +34   -11   src/input.cpp
M  +2    -15   src/wayland/datadevice.cpp
M  +1    -1    src/wayland/datadevice.h
M  +8    -12   src/wayland/seat.cpp
M  +14   -1    src/wayland/seat.h
M  +1    -1    src/xwayland/dnd.cpp

https://invent.kde.org/plasma/kwin/-/commit/8ad4fb88242c937ba4b9e06dc4bb6a143af55309