summaryrefslogtreecommitdiff
path: root/src/Compositor.cpp
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2022-10-01 18:25:02 +0100
committervaxerski <43317083+vaxerski@users.noreply.github.com>2022-10-01 18:25:02 +0100
commit355366714eb725d72286a7b6744d20a993ad57e5 (patch)
treee5435157a62057a7b0ae778b310c69e02757ccef /src/Compositor.cpp
parent590fbf808b60baceef3b021050dae4c409121bf5 (diff)
minor OR XWayland fixes
Diffstat (limited to 'src/Compositor.cpp')
-rw-r--r--src/Compositor.cpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/Compositor.cpp b/src/Compositor.cpp
index c61c2582..57a87795 100644
--- a/src/Compositor.cpp
+++ b/src/Compositor.cpp
@@ -548,9 +548,21 @@ CWindow* CCompositor::vectorToWindowIdeal(const Vector2D& pos) {
// first loop over floating cuz they're above, m_lWindows should be sorted bottom->top, for tiled it doesn't matter.
for (auto w = m_vWindows.rbegin(); w != m_vWindows.rend(); w++) {
wlr_box box = {(*w)->m_vRealPosition.vec().x, (*w)->m_vRealPosition.vec().y, (*w)->m_vRealSize.vec().x, (*w)->m_vRealSize.vec().y};
- if ((*w)->m_bIsFloating && (*w)->m_bIsMapped && isWorkspaceVisible((*w)->m_iWorkspaceID) && !(*w)->m_bHidden && !(*w)->m_bX11ShouldntFocus && !(*w)->m_bPinned) {
- if (wlr_box_contains_point(&box, m_sWLRCursor->x, m_sWLRCursor->y))
+ if ((*w)->m_bIsFloating && (*w)->m_bIsMapped && isWorkspaceVisible((*w)->m_iWorkspaceID) && !(*w)->m_bHidden && !(*w)->m_bPinned) {
+ // OR windows should add focus to parent
+ if ((*w)->m_bX11ShouldntFocus && (*w)->m_iX11Type != 2)
+ continue;
+
+ if (wlr_box_contains_point(&box, m_sWLRCursor->x, m_sWLRCursor->y)) {
+
+ if ((*w)->m_iX11Type == 2) {
+ // Override Redirect
+ return g_pCompositor->m_pLastWindow; // we kinda trick everything here.
+ // TODO: this is wrong, we should focus the parent, but idk how to get it considering it's nullptr in most cases.
+ }
+
return w->get();
+ }
if (!(*w)->m_bIsX11) {
wlr_surface* resultSurf = nullptr;