summaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorMikolaj Boc <mikolaj.boc@qt.io>2022-11-17 09:51:36 +0100
committerMikolaj Boc <mikolaj.boc@qt.io>2022-11-18 08:51:18 +0100
commit3b423f0e9e7508e47499b10f2519aede97db436d (patch)
tree470056ae35e483aa6088b54bc332d5c0698d994e /src/plugins
parentf562711c642cba7bed6c96d452437ffc9b25edc4 (diff)
Do not allow an empty rect to become a window rect on WASM
For regular windows, the size should not be allowed to be empty. This emulates system-wide minimum size setting on various operating systems. Change-Id: I515fff8c9bfd14762dcfe88fb923ab10d8edd5c1 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/platforms/wasm/qwasmwindow.cpp23
1 files changed, 14 insertions, 9 deletions
diff --git a/src/plugins/platforms/wasm/qwasmwindow.cpp b/src/plugins/platforms/wasm/qwasmwindow.cpp
index 02298bb4a1..445f5ed809 100644
--- a/src/plugins/platforms/wasm/qwasmwindow.cpp
+++ b/src/plugins/platforms/wasm/qwasmwindow.cpp
@@ -109,15 +109,19 @@ void QWasmWindow::initialize()
{
QRect rect = windowGeometry();
- QPlatformWindow::setGeometry(rect);
-
- const QSize minimumSize = windowMinimumSize();
- if (rect.width() > 0 || rect.height() > 0) {
- rect.setWidth(qBound(1, rect.width(), 2000));
- rect.setHeight(qBound(1, rect.height(), 2000));
- } else if (minimumSize.width() > 0 || minimumSize.height() > 0) {
- rect.setSize(minimumSize);
- }
+ constexpr int minSizeBoundForDialogsAndRegularWindows = 100;
+ const int windowType = window()->flags() & Qt::WindowType_Mask;
+ const int systemMinSizeLowerBound = windowType == Qt::Window || windowType == Qt::Dialog
+ ? minSizeBoundForDialogsAndRegularWindows
+ : 0;
+
+ const QSize minimumSize(std::max(windowMinimumSize().width(), systemMinSizeLowerBound),
+ std::max(windowMinimumSize().height(), systemMinSizeLowerBound));
+ const QSize maximumSize = windowMaximumSize();
+ const QSize targetSize = !rect.isEmpty() ? rect.size() : minimumSize;
+
+ rect.setWidth(qBound(minimumSize.width(), targetSize.width(), maximumSize.width()));
+ rect.setHeight(qBound(minimumSize.width(), targetSize.height(), maximumSize.height()));
setWindowState(window()->windowStates());
setWindowFlags(window()->flags());
@@ -125,6 +129,7 @@ void QWasmWindow::initialize()
if (window()->isTopLevel())
setWindowIcon(window()->icon());
m_normalGeometry = rect;
+ QPlatformWindow::setGeometry(m_normalGeometry);
}
QWasmScreen *QWasmWindow::platformScreen() const