From d0a6fa7aa6c3a9d94611130a9213de19a8754d67 Mon Sep 17 00:00:00 2001 From: Vaxry Date: Sun, 16 Jun 2024 17:04:10 +0200 Subject: [PATCH] wl_seat: accomodate for apps late-binding seat resources Sends enter events when an app binds wl_keyboard or wl_pointer later than it should. Fixes some buggy apps. Fixes #6131 --- src/protocols/core/Seat.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/protocols/core/Seat.cpp b/src/protocols/core/Seat.cpp index 8f9174f5..be05955c 100644 --- a/src/protocols/core/Seat.cpp +++ b/src/protocols/core/Seat.cpp @@ -98,6 +98,9 @@ CWLPointerResource::CWLPointerResource(SP resource_, SPonSetCursor(owner.lock(), serial, surf ? CWLSurfaceResource::fromResource(surf) : nullptr, {hotX, hotY}); }); + + if (g_pSeatManager->state.pointerFocus && g_pSeatManager->state.pointerFocus->client() == resource->client()) + sendEnter(g_pSeatManager->state.pointerFocus.lock(), {-1, -1} /* Coords don't really matter that much, they will be updated next move */); } bool CWLPointerResource::good() { @@ -207,6 +210,9 @@ CWLKeyboardResource::CWLKeyboardResource(SP resource_, SPkeyboard.lock()); repeatInfo(g_pSeatManager->keyboard->repeatRate, g_pSeatManager->keyboard->repeatDelay); + + if (g_pSeatManager->state.keyboardFocus && g_pSeatManager->state.keyboardFocus->client() == resource->client()) + sendEnter(g_pSeatManager->state.keyboardFocus.lock()); } bool CWLKeyboardResource::good() {