respect ls protocol by forcing kb focus to kb interactive top and overlay

This commit is contained in:
vaxerski 2022-12-17 22:35:47 +00:00
parent e7940569dd
commit 0f3214714f

View file

@ -704,7 +704,7 @@ wlr_surface* CCompositor::vectorWindowToSurface(const Vector2D& pos, CWindow* pW
double subx, suby; double subx, suby;
// calc for oversized windows... fucking bullshit, again. // calc for oversized windows... fucking bullshit, again.
wlr_box geom; wlr_box geom;
wlr_xdg_surface_get_geometry(pWindow->m_uSurface.xdg, &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); 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; 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) { if (SURFACEAT) {
*ppLayerSurfaceFound = it->get(); *ppLayerSurfaceFound = it->get();
return SURFACEAT; return SURFACEAT;
@ -1682,7 +1690,7 @@ void CCompositor::moveWorkspaceToMonitor(CWorkspace* pWorkspace, CMonitor* pMoni
const bool SWITCHINGISACTIVE = POLDMON->activeWorkspace == pWorkspace->m_iID; const bool SWITCHINGISACTIVE = POLDMON->activeWorkspace == pWorkspace->m_iID;
// fix old mon // fix old mon
int nextWorkspaceOnMonitorID = -1; int nextWorkspaceOnMonitorID = -1;
for (auto& w : m_vWorkspaces) { for (auto& w : m_vWorkspaces) {
if (w->m_iMonitorID == POLDMON->ID && w->m_iID != pWorkspace->m_iID) { if (w->m_iMonitorID == POLDMON->ID && w->m_iID != pWorkspace->m_iID) {
nextWorkspaceOnMonitorID = w->m_iID; nextWorkspaceOnMonitorID = w->m_iID;