From cd37a1533e0e86fffdd333e18bab0bb730c1dc25 Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Fri, 5 Aug 2022 18:10:59 +0200 Subject: reject tiling windows that do not meet the max size requirement --- src/managers/XWaylandManager.cpp | 14 +++++++++++++- src/managers/XWaylandManager.hpp | 1 + 2 files changed, 14 insertions(+), 1 deletion(-) (limited to 'src/managers') diff --git a/src/managers/XWaylandManager.cpp b/src/managers/XWaylandManager.cpp index 11e32917..5688a849 100644 --- a/src/managers/XWaylandManager.cpp +++ b/src/managers/XWaylandManager.cpp @@ -230,4 +230,16 @@ void CHyprXWaylandManager::setWindowFullscreen(CWindow* pWindow, bool fullscreen if (pWindow->m_phForeignToplevel) wlr_foreign_toplevel_handle_v1_set_fullscreen(pWindow->m_phForeignToplevel, fullscreen); -} \ No newline at end of file +} + +Vector2D CHyprXWaylandManager::getMaxSizeForWindow(CWindow* pWindow) { + auto MAXSIZE = pWindow->m_bIsX11 ? Vector2D(pWindow->m_uSurface.xwayland->size_hints->max_width, pWindow->m_uSurface.xwayland->size_hints->max_height) + : Vector2D(pWindow->m_uSurface.xdg->toplevel->current.max_width, pWindow->m_uSurface.xdg->toplevel->current.max_height); + + if (MAXSIZE.x < 5) + MAXSIZE.x = 99999; + if (MAXSIZE.y < 5) + MAXSIZE.y = 99999; + + return MAXSIZE; +} diff --git a/src/managers/XWaylandManager.hpp b/src/managers/XWaylandManager.hpp index 561865e4..3d8f57f2 100644 --- a/src/managers/XWaylandManager.hpp +++ b/src/managers/XWaylandManager.hpp @@ -24,6 +24,7 @@ public: bool shouldBeFloated(CWindow*); void moveXWaylandWindow(CWindow*, const Vector2D&); void checkBorders(CWindow*); + Vector2D getMaxSizeForWindow(CWindow*); }; inline std::unique_ptr g_pXWaylandManager; \ No newline at end of file -- cgit v1.2.3