diff --git a/src/config/lua/objects/LuaLayerSurface.cpp b/src/config/lua/objects/LuaLayerSurface.cpp index b062b55cc..da433e77d 100644 --- a/src/config/lua/objects/LuaLayerSurface.cpp +++ b/src/config/lua/objects/LuaLayerSurface.cpp @@ -67,8 +67,8 @@ static int layerSurfaceIndex(lua_State* L) { lua_pushboolean(L, ls->mapped()); else if (key == "layer") lua_pushinteger(L, sc(ls->m_layer)); - else if (key == "interactivity") - lua_pushinteger(L, sc(ls->m_interactivity)); + else if (key == "keyboard_interactivity") + lua_pushinteger(L, sc(ls->m_keyboardInteractivity)); else if (key == "above_fullscreen") lua_pushboolean(L, sc(ls->m_flags & Desktop::View::LAYER_FLAG_ABOVE_FULLSCREEN)); else diff --git a/src/desktop/state/FocusState.cpp b/src/desktop/state/FocusState.cpp index 3713d1af4..b530c61e0 100644 --- a/src/desktop/state/FocusState.cpp +++ b/src/desktop/state/FocusState.cpp @@ -108,7 +108,7 @@ void CFocusState::rawWindowFocus(PHLWINDOW pWindow, eFocusReason reason, SPm_exclusiveLSes.empty()) { + if (!g_pInputManager->m_exclusiveKeyboardLSes.empty()) { Log::logger->log(Log::DEBUG, "Refusing a keyboard focus to a window because of an exclusive ls"); return; } diff --git a/src/desktop/state/ViewHitTester.cpp b/src/desktop/state/ViewHitTester.cpp index 095449e03..3f5fa4402 100644 --- a/src/desktop/state/ViewHitTester.cpp +++ b/src/desktop/state/ViewHitTester.cpp @@ -325,23 +325,6 @@ SP CViewHitTester::layerPopupSurfaceAt(const Vector2D& pos, return nullptr; } -SP CViewHitTester::layerPopupSurfaceAt(const Vector2D& pos, const std::vector* layerSurfaces, Vector2D* surfaceCoords, PHLLS* layerFound) const { - for (auto const& ls : *layerSurfaces | std::views::reverse) { - if (!ls->mapped() || !ls->acceptsInput()) - continue; - - auto SURFACEAT = ls->popupHead()->at(pos, true); - - if (SURFACEAT) { - *layerFound = ls.lock(); - *surfaceCoords = pos - SURFACEAT->coordsGlobal(); - return SURFACEAT->wlSurface()->resource(); - } - } - - return nullptr; -} - SP CViewHitTester::layerSurfaceAt(const Vector2D& pos, std::vector* layerSurfaces, Vector2D* surfaceCoords, PHLLS* layerFound, bool aboveLockscreen) const { for (auto const& ls : *layerSurfaces | std::views::reverse) { diff --git a/src/desktop/state/ViewHitTester.hpp b/src/desktop/state/ViewHitTester.hpp index fe223a486..0833ce4ab 100644 --- a/src/desktop/state/ViewHitTester.hpp +++ b/src/desktop/state/ViewHitTester.hpp @@ -23,7 +23,6 @@ namespace Desktop { SP windowSurfaceAt(const Vector2D& pos, PHLWINDOW window, Vector2D& surfaceLocal) const; Vector2D surfaceLocalAt(const Vector2D& pos, PHLWINDOW window, SP surface) const; SP layerPopupSurfaceAt(const Vector2D& pos, PHLMONITOR monitor, Vector2D* surfaceCoords, PHLLS* layerFound) const; - SP layerPopupSurfaceAt(const Vector2D& pos, const std::vector* layerSurfaces, Vector2D* surfaceCoords, PHLLS* layerFound) const; SP layerSurfaceAt(const Vector2D& pos, std::vector* layerSurfaces, Vector2D* surfaceCoords, PHLLS* layerFound, bool aboveLockscreen = false) const; diff --git a/src/desktop/view/LayerSurface.cpp b/src/desktop/view/LayerSurface.cpp index 4cb66085c..69c1db830 100644 --- a/src/desktop/view/LayerSurface.cpp +++ b/src/desktop/view/LayerSurface.cpp @@ -173,8 +173,8 @@ void CLayerSurface::onDestroy() { void CLayerSurface::onMap() { Log::logger->log(Log::DEBUG, "LayerSurface {:x} mapped", rc(m_layerSurface.get())); - m_mapped = true; - m_interactivity = m_layerSurface->m_current.interactivity; + m_mapped = true; + m_keyboardInteractivity = m_layerSurface->m_current.keyboardInteractivity; m_flags |= LAYER_FLAG_ABOVE_FULLSCREEN; m_ruleApplicator->propertiesChanged(Desktop::Rule::RULE_PROP_ALL); @@ -193,29 +193,28 @@ void CLayerSurface::onMap() { m_wlSurface->resource()->enter(PMONITOR->m_self.lock()); - const bool ISEXCLUSIVE = m_layerSurface->m_current.interactivity == ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_EXCLUSIVE; + const bool KEYBOARD_EXCLUSIVE = m_layerSurface->m_current.keyboardInteractivity == ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_EXCLUSIVE; - if (ISEXCLUSIVE) - g_pInputManager->m_exclusiveLSes.push_back(m_self); + if (KEYBOARD_EXCLUSIVE) + g_pInputManager->m_exclusiveKeyboardLSes.push_back(m_self); - const bool GRABSFOCUS = ISEXCLUSIVE || - (m_layerSurface->m_current.interactivity != ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_NONE && + const bool GRABS_KEYBOARD = KEYBOARD_EXCLUSIVE || + (m_layerSurface->m_current.keyboardInteractivity != ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_NONE && // don't focus if constrained (g_pSeatManager->m_mouse.expired() || !g_pInputManager->isConstrained())); - if (GRABSFOCUS) { + if (GRABS_KEYBOARD) { // TODO: use the new superb really very cool grab if (g_pSeatManager->m_seatGrab && !g_pSeatManager->m_seatGrab->accepts(m_wlSurface->resource())) g_pSeatManager->setGrab(nullptr); g_pInputManager->releaseAllMouseButtons(); Desktop::focusState()->rawSurfaceFocus(m_wlSurface->resource()); - - const auto LOCAL = g_pInputManager->getMouseCoordsInternal() - Vector2D(m_geometry.x + PMONITOR->m_position.x, m_geometry.y + PMONITOR->m_position.y); - g_pSeatManager->setPointerFocus(m_wlSurface->resource(), LOCAL); - g_pInputManager->m_emptyFocusCursorSet = false; } + // update pointer focus + g_pInputManager->simulateMouseMovement(); + m_position = Vector2D(m_geometry.x, m_geometry.y); CBox geomFixed = {m_geometry.x + PMONITOR->m_position.x, m_geometry.y + PMONITOR->m_position.y, m_geometry.width, m_geometry.height}; @@ -238,7 +237,7 @@ void CLayerSurface::onUnmap() { IPC::Socket2::sock()->postEvent({.event = "closelayer", .data = m_layerSurface->m_layerNamespace}); Event::bus()->m_events.layer.closed.emit(m_self.lock()); - std::erase_if(g_pInputManager->m_exclusiveLSes, [this](const auto& other) { return !other || other == m_self; }); + std::erase_if(g_pInputManager->m_exclusiveKeyboardLSes, [this](const auto& other) { return !other || other == m_self; }); if (!m_monitor) { Log::logger->log(Log::WARN, "Layersurface unmapping on invalid monitor (removed?) ignoring."); @@ -380,7 +379,7 @@ void CLayerSurface::onCommit() { m_realSize->setValueAndWarp(m_geometry.size()); } - if (m_mapped && (m_layerSurface->m_current.committed & CLayerShellResource::eCommittedState::STATE_INTERACTIVITY)) { + if (m_mapped && (m_layerSurface->m_current.committed & CLayerShellResource::eCommittedState::STATE_KEYBOARD_INTERACTIVITY)) { bool WASLASTFOCUS = false; m_layerSurface->m_surface->breadthfirst( [&WASLASTFOCUS](SP surf, const Vector2D& offset, void* data) { WASLASTFOCUS = WASLASTFOCUS || g_pSeatManager->m_state.keyboardFocus == surf; }, @@ -392,35 +391,31 @@ void CLayerSurface::onCommit() { }, nullptr); } - const bool WASEXCLUSIVE = m_interactivity == ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_EXCLUSIVE; - const bool ISEXCLUSIVE = m_layerSurface->m_current.interactivity == ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_EXCLUSIVE; + const bool WAS_KEYBOARD_EXCLUSIVE = m_keyboardInteractivity == ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_EXCLUSIVE; + const bool KEYBOARD_EXCLUSIVE = m_layerSurface->m_current.keyboardInteractivity == ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_EXCLUSIVE; - if (!WASEXCLUSIVE && ISEXCLUSIVE) - g_pInputManager->m_exclusiveLSes.push_back(m_self); - else if (WASEXCLUSIVE && !ISEXCLUSIVE) - std::erase_if(g_pInputManager->m_exclusiveLSes, [this](const auto& other) { return !other || other == m_self; }); + if (!WAS_KEYBOARD_EXCLUSIVE && KEYBOARD_EXCLUSIVE) + g_pInputManager->m_exclusiveKeyboardLSes.push_back(m_self); + else if (WAS_KEYBOARD_EXCLUSIVE && !KEYBOARD_EXCLUSIVE) + std::erase_if(g_pInputManager->m_exclusiveKeyboardLSes, [this](const auto& other) { return !other || other == m_self; }); // if the surface was focused and interactive but now isn't, refocus - if (WASLASTFOCUS && m_layerSurface->m_current.interactivity == ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_NONE) { + if (WASLASTFOCUS && m_layerSurface->m_current.keyboardInteractivity == ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_NONE) { // moveMouseUnified won't focus non interactive layers but it won't unfocus them either, // so unfocus the surface here. Desktop::focusState()->rawSurfaceFocus(nullptr); g_pInputManager->refocusLastWindow(m_monitor.lock()); - } else if (WASLASTFOCUS && WASEXCLUSIVE && m_layerSurface->m_current.interactivity == ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_ON_DEMAND) { + } else if (WASLASTFOCUS && WAS_KEYBOARD_EXCLUSIVE && m_layerSurface->m_current.keyboardInteractivity == ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_ON_DEMAND) { g_pInputManager->simulateMouseMovement(); - } else if (!WASEXCLUSIVE && ISEXCLUSIVE) { + } else if (!WAS_KEYBOARD_EXCLUSIVE && KEYBOARD_EXCLUSIVE) { // if now exclusive and not previously g_pSeatManager->setGrab(nullptr); g_pInputManager->releaseAllMouseButtons(); Desktop::focusState()->rawSurfaceFocus(m_wlSurface->resource()); - - const auto LOCAL = g_pInputManager->getMouseCoordsInternal() - Vector2D(m_geometry.x + PMONITOR->m_position.x, m_geometry.y + PMONITOR->m_position.y); - g_pSeatManager->setPointerFocus(m_wlSurface->resource(), LOCAL); - g_pInputManager->m_emptyFocusCursorSet = false; } } - m_interactivity = m_layerSurface->m_current.interactivity; + m_keyboardInteractivity = m_layerSurface->m_current.keyboardInteractivity; g_pHyprRenderer->damageSurface(m_wlSurface->resource(), m_position.x, m_position.y); diff --git a/src/desktop/view/LayerSurface.hpp b/src/desktop/view/LayerSurface.hpp index 3618f3959..ccd4e874b 100644 --- a/src/desktop/view/LayerSurface.hpp +++ b/src/desktop/view/LayerSurface.hpp @@ -58,7 +58,7 @@ namespace Desktop::View { LayerFlags m_flags = LAYER_FLAG_ABOVE_FULLSCREEN; // the header providing the enum type cannot be imported here - int m_interactivity = 0; + int m_keyboardInteractivity = 0; uint32_t m_layer = 0; diff --git a/src/desktop/view/WLSurface.cpp b/src/desktop/view/WLSurface.cpp index af34421d6..31cd093c2 100644 --- a/src/desktop/view/WLSurface.cpp +++ b/src/desktop/view/WLSurface.cpp @@ -206,7 +206,7 @@ bool CWLSurface::keyboardFocusable() const { if (m_view->type() == VIEW_TYPE_WINDOW || m_view->type() == VIEW_TYPE_SUBSURFACE || m_view->type() == VIEW_TYPE_POPUP) return true; if (const auto LS = CLayerSurface::fromView(m_view.lock()); LS && LS->m_layerSurface) - return LS->m_layerSurface->m_current.interactivity != ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_NONE; + return LS->m_layerSurface->m_current.keyboardInteractivity != ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_NONE; return false; } diff --git a/src/desktop/view/window/Window.cpp b/src/desktop/view/window/Window.cpp index d4ae713d2..b11eac9ec 100644 --- a/src/desktop/view/window/Window.cpp +++ b/src/desktop/view/window/Window.cpp @@ -1434,7 +1434,7 @@ void CWindow::mapWindow() { // check LS focus grab const auto PFORCEFOCUS = Desktop::viewState()->query().forceFocus().runWindow(); const auto PLSFROMFOCUS = Desktop::viewState()->query().type(VIEW_TYPE_LAYER_SURFACE).surface(Desktop::focusState()->surface()).runLayer(); - if (PLSFROMFOCUS && PLSFROMFOCUS->m_layerSurface->m_current.interactivity != ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_NONE) + if (PLSFROMFOCUS && PLSFROMFOCUS->m_layerSurface->m_current.keyboardInteractivity != ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_NONE) m_state |= WINDOW_STATE_NO_INITIAL_FOCUS; // emit the hook event here after basic stuff has been initialized diff --git a/src/managers/SeatManager.cpp b/src/managers/SeatManager.cpp index 1d3dbf3cf..56af052b0 100644 --- a/src/managers/SeatManager.cpp +++ b/src/managers/SeatManager.cpp @@ -729,7 +729,7 @@ void CSeatManager::setGrab(SP grab) { m_seatGrab.reset(); - if (parentLayer && parentLayer->m_layerSurface->m_current.interactivity != ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_NONE) { + if (parentLayer && parentLayer->m_layerSurface->m_current.keyboardInteractivity != ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_NONE) { Desktop::focusState()->rawSurfaceFocus(parentLayer->wlSurface()->resource()); } else { static auto PFOLLOWMOUSE = CConfigValue("input:follow_mouse"); @@ -766,7 +766,7 @@ void CSeatManager::setGrab(SP grab) { } if (!refocus && layer) - refocus = layer->m_interactivity == ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_NONE; + refocus = layer->m_keyboardInteractivity == ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_NONE; if (refocus) { auto candidate = Desktop::focusState()->window(); diff --git a/src/managers/input/InputManager.cpp b/src/managers/input/InputManager.cpp index f2f4f61d4..21091f658 100644 --- a/src/managers/input/InputManager.cpp +++ b/src/managers/input/InputManager.cpp @@ -452,20 +452,6 @@ void CInputManager::mouseMoveUnified(uint32_t time, bool refocus, bool mouse, st return; } - // forced above all - if (!g_pInputManager->m_exclusiveLSes.empty() && !PROTO::data->dndActive()) { - if (!foundSurface) - foundSurface = Desktop::viewState()->hitTest().layerPopupSurfaceAt(mouseCoords, &g_pInputManager->m_exclusiveLSes, &surfaceCoords, &pFoundLayerSurface); - - if (!foundSurface) - foundSurface = Desktop::viewState()->hitTest().layerSurfaceAt(mouseCoords, &g_pInputManager->m_exclusiveLSes, &surfaceCoords, &pFoundLayerSurface); - - if (!foundSurface) { - foundSurface = (*g_pInputManager->m_exclusiveLSes.begin())->wlSurface()->resource(); - surfacePos = (*g_pInputManager->m_exclusiveLSes.begin())->position(Desktop::View::IGeometric::GEOMETRIC_GOAL); - } - } - if (!foundSurface) foundSurface = Desktop::viewState()->hitTest().layerPopupSurfaceAt(mouseCoords, PMONITOR, &surfaceCoords, &pFoundLayerSurface); @@ -640,7 +626,7 @@ void CInputManager::mouseMoveUnified(uint32_t time, bool refocus, bool mouse, st if (!refocus && Desktop::focusState()->surface()) { const auto PLS = Desktop::viewState()->query().type(Desktop::View::VIEW_TYPE_LAYER_SURFACE).surface(Desktop::focusState()->surface()).runLayer(); - if (PLS && PLS->m_layerSurface->m_current.interactivity == ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_EXCLUSIVE) + if (PLS && PLS->m_layerSurface->m_current.keyboardInteractivity == ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_EXCLUSIVE) allowKeyboardRefocus = false; } @@ -732,8 +718,8 @@ void CInputManager::mouseMoveUnified(uint32_t time, bool refocus, bool mouse, st Pointer::Cursor::overrideController->unsetOverride(Pointer::Cursor::CURSOR_OVERRIDE_WINDOW_EDGE); } - if (pFoundLayerSurface && (pFoundLayerSurface->m_layerSurface->m_current.interactivity != ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_NONE) && FOLLOWMOUSE != 3 && - (allowKeyboardRefocus || pFoundLayerSurface->m_layerSurface->m_current.interactivity == ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_EXCLUSIVE)) { + if (pFoundLayerSurface && (pFoundLayerSurface->m_layerSurface->m_current.keyboardInteractivity != ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_NONE) && FOLLOWMOUSE != 3 && + (allowKeyboardRefocus || pFoundLayerSurface->m_layerSurface->m_current.keyboardInteractivity == ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_EXCLUSIVE)) { Desktop::focusState()->rawSurfaceFocus(foundSurface); } @@ -1847,7 +1833,7 @@ void CInputManager::refocus(std::optional overridePos) { } bool CInputManager::refocusLastWindow(PHLMONITOR pMonitor) { - if (!m_exclusiveLSes.empty()) { + if (!m_exclusiveKeyboardLSes.empty()) { Log::logger->log(Log::DEBUG, "CInputManager::refocusLastWindow: ignoring, exclusive LS present."); return false; } @@ -1867,14 +1853,14 @@ bool CInputManager::refocusLastWindow(PHLMONITOR pMonitor) { if (!foundSurface) { foundSurface = Desktop::viewState()->hitTest().layerSurfaceAt(g_pInputManager->getMouseCoordsInternal(), &pMonitor->m_layerSurfaceLayers[ZWLR_LAYER_SHELL_V1_LAYER_OVERLAY], &surfaceCoords, &pFoundLayerSurface); - if (pFoundLayerSurface && pFoundLayerSurface->m_interactivity == ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_ON_DEMAND) + if (pFoundLayerSurface && pFoundLayerSurface->m_keyboardInteractivity == ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_ON_DEMAND) foundSurface = nullptr; } if (!foundSurface) { foundSurface = Desktop::viewState()->hitTest().layerSurfaceAt(g_pInputManager->getMouseCoordsInternal(), &pMonitor->m_layerSurfaceLayers[ZWLR_LAYER_SHELL_V1_LAYER_TOP], &surfaceCoords, &pFoundLayerSurface); - if (pFoundLayerSurface && pFoundLayerSurface->m_interactivity == ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_ON_DEMAND) + if (pFoundLayerSurface && pFoundLayerSurface->m_keyboardInteractivity == ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_ON_DEMAND) foundSurface = nullptr; } diff --git a/src/managers/input/InputManager.hpp b/src/managers/input/InputManager.hpp index bc955338d..4a3c410d0 100644 --- a/src/managers/input/InputManager.hpp +++ b/src/managers/input/InputManager.hpp @@ -173,7 +173,7 @@ class CInputManager { std::list m_switches; // Exclusive layer surfaces - std::vector m_exclusiveLSes; + std::vector m_exclusiveKeyboardLSes; // constraints std::vector> m_constraints; diff --git a/src/protocols/LayerShell.cpp b/src/protocols/LayerShell.cpp index ad15c0962..d8837960b 100644 --- a/src/protocols/LayerShell.cpp +++ b/src/protocols/LayerShell.cpp @@ -7,13 +7,13 @@ #include "../output/Monitor.hpp" void CLayerShellResource::SState::reset() { - anchor = 0; - exclusive = 0; - interactivity = ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_NONE; - layer = ZWLR_LAYER_SHELL_V1_LAYER_BOTTOM; - exclusiveEdge = sc(0); - desiredSize = {}; - margin = {0, 0, 0, 0}; + anchor = 0; + exclusive = 0; + keyboardInteractivity = ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_NONE; + layer = ZWLR_LAYER_SHELL_V1_LAYER_BOTTOM; + exclusiveEdge = sc(0); + desiredSize = {}; + margin = {0, 0, 0, 0}; } CLayerShellResource::CLayerShellResource(SP resource_, SP surf_, std::string namespace_, PHLMONITOR pMonitor, @@ -113,8 +113,8 @@ CLayerShellResource::CLayerShellResource(SP resource_, SPsetGetPopup([this](CZwlrLayerSurfaceV1* r, wl_resource* popup_) { diff --git a/src/protocols/LayerShell.hpp b/src/protocols/LayerShell.hpp index ad8bebb00..9e1e240b7 100644 --- a/src/protocols/LayerShell.hpp +++ b/src/protocols/LayerShell.hpp @@ -34,13 +34,13 @@ class CLayerShellResource { void sendClosed(); enum eCommittedState : uint8_t { - STATE_SIZE = (1 << 0), - STATE_ANCHOR = (1 << 1), - STATE_EXCLUSIVE = (1 << 2), - STATE_MARGIN = (1 << 3), - STATE_INTERACTIVITY = (1 << 4), - STATE_LAYER = (1 << 5), - STATE_EDGE = (1 << 6), + STATE_SIZE = (1 << 0), + STATE_ANCHOR = (1 << 1), + STATE_EXCLUSIVE = (1 << 2), + STATE_MARGIN = (1 << 3), + STATE_KEYBOARD_INTERACTIVITY = (1 << 4), + STATE_LAYER = (1 << 5), + STATE_EDGE = (1 << 6), }; struct { @@ -55,10 +55,10 @@ class CLayerShellResource { uint32_t anchor = 0; int32_t exclusive = 0; Vector2D desiredSize; - zwlrLayerSurfaceV1KeyboardInteractivity interactivity = ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_NONE; - zwlrLayerShellV1Layer layer = ZWLR_LAYER_SHELL_V1_LAYER_BOTTOM; - zwlrLayerSurfaceV1Anchor exclusiveEdge = sc(0); - uint32_t committed = 0; + zwlrLayerSurfaceV1KeyboardInteractivity keyboardInteractivity = ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_NONE; + zwlrLayerShellV1Layer layer = ZWLR_LAYER_SHELL_V1_LAYER_BOTTOM; + zwlrLayerSurfaceV1Anchor exclusiveEdge = sc(0); + uint32_t committed = 0; struct { double left = 0, right = 0, top = 0, bottom = 0;