diff options
| author | Piotr Wierciński <[email protected]> | 2023-02-23 14:34:48 +0100 |
|---|---|---|
| committer | Piotr Wierciński <[email protected]> | 2023-03-05 09:31:06 +0100 |
| commit | 073848f3c44911399b002ab01e3ae2e22bdfa8ff (patch) | |
| tree | ec13c2791689adade455459bd49ac7f63db26fd4 /src/plugins | |
| parent | 9e31631557ea3f99506377ff91a1e15e942f9e88 (diff) | |
wasm: fix respecting minimum size of QWasmWindow
Minimum size of QWasmWindow was not properly enforced.
Make sure that minimumu size constraints are respected
when the QWasmWindow is created, resized manually or
changed by setGeometry().
Fixes: QTBUG-111162
Change-Id: I2984b0836b5b53f9163275153d734cb1d81ef3b6
Reviewed-by: Mikołaj Boc <[email protected]>
Diffstat (limited to 'src/plugins')
| -rw-r--r-- | src/plugins/platforms/wasm/qwasmwindow.cpp | 16 | ||||
| -rw-r--r-- | src/plugins/platforms/wasm/qwasmwindow.h | 1 |
2 files changed, 11 insertions, 6 deletions
diff --git a/src/plugins/platforms/wasm/qwasmwindow.cpp b/src/plugins/platforms/wasm/qwasmwindow.cpp index 9294bb7ab50..9ee3c37f85e 100644 --- a/src/plugins/platforms/wasm/qwasmwindow.cpp +++ b/src/plugins/platforms/wasm/qwasmwindow.cpp @@ -187,14 +187,16 @@ void QWasmWindow::initialize() { QRect rect = windowGeometry(); - constexpr int minSizeBoundForDialogsAndRegularWindows = 100; const auto windowFlags = window()->flags(); - const int systemMinSizeLowerBound = windowFlags.testAnyFlags(Qt::Window | Qt::Dialog) - ? minSizeBoundForDialogsAndRegularWindows - : 0; + const bool shouldRestrictMinSize = + !windowFlags.testFlag(Qt::FramelessWindowHint) && !windowIsPopupType(windowFlags); + const bool isMinSizeUninitialized = window()->minimumSize() == QSize(0, 0); - const QSize minimumSize(std::max(windowMinimumSize().width(), systemMinSizeLowerBound), - std::max(windowMinimumSize().height(), systemMinSizeLowerBound)); + if (shouldRestrictMinSize && isMinSizeUninitialized) + window()->setMinimumSize(QSize(minSizeForRegularWindows, minSizeForRegularWindows)); + + + const QSize minimumSize = windowMinimumSize(); const QSize maximumSize = windowMaximumSize(); const QSize targetSize = !rect.isEmpty() ? rect.size() : minimumSize; @@ -256,6 +258,8 @@ void QWasmWindow::setGeometry(const QRect &rect) QRect result(rect); result.moveTop(std::max(std::min(rect.y(), screenGeometry.bottom()), screenGeometry.y() + margins.top())); + result.setSize( + result.size().expandedTo(windowMinimumSize()).boundedTo(windowMaximumSize())); return result; })(); m_nonClientArea->onClientAreaWidthChange(clientAreaRect.width()); diff --git a/src/plugins/platforms/wasm/qwasmwindow.h b/src/plugins/platforms/wasm/qwasmwindow.h index c233ef81239..c6a4ba2418c 100644 --- a/src/plugins/platforms/wasm/qwasmwindow.h +++ b/src/plugins/platforms/wasm/qwasmwindow.h @@ -92,6 +92,7 @@ public: private: friend class QWasmScreen; + static constexpr auto minSizeForRegularWindows = 100; void invalidate(); bool hasFrame() const; |
