summaryrefslogtreecommitdiff
path: root/src/managers
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
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')
-rw-r--r--src/managers/KeybindManager.cpp2
-rw-r--r--src/managers/XWaylandManager.cpp40
-rw-r--r--src/managers/XWaylandManager.hpp1
3 files changed, 2 insertions, 41 deletions
diff --git a/src/managers/KeybindManager.cpp b/src/managers/KeybindManager.cpp
index e2191bc6..2cb77d21 100644
--- a/src/managers/KeybindManager.cpp
+++ b/src/managers/KeybindManager.cpp
@@ -1914,7 +1914,7 @@ SDispatchResult CKeybindManager::workspaceOpt(std::string args) {
if (PWORKSPACE->m_bDefaultFloating) {
w->m_vRealPosition->setValueAndWarp(SAVEDPOS);
w->m_vRealSize->setValueAndWarp(SAVEDSIZE);
- g_pXWaylandManager->setWindowSize(w, SAVEDSIZE);
+ w->sendWindowSize(SAVEDSIZE);
*w->m_vRealSize = w->m_vRealSize->value() + Vector2D(4, 4);
*w->m_vRealPosition = w->m_vRealPosition->value() - Vector2D(2, 2);
}
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)
diff --git a/src/managers/XWaylandManager.hpp b/src/managers/XWaylandManager.hpp
index 8ce239f6..edbdd243 100644
--- a/src/managers/XWaylandManager.hpp
+++ b/src/managers/XWaylandManager.hpp
@@ -17,7 +17,6 @@ class CHyprXWaylandManager {
void activateWindow(PHLWINDOW, bool);
void getGeometryForWindow(PHLWINDOW, CBox*);
void sendCloseWindow(PHLWINDOW);
- void setWindowSize(PHLWINDOW, Vector2D, bool force = false);
void setWindowFullscreen(PHLWINDOW, bool);
bool shouldBeFloated(PHLWINDOW, bool pending = false);
void checkBorders(PHLWINDOW);