diff options
-rw-r--r-- | src/dialogs/DefaultColorDialog.qml | 3 | ||||
-rw-r--r-- | src/dialogs/DefaultDialogWrapper.qml | 2 | ||||
-rw-r--r-- | src/dialogs/DefaultFileDialog.qml | 5 | ||||
-rw-r--r-- | src/dialogs/DefaultFontDialog.qml | 5 | ||||
-rw-r--r-- | src/dialogs/DefaultMessageDialog.qml | 2 | ||||
-rw-r--r-- | src/dialogs/qquickabstractdialog.cpp | 19 | ||||
-rw-r--r-- | src/dialogs/qquickabstractdialog_p.h | 2 |
7 files changed, 28 insertions, 10 deletions
diff --git a/src/dialogs/DefaultColorDialog.qml b/src/dialogs/DefaultColorDialog.qml index 6cd1eda9..62bc279c 100644 --- a/src/dialogs/DefaultColorDialog.qml +++ b/src/dialogs/DefaultColorDialog.qml @@ -61,8 +61,7 @@ AbstractColorDialog { Rectangle { id: content - property int maxSize: 0.9 * Math.min(Screen.desktopAvailableWidth, Screen.desktopAvailableHeight) - implicitHeight: Math.min(maxSize, Screen.pixelDensity * (usePaletteMap ? 100 : 50)) + implicitHeight: Math.min(root.__maximumDimension, Screen.pixelDensity * (usePaletteMap ? 100 : 50)) implicitWidth: usePaletteMap ? implicitHeight - bottomMinHeight : implicitHeight * 1.5 color: palette.window focus: root.visible diff --git a/src/dialogs/DefaultDialogWrapper.qml b/src/dialogs/DefaultDialogWrapper.qml index a1024900..c5e8aa34 100644 --- a/src/dialogs/DefaultDialogWrapper.qml +++ b/src/dialogs/DefaultDialogWrapper.qml @@ -58,7 +58,7 @@ AbstractDialog { property real minimumHeight: implicitHeight property real minimumWidth: Screen.pixelDensity * 50 implicitHeight: defaultContentItem.implicitHeight + spacing + outerSpacing * 2 + buttonsRight.implicitHeight - implicitWidth: Math.min(Screen.desktopAvailableWidth * 0.9, Math.max( + implicitWidth: Math.min(root.maximumDimension, Math.max( defaultContentItem.implicitWidth, buttonsRowImplicitWidth, Screen.pixelDensity * 50) + outerSpacing * 2); color: palette.window focus: root.visible diff --git a/src/dialogs/DefaultFileDialog.qml b/src/dialogs/DefaultFileDialog.qml index feb31c4d..99623d62 100644 --- a/src/dialogs/DefaultFileDialog.qml +++ b/src/dialogs/DefaultFileDialog.qml @@ -120,10 +120,9 @@ AbstractFileDialog { } Rectangle { - property int maxSize: Math.min(Screen.desktopAvailableWidth, Screen.desktopAvailableHeight) - implicitWidth: Math.min(maxSize, Math.max(Screen.pixelDensity * 100, splitter.implicitWidth)) - implicitHeight: Math.min(maxSize, Screen.pixelDensity * 80) id: window + implicitWidth: Math.min(root.__maximumDimension, Math.max(Screen.pixelDensity * 100, splitter.implicitWidth)) + implicitHeight: Math.min(root.__maximumDimension, Screen.pixelDensity * 80) color: root.palette.window Binding { diff --git a/src/dialogs/DefaultFontDialog.qml b/src/dialogs/DefaultFontDialog.qml index 4bd4a1be..26f92466 100644 --- a/src/dialogs/DefaultFontDialog.qml +++ b/src/dialogs/DefaultFontDialog.qml @@ -58,9 +58,8 @@ AbstractFontDialog { id: content SystemPalette { id: palette } - property int maxSize: Math.min(Screen.desktopAvailableWidth, Screen.desktopAvailableHeight) - implicitWidth: Math.min(maxSize, Math.max(Screen.pixelDensity * 60, mainLayout.implicitWidth + outerSpacing * 2)) - implicitHeight: Math.min(maxSize, Math.max(Screen.pixelDensity * 40, mainLayout.implicitHeight + outerSpacing * 2)) + implicitWidth: Math.min(root.__maximumDimension, Math.max(Screen.pixelDensity * 60, mainLayout.implicitWidth + outerSpacing * 2)) + implicitHeight: Math.min(root.__maximumDimension, Math.max(Screen.pixelDensity * 40, mainLayout.implicitHeight + outerSpacing * 2)) property real spacing: 6 property real outerSpacing: 12 color: palette.window diff --git a/src/dialogs/DefaultMessageDialog.qml b/src/dialogs/DefaultMessageDialog.qml index 6caa5b0a..0e6e3a6a 100644 --- a/src/dialogs/DefaultMessageDialog.qml +++ b/src/dialogs/DefaultMessageDialog.qml @@ -55,7 +55,7 @@ AbstractMessageDialog { property real buttonsRowImplicitWidth: Screen.pixelDensity * 50 implicitHeight: contentColumn.implicitHeight + outerSpacing * 2 onImplicitHeightChanged: root.height = implicitHeight - implicitWidth: Math.min(Screen.desktopAvailableWidth * 0.9, Math.max( + implicitWidth: Math.min(root.__maximumDimension, Math.max( mainText.implicitWidth, buttonsRowImplicitWidth) + outerSpacing * 2); onImplicitWidthChanged: root.width = implicitWidth color: palette.window diff --git a/src/dialogs/qquickabstractdialog.cpp b/src/dialogs/qquickabstractdialog.cpp index 1883b348..b8f4e18c 100644 --- a/src/dialogs/qquickabstractdialog.cpp +++ b/src/dialogs/qquickabstractdialog.cpp @@ -295,6 +295,25 @@ int QQuickAbstractDialog::height() const return m_sizeAspiration.height(); } +/* + A non-fullscreen dialog is not allowed to be too large + to fit on the screen in either orientation (portrait or landscape). + That way on platforms which can do rotation, the dialog does not + change its size when the screen is rotated. So the value returned + here is the maximum for both width and height. We need to know + at init time, not wait until the dialog's content item is shown in + a window so that the desktopAvailableWidth and Height will be valid + in the Screen attached property. And to allow space for window borders, + the max is further reduced by 10%. +*/ +int QQuickAbstractDialog::__maximumDimension() const +{ + QScreen *screen = QGuiApplication::primaryScreen(); + return (screen ? + qMin(screen->availableVirtualGeometry().width(), screen->availableVirtualGeometry().height()) : + 480) * 9 / 10; +} + void QQuickAbstractDialog::setX(int arg) { m_hasAspiredPosition = true; diff --git a/src/dialogs/qquickabstractdialog_p.h b/src/dialogs/qquickabstractdialog_p.h index cbf032a5..164168fe 100644 --- a/src/dialogs/qquickabstractdialog_p.h +++ b/src/dialogs/qquickabstractdialog_p.h @@ -66,6 +66,7 @@ class QQuickAbstractDialog : public QObject Q_PROPERTY(int y READ y WRITE setY NOTIFY geometryChanged) Q_PROPERTY(int width READ width WRITE setWidth NOTIFY geometryChanged) Q_PROPERTY(int height READ height WRITE setHeight NOTIFY geometryChanged) + Q_PROPERTY(int __maximumDimension READ __maximumDimension CONSTANT) public: QQuickAbstractDialog(QObject *parent = 0); @@ -80,6 +81,7 @@ public: int y() const; int width() const; int height() const; + int __maximumDimension() const; virtual void setVisible(bool v); virtual void setModality(Qt::WindowModality m); |