summaryrefslogtreecommitdiff
path: root/src/managers/SeatManager.cpp
diff options
context:
space:
mode:
authorVaxry <vaxry@vaxry.net>2024-06-16 16:23:35 +0200
committerVaxry <vaxry@vaxry.net>2024-06-16 16:23:41 +0200
commit1b5444494d26624804de8f479da3cffb5d480dc6 (patch)
tree68375cdd4bc40837b58f2aae3dae5533ee5d11d5 /src/managers/SeatManager.cpp
parent3eaf35f1e2d984bea89ab1d8a5abbef66243aa5d (diff)
seat/dnd: unfocus pointer from surfaces on dnd start
GTK is speshyal and requires this for functioning properly. Ugh. It's technically not required by spec, f you gtk. Ref #6509
Diffstat (limited to 'src/managers/SeatManager.cpp')
-rw-r--r--src/managers/SeatManager.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/managers/SeatManager.cpp b/src/managers/SeatManager.cpp
index a58bca72..fc14f0fc 100644
--- a/src/managers/SeatManager.cpp
+++ b/src/managers/SeatManager.cpp
@@ -191,6 +191,11 @@ void CSeatManager::setPointerFocus(SP<CWLSurfaceResource> surf, const Vector2D&
if (state.pointerFocus == surf)
return;
+ if (PROTO::data->dndActive() && surf) {
+ Debug::log(LOG, "[seatmgr] Refusing pointer focus during an active dnd");
+ return;
+ }
+
if (!mouse || !mouse->wlr()) {
Debug::log(ERR, "BUG THIS: setPointerFocus without a valid mouse set");
return;