From 10f0ae7c571b7e0de41d5fdc5627db6a1ddeb926 Mon Sep 17 00:00:00 2001 From: Alberto Mardegan Date: Thu, 12 Nov 2015 01:56:30 +0200 Subject: Dialog: allow proper resize and default size for content Currently Dialog use implicitly positioned items as content. This makes impossible to use item, that can be properly resized with change of dialog window size and has proper default size (set implicit width and height). This change made it use implicit size if there is one item or fallback to previous algorithm, that use childrenRect for explicitly sized and positioned items, so it won't break behavior of the existing applications. [ChangeLog][Dialog] Proper resize and default size for content Task-number: QTBUG-49058 Change-Id: I7fa4da7d5fd39d47f60ba9f43c88f78e75739b0a Initial-patch-by: Nikita Krupenko Reviewed-by: Nikita Krupenko Reviewed-by: Shawn Rutledge --- src/dialogs/DefaultDialogWrapper.qml | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) (limited to 'src/dialogs') diff --git a/src/dialogs/DefaultDialogWrapper.qml b/src/dialogs/DefaultDialogWrapper.qml index a34ee97d..531b5c02 100644 --- a/src/dialogs/DefaultDialogWrapper.qml +++ b/src/dialogs/DefaultDialogWrapper.qml @@ -50,13 +50,14 @@ AbstractDialog { id: content property real spacing: 6 property real outerSpacing: 12 - property real buttonsRowImplicitWidth: minimumWidth + property real buttonsRowImplicitHeight: 0 + property real buttonsRowImplicitWidth: Screen.pixelDensity * 50 property bool buttonsInSingleRow: defaultContentItem.width >= buttonsRowImplicitWidth property real minimumHeight: implicitHeight - property real minimumWidth: Screen.pixelDensity * 50 - implicitHeight: defaultContentItem.implicitHeight + spacing + outerSpacing * 2 + buttonsRight.implicitHeight + property real minimumWidth: implicitWidth + implicitHeight: defaultContentItem.implicitHeight + spacing + outerSpacing * 2 + Math.max(buttonsRight.implicitHeight, buttonsRowImplicitHeight) implicitWidth: Math.min(root.__maximumDimension, Math.max( - defaultContentItem.implicitWidth, buttonsRowImplicitWidth, Screen.pixelDensity * 50) + outerSpacing * 2); + defaultContentItem.implicitWidth, buttonsRowImplicitWidth, Screen.pixelDensity * 50) + outerSpacing * 2) color: palette.window Keys.onPressed: { event.accepted = true @@ -82,9 +83,14 @@ AbstractDialog { left: parent.left right: parent.right top: parent.top + bottom: buttonsLeft.implicitHeight ? buttonsLeft.top : buttonsRight.top margins: content.outerSpacing + bottomMargin: buttonsLeft.implicitHeight + buttonsRight.implicitHeight > 0 ? content.spacing : 0 } - implicitHeight: childrenRect.height + implicitHeight: children.length === 1 ? children[0].implicitHeight + : (children.length ? childrenRect.height : 0) + implicitWidth: children.length === 1 ? children[0].implicitWidth + : (children.length ? childrenRect.width : 0) } Flow { @@ -135,7 +141,9 @@ AbstractDialog { function setupButtons() { buttonsLeftRepeater.model = root.__standardButtonsLeftModel() buttonsRightRepeater.model = root.__standardButtonsRightModel() - if (buttonsLeftRepeater.count + buttonsRightRepeater.count < 2) + if (buttonsRightRepeater.model && buttonsRightRepeater.model.length > 0) + content.buttonsRowImplicitHeight = buttonsRight.visibleChildren[0].implicitHeight + if (buttonsLeftRepeater.count + buttonsRightRepeater.count < 1) return; var calcWidth = 0; @@ -150,7 +158,7 @@ AbstractDialog { for (var i = 0; i < buttonsRight.visibleChildren.length; ++i) calculateForButton(i, buttonsRight.visibleChildren[i]) - content.minimumWidth = calcWidth + content.outerSpacing * 2 + content.minimumWidth = Math.max(calcWidth + content.outerSpacing * 2, content.implicitWidth) for (i = 0; i < buttonsLeft.visibleChildren.length; ++i) calculateForButton(i, buttonsLeft.visibleChildren[i]) content.buttonsRowImplicitWidth = calcWidth + content.spacing -- cgit v1.2.1 From d1f118d8b6811b08d2057e110dc24d3292736dd6 Mon Sep 17 00:00:00 2001 From: Topi Reinio Date: Fri, 22 Apr 2016 11:25:23 +0200 Subject: Doc: Rename conflicting group A group name 'dialogs' conflicts with a page elsewhere in the documentation. Renamed to be more specific, and removed the \group command - it's not required for generating annotated lists, and was not linked to. Change-Id: I571702ece13d5eb57a984cec47811b7d58cc0121 Reviewed-by: Shawn Rutledge Reviewed-by: Venugopal Shivashankar --- src/dialogs/doc/src/qtquickdialogs-index.qdoc | 8 +------- src/dialogs/qquickdialog.cpp | 2 +- src/dialogs/qquickplatformcolordialog.cpp | 2 +- src/dialogs/qquickplatformfiledialog.cpp | 2 +- src/dialogs/qquickplatformfontdialog.cpp | 2 +- src/dialogs/qquickplatformmessagedialog.cpp | 2 +- 6 files changed, 6 insertions(+), 12 deletions(-) (limited to 'src/dialogs') diff --git a/src/dialogs/doc/src/qtquickdialogs-index.qdoc b/src/dialogs/doc/src/qtquickdialogs-index.qdoc index b7a8e671..a0181097 100644 --- a/src/dialogs/doc/src/qtquickdialogs-index.qdoc +++ b/src/dialogs/doc/src/qtquickdialogs-index.qdoc @@ -25,12 +25,6 @@ ** ****************************************************************************/ -/*! - \group dialogs - \brief Dialog components - \title Dialogs -*/ - /*! \page qtquickdialogs-index.html \title Qt Quick Dialogs @@ -41,7 +35,7 @@ \section1 Dialogs - \annotatedlist dialogs + \annotatedlist qtquickdialogs \section1 Related information diff --git a/src/dialogs/qquickdialog.cpp b/src/dialogs/qquickdialog.cpp index 6a4a0721..8e92810c 100644 --- a/src/dialogs/qquickdialog.cpp +++ b/src/dialogs/qquickdialog.cpp @@ -46,7 +46,7 @@ QT_BEGIN_NAMESPACE \qmltype Dialog \instantiates QQuickDialog \inqmlmodule QtQuick.Dialogs - \ingroup dialogs + \ingroup qtquickdialogs \brief A generic QtQuick dialog wrapper with standard buttons. \since 5.3 diff --git a/src/dialogs/qquickplatformcolordialog.cpp b/src/dialogs/qquickplatformcolordialog.cpp index e98bc03a..f1011769 100644 --- a/src/dialogs/qquickplatformcolordialog.cpp +++ b/src/dialogs/qquickplatformcolordialog.cpp @@ -48,7 +48,7 @@ QT_BEGIN_NAMESPACE \qmltype ColorDialog \instantiates QQuickPlatformColorDialog \inqmlmodule QtQuick.Dialogs - \ingroup dialogs + \ingroup qtquickdialogs \brief Dialog component for choosing a color. \since 5.1 diff --git a/src/dialogs/qquickplatformfiledialog.cpp b/src/dialogs/qquickplatformfiledialog.cpp index ab9ba72d..2f200b80 100644 --- a/src/dialogs/qquickplatformfiledialog.cpp +++ b/src/dialogs/qquickplatformfiledialog.cpp @@ -48,7 +48,7 @@ QT_BEGIN_NAMESPACE \qmltype FileDialog \instantiates QQuickPlatformFileDialog \inqmlmodule QtQuick.Dialogs - \ingroup dialogs + \ingroup qtquickdialogs \brief Dialog component for choosing files from a local filesystem. \since 5.1 diff --git a/src/dialogs/qquickplatformfontdialog.cpp b/src/dialogs/qquickplatformfontdialog.cpp index 8b93fd1d..575de880 100644 --- a/src/dialogs/qquickplatformfontdialog.cpp +++ b/src/dialogs/qquickplatformfontdialog.cpp @@ -49,7 +49,7 @@ QT_BEGIN_NAMESPACE \instantiates QQuickPlatformFontDialog \inqmlmodule QtQuick.Dialogs \ingroup qtquick-visual - \ingroup dialogs + \ingroup qtquickdialogs \brief Dialog component for choosing a font. \since 5.2 diff --git a/src/dialogs/qquickplatformmessagedialog.cpp b/src/dialogs/qquickplatformmessagedialog.cpp index 9413a98f..76b2ce93 100644 --- a/src/dialogs/qquickplatformmessagedialog.cpp +++ b/src/dialogs/qquickplatformmessagedialog.cpp @@ -48,7 +48,7 @@ QT_BEGIN_NAMESPACE \qmltype MessageDialog \instantiates QQuickPlatformMessageDialog \inqmlmodule QtQuick.Dialogs - \ingroup dialogs + \ingroup qtquickdialogs \brief Dialog component for displaying popup messages. \since 5.2 -- cgit v1.2.1 From c943543b84129bd82c17858d5eb91486af78111c Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Thu, 21 Apr 2016 10:46:55 +0200 Subject: fix example installs this includes renaming the first-level subdir of examples/. Change-Id: Idf14164533c247e5c0cc5acdb405ac97f7c33ac5 Reviewed-by: J-P Nurmi --- src/dialogs/doc/qtquickdialogs.qdocconf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/dialogs') diff --git a/src/dialogs/doc/qtquickdialogs.qdocconf b/src/dialogs/doc/qtquickdialogs.qdocconf index 30f3635a..d4c55b84 100644 --- a/src/dialogs/doc/qtquickdialogs.qdocconf +++ b/src/dialogs/doc/qtquickdialogs.qdocconf @@ -24,9 +24,9 @@ qhp.QtQuickDialogs.subprojects.qtquickdialogsqmltypes.sortPages = true depends = qtqml qtquick qtgui qtwidgets qtdoc qtcore -exampledirs += ../../../examples/quick/dialogs +exampledirs += ../../../examples/quickcontrols/dialogs -examplesinstallpath = qtquickcontrols/quick/dialogs +examplesinstallpath = qtquickcontrols/quickcontrols/dialogs headerdirs += .. -- cgit v1.2.1 From 57a7bc73545b137dccc098bc07aeaf9dd9bf8207 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Fri, 6 May 2016 13:40:35 +0200 Subject: Cleanup QQmlExtensionInterface usage Use the pre-defined macro. Change-Id: I52e362672ff719202d3e40e4245baac2af29f624 Task-number: QTBUG-53208 Reviewed-by: Simon Hausmann --- src/dialogs/Private/dialogsprivateplugin.cpp | 2 +- src/dialogs/plugin.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'src/dialogs') diff --git a/src/dialogs/Private/dialogsprivateplugin.cpp b/src/dialogs/Private/dialogsprivateplugin.cpp index aabce71f..40aeefff 100644 --- a/src/dialogs/Private/dialogsprivateplugin.cpp +++ b/src/dialogs/Private/dialogsprivateplugin.cpp @@ -44,7 +44,7 @@ QT_BEGIN_NAMESPACE class QtQuick2DialogsPrivatePlugin : public QQmlExtensionPlugin { Q_OBJECT - Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface/1.0") + Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid) public: virtual void registerTypes(const char *uri) diff --git a/src/dialogs/plugin.cpp b/src/dialogs/plugin.cpp index 65740024..21284697 100644 --- a/src/dialogs/plugin.cpp +++ b/src/dialogs/plugin.cpp @@ -84,7 +84,7 @@ QT_BEGIN_NAMESPACE class QtQuick2DialogsPlugin : public QQmlExtensionPlugin { Q_OBJECT - Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface/1.0") + Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid) public: QtQuick2DialogsPlugin() : QQmlExtensionPlugin(), m_useResources(true) { } -- cgit v1.2.1 From 0e00f9fa1cbdbdd2128f2ca31172d88f701ecb59 Mon Sep 17 00:00:00 2001 From: Shawn Rutledge Date: Tue, 10 May 2016 08:36:58 +0200 Subject: 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 Reviewed-by: Nikita Krupenko Reviewed-by: Liang Qi --- src/dialogs/qquickabstractdialog.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'src/dialogs') 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() -- cgit v1.2.1