From d1f1643a8f2170ea02c0018e8fa126ed2545b83b Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Sat, 4 Dec 2021 23:38:31 +0100 Subject: [PATCH] fix some default floating windows crashing --- src/events/events.cpp | 9 ++++++--- src/windowManager.cpp | 5 ++++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/events/events.cpp b/src/events/events.cpp index 5d85e06..c5e6b06 100644 --- a/src/events/events.cpp +++ b/src/events/events.cpp @@ -129,10 +129,10 @@ CWindow* Events::remapFloatingWindow(int windowID, int forcemonitor) { window.setDefaultSize(Vector2D(g_pWindowManager->Screen->width_in_pixels / 2.f, g_pWindowManager->Screen->height_in_pixels / 2.f)); } - if (window.getDefaultSize().x < 20 || window.getDefaultSize().y < 20) { + if (window.getDefaultSize().x < 40 || window.getDefaultSize().y < 40) { // min size - window.setDefaultSize(Vector2D( std::clamp(window.getDefaultSize().x, (double)20, (double)99999), - std::clamp(window.getDefaultSize().y, (double)20, (double)99999))); + window.setDefaultSize(Vector2D(std::clamp(window.getDefaultSize().x, (double)40, (double)99999), + std::clamp(window.getDefaultSize().y, (double)40, (double)99999))); } if (nextWindowCentered) { @@ -172,6 +172,9 @@ CWindow* Events::remapFloatingWindow(int windowID, int forcemonitor) { // // + window.setSize(window.getDefaultSize()); + window.setPosition(window.getDefaultPosition()); + // Also sets the old one g_pWindowManager->calculateNewWindowParams(&window); diff --git a/src/windowManager.cpp b/src/windowManager.cpp index f70f01e..4a898a3 100644 --- a/src/windowManager.cpp +++ b/src/windowManager.cpp @@ -681,7 +681,6 @@ void CWindowManager::applyRoundedCornersToWindow(CWindow* pWindow) { } void CWindowManager::setEffectiveSizePosUsingConfig(CWindow* pWindow) { - if (!pWindow || pWindow->getIsFloating()) return; @@ -907,6 +906,10 @@ void CWindowManager::calculateNewFloatingWindow(CWindow* pWindow) { pWindow->setPosition(pWindow->getEffectivePosition() + Vector2D(3,3)); pWindow->setSize(pWindow->getEffectiveSize() - Vector2D(6, 6)); + // min size + pWindow->setSize(Vector2D(std::clamp(pWindow->getSize().x, (double)40, (double)99999), + std::clamp(pWindow->getSize().y, (double)40, (double)99999))); + pWindow->setEffectivePosition(pWindow->getPosition() + Vector2D(10, 10)); pWindow->setEffectiveSize(pWindow->getSize());