summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/dialogs/DefaultColorDialog.qml3
-rw-r--r--src/dialogs/DefaultDialogWrapper.qml2
-rw-r--r--src/dialogs/DefaultFileDialog.qml5
-rw-r--r--src/dialogs/DefaultFontDialog.qml5
-rw-r--r--src/dialogs/DefaultMessageDialog.qml2
-rw-r--r--src/dialogs/qquickabstractdialog.cpp19
-rw-r--r--src/dialogs/qquickabstractdialog_p.h2
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);