diff options
author | Shawn Rutledge <shawn.rutledge@digia.com> | 2016-05-10 08:36:58 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2016-05-10 17:16:22 +0000 |
commit | 0e00f9fa1cbdbdd2128f2ca31172d88f701ecb59 (patch) | |
tree | b123d2f46fc7894da5b632178a67dc8efd683254 | |
parent | 57a7bc73545b137dccc098bc07aeaf9dd9bf8207 (diff) | |
download | qtquickcontrols-0e00f9fa1cbdbdd2128f2ca31172d88f701ecb59.tar.gz |
Dialogs: enforce changes in minimum size
On OS X, if visible: true is declared, the dialog can be shown before
the changes in 10f0ae7c571b7e0de41d5fdc5627db6a1ddeb926 are able to
set the minimumWidth/Height properties. QWindow::setMinimumWidth()
also does not force the window to be wider if it is already shown.
Task-number: QTBUG-49058
Change-Id: Id87d92072904555639e1695851d908550d22fe86
Reviewed-by: Alberto Mardegan <mardy@users.sourceforge.net>
Reviewed-by: Nikita Krupenko <krnekit@gmail.com>
Reviewed-by: Liang Qi <liang.qi@qt.io>
-rw-r--r-- | src/dialogs/qquickabstractdialog.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/dialogs/qquickabstractdialog.cpp b/src/dialogs/qquickabstractdialog.cpp index 874b9be0..6326300e 100644 --- a/src/dialogs/qquickabstractdialog.cpp +++ b/src/dialogs/qquickabstractdialog.cpp @@ -135,7 +135,7 @@ void QQuickAbstractDialog::setVisible(bool v) m_dialogWindow->setMinimumSize(minSize); connect(win, SIGNAL(widthChanged(int)), this, SLOT(windowGeometryChanged())); connect(win, SIGNAL(heightChanged(int)), this, SLOT(windowGeometryChanged())); - qCDebug(lcWindow) << "created window" << win; + qCDebug(lcWindow) << "created window" << win << "with min size" << win->minimumSize() << "geometry" << win->geometry(); } if (!m_dialogWindow) { @@ -279,16 +279,21 @@ void QQuickAbstractDialog::windowGeometryChanged() void QQuickAbstractDialog::minimumWidthChanged() { qreal min = m_contentItem->property("minimumWidth").toReal(); + qreal implicitOrMin = qMax(m_contentItem->implicitWidth(), min); qCDebug(lcWindow) << "content implicitWidth" << m_contentItem->implicitWidth() << "minimumWidth" << min; - m_dialogWindow->setMinimumWidth(qMax(m_contentItem->implicitWidth(), min)); + if (m_dialogWindow->width() < implicitOrMin) + m_dialogWindow->setWidth(implicitOrMin); + m_dialogWindow->setMinimumWidth(implicitOrMin); } void QQuickAbstractDialog::minimumHeightChanged() { qreal min = m_contentItem->property("minimumHeight").toReal(); + qreal implicitOrMin = qMax(m_contentItem->implicitHeight(), min); qCDebug(lcWindow) << "content implicitHeight" << m_contentItem->implicitHeight() << "minimumHeight" << min; - m_dialogWindow->setMinimumHeight(qMax(m_contentItem->implicitHeight(), - m_contentItem->property("minimumHeight").toReal())); + if (m_dialogWindow->height() < implicitOrMin) + m_dialogWindow->setHeight(implicitOrMin); + m_dialogWindow->setMinimumHeight(implicitOrMin); } void QQuickAbstractDialog::implicitHeightChanged() |