diff --git a/src/controls/ApplicationWindow.qml b/src/controls/ApplicationWindow.qml index f54fa8f5120cdce6387b9de77bb092ed513bc3f6..bb969946e8c3cf2753a145655cbe752220922b2e 100644 --- a/src/controls/ApplicationWindow.qml +++ b/src/controls/ApplicationWindow.qml @@ -149,8 +149,24 @@ Window { */ readonly property real __qwindowsize_max: (1 << 24) - 1 - width: contentArea.__noImplicitWidthGiven ? 0 : Math.min(Math.max(minimumWidth, contentArea.implicitWidth), maximumWidth) - height: contentArea.__noImplicitHeightGiven ? 0 : Math.min(Math.max(minimumHeight, contentArea.implicitHeight + __topBottomMargins), maximumHeight) + /*! \internal */ + property real __width: 0 + Binding { + target: root + property: "__width" + when: root.minimumWidth <= root.maximumWidth + value: Math.max(Math.min(root.maximumWidth, contentArea.implicitWidth), root.minimumWidth) + } + /*! \internal */ + property real __height: 0 + Binding { + target: root + property: "__height" + when: root.minimumHeight <= root.maximumHeight + value: Math.max(Math.min(root.maximumHeight, contentArea.implicitHeight), root.minimumHeight) + } + width: contentArea.__noImplicitWidthGiven ? 0 : __width + height: contentArea.__noImplicitHeightGiven ? 0 : __height minimumWidth: contentArea.__noMinimumWidthGiven ? 0 : contentArea.minimumWidth minimumHeight: contentArea.__noMinimumHeightGiven ? 0 : (contentArea.minimumHeight + __topBottomMargins) diff --git a/tests/auto/controls/data/tst_applicationwindow.qml b/tests/auto/controls/data/tst_applicationwindow.qml index cfe6e0a3389e786ab32fcfd247dced5cfaf477b8..8e35caff19cd1c8e930f70048336b752344786bd 100644 --- a/tests/auto/controls/data/tst_applicationwindow.qml +++ b/tests/auto/controls/data/tst_applicationwindow.qml @@ -168,5 +168,43 @@ TestCase { } } + function test_minimumSizeLargerThan_MaximumSize() { + var test_control = 'import QtQuick 2.1; \ + import QtQuick.Controls 1.1; \ + import QtQuick.Layouts 1.1; \ + ApplicationWindow { \ + minimumWidth: 200; \ + maximumWidth: 200; \ + minimumHeight: 200; \ + maximumHeight: 200; \ + Rectangle { \ + implicitWidth: 1; \ + implicitHeight: 20; \ + } \ + } ' + + var window = Qt.createQmlObject(test_control, container, '') + window.visible = true + wait(0) + // The following two calls will set the min,max range to be invalid + // this should *not* produce a warning + compare(window.height, 200) + window.maximumHeight -= 10 + window.minimumHeight += 10 + // Restore min,max range back to sane values + window.maximumHeight += 20 + compare(window.height, 210) + + // Do the same test for width + compare(window.width, 200) + window.maximumWidth-= 10 + window.minimumWidth+= 10 + // Restore back to sane values + window.maximumWidth += 20 + compare(window.width, 210) + + window.destroy() + } + } }