diff options
author | Mikolaj Boc <mikolaj.boc@qt.io> | 2022-11-17 09:51:36 +0100 |
---|---|---|
committer | Mikolaj Boc <mikolaj.boc@qt.io> | 2022-11-18 08:51:18 +0100 |
commit | 3b423f0e9e7508e47499b10f2519aede97db436d (patch) | |
tree | 470056ae35e483aa6088b54bc332d5c0698d994e /src | |
parent | f562711c642cba7bed6c96d452437ffc9b25edc4 (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')
-rw-r--r-- | src/plugins/platforms/wasm/qwasmwindow.cpp | 23 |
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 |