From 86bb95c125563300a50973ab50eec44c2943b9d1 Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Sun, 24 Apr 2022 17:42:59 +0200 Subject: [PATCH] some fixes for xwayland windows and focus --- src/layout/DwindleLayout.cpp | 7 +++---- src/managers/InputManager.cpp | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/layout/DwindleLayout.cpp b/src/layout/DwindleLayout.cpp index a3fdeecb..8a6bd6d9 100644 --- a/src/layout/DwindleLayout.cpp +++ b/src/layout/DwindleLayout.cpp @@ -449,6 +449,7 @@ void CHyprDwindleLayout::onMouseMove(const Vector2D& mousePos) { if (g_pInputManager->dragButton == BTN_LEFT) { DRAGGINGWINDOW->m_vRealPosition.setValueAndWarp(m_vBeginDragPositionXY + DELTA); + g_pXWaylandManager->setWindowSize(DRAGGINGWINDOW, DRAGGINGWINDOW->m_vRealSize.goalv()); } else { if (DRAGGINGWINDOW->m_bIsFloating) { DRAGGINGWINDOW->m_vRealSize.setValueAndWarp(m_vBeginDragSizeXY + DELTA); @@ -601,8 +602,6 @@ void CHyprDwindleLayout::fullscreenRequestForWindow(CWindow* pWindow) { // get back its' dimensions from position and size pWindow->m_vRealPosition = pWindow->m_vPosition; pWindow->m_vRealSize = pWindow->m_vSize; - - g_pXWaylandManager->setWindowSize(pWindow, pWindow->m_vRealSize.goalv()); } } else { // if it now got fullscreen, make it fullscreen @@ -616,10 +615,10 @@ void CHyprDwindleLayout::fullscreenRequestForWindow(CWindow* pWindow) { // apply new pos and size being monitors' box pWindow->m_vRealPosition = PMONITOR->vecPosition; pWindow->m_vRealSize = PMONITOR->vecSize; - - g_pXWaylandManager->setWindowSize(pWindow, pWindow->m_vRealSize.goalv()); } + g_pXWaylandManager->setWindowSize(pWindow, pWindow->m_vRealSize.goalv()); + g_pCompositor->moveWindowToTop(pWindow); // we need to fix XWayland windows by sending them to NARNIA diff --git a/src/managers/InputManager.cpp b/src/managers/InputManager.cpp index 29f64f56..2b59ea51 100644 --- a/src/managers/InputManager.cpp +++ b/src/managers/InputManager.cpp @@ -116,7 +116,7 @@ void CInputManager::mouseMoveUnified(uint32_t time, bool refocus) { if (time) wlr_idle_notify_activity(g_pCompositor->m_sWLRIdle, g_pCompositor->m_sSeat.seat); - Vector2D surfaceLocal = surfacePos == Vector2D(-1337, -1337) ? surfaceCoords : Vector2D(g_pCompositor->m_sWLRCursor->x, g_pCompositor->m_sWLRCursor->y) - surfacePos; + Vector2D surfaceLocal = surfacePos == Vector2D(-1337, -1337) ? surfaceCoords : mouseCoords - surfacePos; if (pFoundWindow) { if (g_pConfigManager->getInt("input:follow_mouse") == 0 && !refocus) {