diff --git a/src/managers/XWaylandManager.cpp b/src/managers/XWaylandManager.cpp index 962fea036..655ba75ac 100644 --- a/src/managers/XWaylandManager.cpp +++ b/src/managers/XWaylandManager.cpp @@ -32,9 +32,13 @@ wlr_surface* CHyprXWaylandManager::getWindowSurface(CWindow* pWindow) { } void CHyprXWaylandManager::activateSurface(wlr_surface* pSurface, bool activate) { - if (wlr_surface_is_xdg_surface(pSurface)) - wlr_xdg_toplevel_set_activated(wlr_xdg_surface_from_wlr_surface(pSurface)->toplevel, activate); - else if (wlr_surface_is_xwayland_surface(pSurface)) { + if (wlr_surface_is_xdg_surface(pSurface)) { + const auto PSURF = wlr_xdg_surface_from_wlr_surface(pSurface); + + if (PSURF->role == WLR_XDG_SURFACE_ROLE_TOPLEVEL) { + wlr_xdg_toplevel_set_activated(PSURF->toplevel, activate); + } + } else if (wlr_surface_is_xwayland_surface(pSurface)) { wlr_xwayland_surface_activate(wlr_xwayland_surface_from_wlr_surface(pSurface), activate); if (activate)