summaryrefslogtreecommitdiff
path: root/src/managers/XWaylandManager.cpp
diff options
context:
space:
mode:
authorVaxry <vaxry@vaxry.net>2025-01-25 20:36:44 +0000
committerVaxry <vaxry@vaxry.net>2025-01-25 20:36:44 +0000
commit445acec2a29adbb30196d8b92f86270a038b7ee5 (patch)
tree1d496f4b04ba4179d94f160a500e4ab4dfadee92 /src/managers/XWaylandManager.cpp
parent45c3787e75323999d2f43b6f83972f4cb11a81f9 (diff)
core: move sendWindowSize off of xwaylandmgr
additionally fixes that one weird x11 issue with floating windows being mis-sized on open
Diffstat (limited to 'src/managers/XWaylandManager.cpp')
-rw-r--r--src/managers/XWaylandManager.cpp40
1 files changed, 1 insertions, 39 deletions
diff --git a/src/managers/XWaylandManager.cpp b/src/managers/XWaylandManager.cpp
index 8956cf3a..ea2a47ea 100644
--- a/src/managers/XWaylandManager.cpp
+++ b/src/managers/XWaylandManager.cpp
@@ -55,7 +55,7 @@ void CHyprXWaylandManager::activateWindow(PHLWINDOW pWindow, bool activate) {
if (pWindow->m_bIsX11) {
if (activate) {
- setWindowSize(pWindow, pWindow->m_vRealSize->value(), true); // update xwayland output pos
+ pWindow->sendWindowSize(pWindow->m_vRealSize->value(), true); // update xwayland output pos
pWindow->m_pXWaylandSurface->setMinimized(false);
if (!pWindow->isX11OverrideRedirect())
@@ -113,44 +113,6 @@ void CHyprXWaylandManager::sendCloseWindow(PHLWINDOW pWindow) {
pWindow->m_pXDGSurface->toplevel->close();
}
-void CHyprXWaylandManager::setWindowSize(PHLWINDOW pWindow, Vector2D size, bool force) {
-
- static auto PXWLFORCESCALEZERO = CConfigValue<Hyprlang::INT>("xwayland:force_zero_scaling");
-
- const auto PMONITOR = pWindow->m_pMonitor.lock();
-
- size = size.clamp(Vector2D{0, 0}, Vector2D{std::numeric_limits<double>::infinity(), std::numeric_limits<double>::infinity()});
-
- // calculate pos
- // TODO: this should be decoupled from setWindowSize IMO
- Vector2D windowPos = pWindow->m_vRealPosition->goal();
-
- if (pWindow->m_bIsX11 && PMONITOR) {
- windowPos -= PMONITOR->vecPosition; // normalize to monitor
- if (*PXWLFORCESCALEZERO)
- windowPos *= PMONITOR->scale; // scale if applicable
- windowPos += PMONITOR->vecXWaylandPosition; // move to correct position for xwayland
- }
-
- if (!force && pWindow->m_vPendingReportedSize == size && (windowPos == pWindow->m_vReportedPosition || !pWindow->m_bIsX11))
- return;
-
- pWindow->m_vReportedPosition = windowPos;
- pWindow->m_vPendingReportedSize = size;
-
- pWindow->m_fX11SurfaceScaledBy = 1.0f;
-
- if (*PXWLFORCESCALEZERO && pWindow->m_bIsX11 && PMONITOR) {
- size *= PMONITOR->scale;
- pWindow->m_fX11SurfaceScaledBy = PMONITOR->scale;
- }
-
- if (pWindow->m_bIsX11)
- pWindow->m_pXWaylandSurface->configure({windowPos, size});
- else if (pWindow->m_pXDGSurface->toplevel)
- pWindow->m_vPendingSizeAcks.emplace_back(pWindow->m_pXDGSurface->toplevel->setSize(size), size.floor());
-}
-
bool CHyprXWaylandManager::shouldBeFloated(PHLWINDOW pWindow, bool pending) {
if (pWindow->m_bIsX11) {
for (const auto& a : pWindow->m_pXWaylandSurface->atoms)