mirror of
https://github.com/hyprwm/Hyprland
synced 2024-12-23 09:29:49 +01:00
minor OR XWayland fixes
This commit is contained in:
parent
590fbf808b
commit
355366714e
2 changed files with 16 additions and 2 deletions
|
@ -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.
|
// 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++) {
|
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};
|
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 ((*w)->m_bIsFloating && (*w)->m_bIsMapped && isWorkspaceVisible((*w)->m_iWorkspaceID) && !(*w)->m_bHidden && !(*w)->m_bPinned) {
|
||||||
if (wlr_box_contains_point(&box, m_sWLRCursor->x, m_sWLRCursor->y))
|
// 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();
|
return w->get();
|
||||||
|
}
|
||||||
|
|
||||||
if (!(*w)->m_bIsX11) {
|
if (!(*w)->m_bIsX11) {
|
||||||
wlr_surface* resultSurf = nullptr;
|
wlr_surface* resultSurf = nullptr;
|
||||||
|
|
|
@ -272,6 +272,8 @@ void Events::listener_mapWindow(void* owner, void* data) {
|
||||||
// set the pseudo size to the GOAL of our current size
|
// set the pseudo size to the GOAL of our current size
|
||||||
// because the windows are animated on RealSize
|
// because the windows are animated on RealSize
|
||||||
PWINDOW->m_vPseudoSize = PWINDOW->m_vRealSize.goalv();
|
PWINDOW->m_vPseudoSize = PWINDOW->m_vRealSize.goalv();
|
||||||
|
|
||||||
|
g_pCompositor->moveWindowToTop(PWINDOW);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
g_pLayoutManager->getCurrentLayout()->onWindowCreated(PWINDOW);
|
g_pLayoutManager->getCurrentLayout()->onWindowCreated(PWINDOW);
|
||||||
|
|
Loading…
Reference in a new issue