diff options
| author | Vaxry <vaxry@vaxry.net> | 2024-07-21 17:27:15 +0200 |
|---|---|---|
| committer | Vaxry <vaxry@vaxry.net> | 2024-07-21 17:27:36 +0200 |
| commit | f7fb7e7e49e3b47f9b72c55fbf2d093e1a7981f5 (patch) | |
| tree | 1cf2d2e3f0ddc030a62a94abd70034902ffaff15 /src | |
| parent | efcbcd7297e2c9b06e3cd5d3296d47504f502cee (diff) | |
xwayland: avoid unfocusing on OR child focuses
fixes #6698
Diffstat (limited to 'src')
| -rw-r--r-- | src/xwayland/XWM.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/xwayland/XWM.cpp b/src/xwayland/XWM.cpp index b55df7fc..0eaa16be 100644 --- a/src/xwayland/XWM.cpp +++ b/src/xwayland/XWM.cpp @@ -398,10 +398,10 @@ void CXWM::focusWindow(SP<CXWaylandSurface> surf) { focusedSurface = surf; - // send state to all surfaces, sometimes we might lose some + // send state to all toplevel surfaces, sometimes we might lose some // that could still stick with the focused atom for (auto& s : mappedSurfaces) { - if (!s) + if (!s || s->overrideRedirect) continue; sendState(s.lock()); @@ -879,7 +879,7 @@ void CXWM::activateSurface(SP<CXWaylandSurface> surf, bool activate) { if ((surf == focusedSurface && activate) || (surf && surf->overrideRedirect)) return; - if (!activate || !surf) { + if (!surf || (!activate || !surf->overrideRedirect /* if we are focusing on an OR child, don't unfocus parent */)) { setActiveWindow((uint32_t)XCB_WINDOW_NONE); focusWindow(nullptr); } else { |
