summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2022-12-17 22:35:47 +0000
committervaxerski <43317083+vaxerski@users.noreply.github.com>2022-12-17 22:35:51 +0000
commit0f3214714f237afcccb5d6a1bd3cdb5b26ddbcfb (patch)
tree2871f4115a5f8030bbe23bc5146a39dbf201a8d9 /src
parente7940569dde86d92e25ceb07824f6853515ca0b5 (diff)
respect ls protocol by forcing kb focus to kb interactive top and overlay
Diffstat (limited to 'src')
-rw-r--r--src/Compositor.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/Compositor.cpp b/src/Compositor.cpp
index b0714e5b..c345f0e8 100644
--- a/src/Compositor.cpp
+++ b/src/Compositor.cpp
@@ -704,7 +704,7 @@ wlr_surface* CCompositor::vectorWindowToSurface(const Vector2D& pos, CWindow* pW
double subx, suby;
// calc for oversized windows... fucking bullshit, again.
- wlr_box geom;
+ wlr_box geom;
wlr_xdg_surface_get_geometry(pWindow->m_uSurface.xdg, &geom);
const auto PFOUND = wlr_xdg_surface_surface_at(PSURFACE, pos.x - pWindow->m_vRealPosition.vec().x + geom.x, pos.y - pWindow->m_vRealPosition.vec().y + geom.y, &subx, &suby);
@@ -908,6 +908,14 @@ wlr_surface* CCompositor::vectorToLayerSurface(const Vector2D& pos, std::vector<
SURFACEAT = (*it)->layerSurface->surface;
}
+ if ((*it)->layerSurface->current.keyboard_interactive && (*it)->layer >= ZWLR_LAYER_SHELL_V1_LAYER_TOP) {
+ if (!SURFACEAT)
+ SURFACEAT = (*it)->layerSurface->surface;
+
+ *ppLayerSurfaceFound = it->get();
+ return SURFACEAT;
+ }
+
if (SURFACEAT) {
*ppLayerSurfaceFound = it->get();
return SURFACEAT;
@@ -1682,7 +1690,7 @@ void CCompositor::moveWorkspaceToMonitor(CWorkspace* pWorkspace, CMonitor* pMoni
const bool SWITCHINGISACTIVE = POLDMON->activeWorkspace == pWorkspace->m_iID;
// fix old mon
- int nextWorkspaceOnMonitorID = -1;
+ int nextWorkspaceOnMonitorID = -1;
for (auto& w : m_vWorkspaces) {
if (w->m_iMonitorID == POLDMON->ID && w->m_iID != pWorkspace->m_iID) {
nextWorkspaceOnMonitorID = w->m_iID;