From d2496a68bbed9ed7e66faefef1e03e5352cc4100 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Fri, 13 Apr 2018 13:57:28 +0200 Subject: Popup: add implicitBackground|ContentWidth|Height properties [ChangeLog][Controls][Popup] Added implicitBackgroundWidth, implicitBackgroundHeight, implicitContentWidth, and implicitContentHeight properties. Change-Id: I3881b337bbd46b29873e8c00832006eec8b2836a Reviewed-by: Mitch Curtis --- src/imports/controls/Dialog.qml | 4 +- src/imports/controls/Drawer.qml | 4 +- src/imports/controls/Menu.qml | 8 ++-- src/imports/controls/Popup.qml | 4 +- src/imports/controls/ToolTip.qml | 8 ++-- src/imports/controls/fusion/Dialog.qml | 4 +- src/imports/controls/fusion/Drawer.qml | 4 +- src/imports/controls/fusion/Menu.qml | 8 ++-- src/imports/controls/fusion/Popup.qml | 4 +- src/imports/controls/fusion/ToolTip.qml | 8 ++-- src/imports/controls/imagine/Dialog.qml | 4 +- src/imports/controls/imagine/Drawer.qml | 4 +- src/imports/controls/imagine/Menu.qml | 8 ++-- src/imports/controls/imagine/Popup.qml | 4 +- src/imports/controls/imagine/ToolTip.qml | 8 ++-- src/imports/controls/material/Dialog.qml | 4 +- src/imports/controls/material/Drawer.qml | 4 +- src/imports/controls/material/Menu.qml | 8 ++-- src/imports/controls/material/Popup.qml | 4 +- src/imports/controls/material/ToolTip.qml | 8 ++-- src/imports/controls/universal/Dialog.qml | 4 +- src/imports/controls/universal/Drawer.qml | 4 +- src/imports/controls/universal/Menu.qml | 8 ++-- src/imports/controls/universal/Popup.qml | 4 +- src/imports/controls/universal/ToolTip.qml | 8 ++-- src/quicktemplates2/qquickpopup.cpp | 72 ++++++++++++++++++++++++++++++ src/quicktemplates2/qquickpopup_p.h | 14 ++++++ 27 files changed, 156 insertions(+), 70 deletions(-) diff --git a/src/imports/controls/Dialog.qml b/src/imports/controls/Dialog.qml index 144e2c48..0e3d118c 100644 --- a/src/imports/controls/Dialog.qml +++ b/src/imports/controls/Dialog.qml @@ -42,11 +42,11 @@ import QtQuick.Controls.impl 2.5 T.Dialog { id: control - implicitWidth: Math.max(background ? background.implicitWidth : 0, + implicitWidth: Math.max(implicitBackgroundWidth, header && header.visible ? header.implicitWidth : 0, footer && footer.visible ? footer.implicitWidth : 0, contentWidth > 0 ? contentWidth + leftPadding + rightPadding : 0) - implicitHeight: Math.max(background ? background.implicitHeight : 0, + implicitHeight: Math.max(implicitBackgroundHeight, (header && header.visible ? header.implicitHeight + spacing : 0) + (footer && footer.visible ? footer.implicitHeight + spacing : 0) + (contentHeight > 0 ? contentHeight + topPadding + bottomPadding : 0)) diff --git a/src/imports/controls/Drawer.qml b/src/imports/controls/Drawer.qml index ebdb138a..26965a0d 100644 --- a/src/imports/controls/Drawer.qml +++ b/src/imports/controls/Drawer.qml @@ -44,8 +44,8 @@ T.Drawer { parent: T.Overlay.overlay - implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) + implicitWidth: Math.max(implicitBackgroundWidth, contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight, contentHeight + topPadding + bottomPadding) topPadding: control.edge === Qt.BottomEdge leftPadding: control.edge === Qt.RightEdge diff --git a/src/imports/controls/Menu.qml b/src/imports/controls/Menu.qml index 770db8eb..8e71698a 100644 --- a/src/imports/controls/Menu.qml +++ b/src/imports/controls/Menu.qml @@ -42,10 +42,10 @@ import QtQuick.Templates 2.5 as T T.Menu { id: control - implicitWidth: Math.max(background ? background.implicitWidth : 0, - contentItem ? contentItem.implicitWidth + leftPadding + rightPadding : 0) - implicitHeight: Math.max(background ? background.implicitHeight : 0, - contentItem ? contentItem.implicitHeight : 0) + topPadding + bottomPadding + implicitWidth: Math.max(implicitBackgroundWidth, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight, + contentHeight + topPadding + bottomPadding) margins: 0 overlap: 1 diff --git a/src/imports/controls/Popup.qml b/src/imports/controls/Popup.qml index 1192a65c..f5645916 100644 --- a/src/imports/controls/Popup.qml +++ b/src/imports/controls/Popup.qml @@ -42,9 +42,9 @@ import QtQuick.Templates 2.5 as T T.Popup { id: control - implicitWidth: Math.max(background ? background.implicitWidth : 0, + implicitWidth: Math.max(implicitBackgroundWidth, contentWidth > 0 ? contentWidth + leftPadding + rightPadding : 0) - implicitHeight: Math.max(background ? background.implicitHeight : 0, + implicitHeight: Math.max(implicitBackgroundHeight, contentHeight > 0 ? contentHeight + topPadding + bottomPadding : 0) padding: 12 diff --git a/src/imports/controls/ToolTip.qml b/src/imports/controls/ToolTip.qml index 57d28c53..4f371d80 100644 --- a/src/imports/controls/ToolTip.qml +++ b/src/imports/controls/ToolTip.qml @@ -45,10 +45,10 @@ T.ToolTip { x: parent ? (parent.width - implicitWidth) / 2 : 0 y: -implicitHeight - 3 - implicitWidth: Math.max(background ? background.implicitWidth : 0, - contentItem.implicitWidth + leftPadding + rightPadding) - implicitHeight: Math.max(background ? background.implicitHeight : 0, - contentItem.implicitHeight + topPadding + bottomPadding) + implicitWidth: Math.max(implicitBackgroundWidth, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight, + contentHeight + topPadding + bottomPadding) margins: 6 padding: 6 diff --git a/src/imports/controls/fusion/Dialog.qml b/src/imports/controls/fusion/Dialog.qml index b9052aa2..e8fefa91 100644 --- a/src/imports/controls/fusion/Dialog.qml +++ b/src/imports/controls/fusion/Dialog.qml @@ -44,11 +44,11 @@ import QtQuick.Controls.Fusion.impl 2.5 T.Dialog { id: control - implicitWidth: Math.max(background ? background.implicitWidth : 0, + implicitWidth: Math.max(implicitBackgroundWidth, header && header.visible ? header.implicitWidth : 0, footer && footer.visible ? footer.implicitWidth : 0, contentWidth > 0 ? contentWidth + leftPadding + rightPadding : 0) - implicitHeight: Math.max(background ? background.implicitHeight : 0, + implicitHeight: Math.max(implicitBackgroundHeight, (header && header.visible ? header.implicitHeight + spacing : 0) + (footer && footer.visible ? footer.implicitHeight + spacing : 0) + (contentHeight > 0 ? contentHeight + topPadding + bottomPadding : 0)) diff --git a/src/imports/controls/fusion/Drawer.qml b/src/imports/controls/fusion/Drawer.qml index 6feb1692..58b0844a 100644 --- a/src/imports/controls/fusion/Drawer.qml +++ b/src/imports/controls/fusion/Drawer.qml @@ -46,8 +46,8 @@ T.Drawer { parent: T.Overlay.overlay - implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) + implicitWidth: Math.max(implicitBackgroundWidth, contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight, contentHeight + topPadding + bottomPadding) topPadding: control.edge === Qt.BottomEdge leftPadding: control.edge === Qt.RightEdge diff --git a/src/imports/controls/fusion/Menu.qml b/src/imports/controls/fusion/Menu.qml index 2b38119e..fbd35283 100644 --- a/src/imports/controls/fusion/Menu.qml +++ b/src/imports/controls/fusion/Menu.qml @@ -44,10 +44,10 @@ import QtQuick.Controls.Fusion.impl 2.5 T.Menu { id: control - implicitWidth: Math.max(background ? background.implicitWidth : 0, - contentItem ? contentItem.implicitWidth + leftPadding + rightPadding : 0) - implicitHeight: Math.max(background ? background.implicitHeight : 0, - contentItem ? contentItem.implicitHeight : 0) + topPadding + bottomPadding + implicitWidth: Math.max(implicitBackgroundWidth, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight, + contentHeight + topPadding + bottomPadding) margins: 0 padding: 1 diff --git a/src/imports/controls/fusion/Popup.qml b/src/imports/controls/fusion/Popup.qml index 71c506ac..f853d33c 100644 --- a/src/imports/controls/fusion/Popup.qml +++ b/src/imports/controls/fusion/Popup.qml @@ -44,9 +44,9 @@ import QtQuick.Controls.Fusion.impl 2.5 T.Popup { id: control - implicitWidth: Math.max(background ? background.implicitWidth : 0, + implicitWidth: Math.max(implicitBackgroundWidth, contentWidth > 0 ? contentWidth + leftPadding + rightPadding : 0) - implicitHeight: Math.max(background ? background.implicitHeight : 0, + implicitHeight: Math.max(implicitBackgroundHeight, contentHeight > 0 ? contentHeight + topPadding + bottomPadding : 0) padding: 6 diff --git a/src/imports/controls/fusion/ToolTip.qml b/src/imports/controls/fusion/ToolTip.qml index 59f64899..59fb7a76 100644 --- a/src/imports/controls/fusion/ToolTip.qml +++ b/src/imports/controls/fusion/ToolTip.qml @@ -47,10 +47,10 @@ T.ToolTip { x: parent ? (parent.width - implicitWidth) / 2 : 0 y: -implicitHeight - 3 - implicitWidth: Math.max(background ? background.implicitWidth : 0, - contentItem.implicitWidth + leftPadding + rightPadding) - implicitHeight: Math.max(background ? background.implicitHeight : 0, - contentItem.implicitHeight + topPadding + bottomPadding) + implicitWidth: Math.max(implicitBackgroundWidth, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight, + contentHeight + topPadding + bottomPadding) margins: 6 padding: 6 diff --git a/src/imports/controls/imagine/Dialog.qml b/src/imports/controls/imagine/Dialog.qml index 1c3c4f53..26f31da5 100644 --- a/src/imports/controls/imagine/Dialog.qml +++ b/src/imports/controls/imagine/Dialog.qml @@ -43,11 +43,11 @@ import QtQuick.Controls.Imagine.impl 2.5 T.Dialog { id: control - implicitWidth: Math.max(background ? background.implicitWidth : 0, + implicitWidth: Math.max(implicitBackgroundWidth, header && header.visible ? header.implicitWidth : 0, footer && footer.visible ? footer.implicitWidth : 0, contentWidth > 0 ? contentWidth + leftPadding + rightPadding : 0) - implicitHeight: Math.max(background ? background.implicitHeight : 0, + implicitHeight: Math.max(implicitBackgroundHeight, (header && header.visible ? header.implicitHeight + spacing : 0) + (footer && footer.visible ? footer.implicitHeight + spacing : 0) + (contentHeight > 0 ? contentHeight + topPadding + bottomPadding : 0)) diff --git a/src/imports/controls/imagine/Drawer.qml b/src/imports/controls/imagine/Drawer.qml index 280518b4..3a0890a3 100644 --- a/src/imports/controls/imagine/Drawer.qml +++ b/src/imports/controls/imagine/Drawer.qml @@ -44,8 +44,8 @@ T.Drawer { parent: T.ApplicationWindow.overlay - implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) + implicitWidth: Math.max(implicitBackgroundWidth, contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight, contentHeight + topPadding + bottomPadding) topPadding: background ? background.topPadding : 0 leftPadding: background ? background.leftPadding : 0 diff --git a/src/imports/controls/imagine/Menu.qml b/src/imports/controls/imagine/Menu.qml index 1846fe90..2748eb25 100644 --- a/src/imports/controls/imagine/Menu.qml +++ b/src/imports/controls/imagine/Menu.qml @@ -43,10 +43,10 @@ import QtQuick.Controls.Imagine.impl 2.5 T.Menu { id: control - implicitWidth: Math.max(background ? background.implicitWidth : 0, - contentItem ? contentItem.implicitWidth + leftPadding + rightPadding : 0) - implicitHeight: Math.max(background ? background.implicitHeight : 0, - contentItem ? contentItem.implicitHeight : 0) + topPadding + bottomPadding + implicitWidth: Math.max(implicitBackgroundWidth, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight, + contentHeight + topPadding + bottomPadding) topMargin: background ? background.topInset : 0 leftMargin: background ? background.leftInset : 0 diff --git a/src/imports/controls/imagine/Popup.qml b/src/imports/controls/imagine/Popup.qml index e0edc866..c839e0e4 100644 --- a/src/imports/controls/imagine/Popup.qml +++ b/src/imports/controls/imagine/Popup.qml @@ -42,9 +42,9 @@ import QtQuick.Controls.Imagine.impl 2.5 T.Popup { id: control - implicitWidth: Math.max(background ? background.implicitWidth : 0, + implicitWidth: Math.max(implicitBackgroundWidth, contentWidth > 0 ? contentWidth + leftPadding + rightPadding : 0) - implicitHeight: Math.max(background ? background.implicitHeight : 0, + implicitHeight: Math.max(implicitBackgroundHeight, contentHeight > 0 ? contentHeight + topPadding + bottomPadding : 0) topPadding: background ? background.topPadding : undefined diff --git a/src/imports/controls/imagine/ToolTip.qml b/src/imports/controls/imagine/ToolTip.qml index bd82b5a7..92e6cf36 100644 --- a/src/imports/controls/imagine/ToolTip.qml +++ b/src/imports/controls/imagine/ToolTip.qml @@ -45,10 +45,10 @@ T.ToolTip { x: parent ? (parent.width - implicitWidth) / 2 : 0 - (background ? background.leftInset : 0) y: -implicitHeight - (background ? background.topInset : 0) - implicitWidth: Math.max(background ? background.implicitWidth : 0, - contentItem.implicitWidth + leftPadding + rightPadding) - implicitHeight: Math.max(background ? background.implicitHeight : 0, - contentItem.implicitHeight + topPadding + bottomPadding) + implicitWidth: Math.max(implicitBackgroundWidth, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight, + contentHeight + topPadding + bottomPadding) topMargin: background ? background.topInset : 0 leftMargin: background ? background.leftInset : 0 diff --git a/src/imports/controls/material/Dialog.qml b/src/imports/controls/material/Dialog.qml index 79258f82..9e0467e5 100644 --- a/src/imports/controls/material/Dialog.qml +++ b/src/imports/controls/material/Dialog.qml @@ -44,11 +44,11 @@ import QtQuick.Controls.Material.impl 2.5 T.Dialog { id: control - implicitWidth: Math.max(background ? background.implicitWidth : 0, + implicitWidth: Math.max(implicitBackgroundWidth, header && header.visible ? header.implicitWidth : 0, footer && footer.visible ? footer.implicitWidth : 0, contentWidth > 0 ? contentWidth + leftPadding + rightPadding : 0) - implicitHeight: Math.max(background ? background.implicitHeight : 0, + implicitHeight: Math.max(implicitBackgroundHeight, (header && header.visible ? header.implicitHeight + spacing : 0) + (footer && footer.visible ? footer.implicitHeight + spacing : 0) + (contentHeight > 0 ? contentHeight + topPadding + bottomPadding : 0)) diff --git a/src/imports/controls/material/Drawer.qml b/src/imports/controls/material/Drawer.qml index ce9b49a4..562c648c 100644 --- a/src/imports/controls/material/Drawer.qml +++ b/src/imports/controls/material/Drawer.qml @@ -44,8 +44,8 @@ T.Drawer { parent: T.Overlay.overlay - implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) + implicitWidth: Math.max(implicitBackgroundWidth, contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight, contentHeight + topPadding + bottomPadding) topPadding: !dim && edge === Qt.BottomEdge && Material.elevation === 0 leftPadding: !dim && edge === Qt.RightEdge && Material.elevation === 0 diff --git a/src/imports/controls/material/Menu.qml b/src/imports/controls/material/Menu.qml index 14006a91..68f2eae1 100644 --- a/src/imports/controls/material/Menu.qml +++ b/src/imports/controls/material/Menu.qml @@ -45,10 +45,10 @@ T.Menu { Material.elevation: 8 - implicitWidth: Math.max(background ? background.implicitWidth : 0, - contentItem ? contentItem.implicitWidth + leftPadding + rightPadding : 0) - implicitHeight: Math.max(background ? background.implicitHeight : 0, - contentItem ? contentItem.implicitHeight : 0) + topPadding + bottomPadding + implicitWidth: Math.max(implicitBackgroundWidth, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight, + contentHeight + topPadding + bottomPadding) margins: 0 verticalPadding: 8 diff --git a/src/imports/controls/material/Popup.qml b/src/imports/controls/material/Popup.qml index 549ba0f0..d370a8e3 100644 --- a/src/imports/controls/material/Popup.qml +++ b/src/imports/controls/material/Popup.qml @@ -44,9 +44,9 @@ T.Popup { Material.elevation: 24 - implicitWidth: Math.max(background ? background.implicitWidth : 0, + implicitWidth: Math.max(implicitBackgroundWidth, contentWidth > 0 ? contentWidth + leftPadding + rightPadding : 0) - implicitHeight: Math.max(background ? background.implicitHeight : 0, + implicitHeight: Math.max(implicitBackgroundHeight, contentHeight > 0 ? contentHeight + topPadding + bottomPadding : 0) padding: 12 diff --git a/src/imports/controls/material/ToolTip.qml b/src/imports/controls/material/ToolTip.qml index 098dc8e6..735da483 100644 --- a/src/imports/controls/material/ToolTip.qml +++ b/src/imports/controls/material/ToolTip.qml @@ -44,10 +44,10 @@ T.ToolTip { x: parent ? (parent.width - implicitWidth) / 2 : 0 y: -implicitHeight - 24 - implicitWidth: Math.max(background ? background.implicitWidth : 0, - contentItem.implicitWidth + leftPadding + rightPadding) - implicitHeight: Math.max(background ? background.implicitHeight : 0, - contentItem.implicitHeight + topPadding + bottomPadding) + implicitWidth: Math.max(implicitBackgroundWidth, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight, + contentHeight + topPadding + bottomPadding) margins: 12 padding: 8 diff --git a/src/imports/controls/universal/Dialog.qml b/src/imports/controls/universal/Dialog.qml index 98a5efea..907c5ea3 100644 --- a/src/imports/controls/universal/Dialog.qml +++ b/src/imports/controls/universal/Dialog.qml @@ -42,11 +42,11 @@ import QtQuick.Controls.Universal 2.5 T.Dialog { id: control - implicitWidth: Math.max(background ? background.implicitWidth : 0, + implicitWidth: Math.max(implicitBackgroundWidth, header && header.visible ? header.implicitWidth : 0, footer && footer.visible ? footer.implicitWidth : 0, contentWidth > 0 ? contentWidth + leftPadding + rightPadding : 0) - implicitHeight: Math.max(background ? background.implicitHeight : 0, + implicitHeight: Math.max(implicitBackgroundHeight, (header && header.visible ? header.implicitHeight + spacing : 0) + (footer && footer.visible ? footer.implicitHeight + spacing : 0) + (contentHeight > 0 ? contentHeight + topPadding + bottomPadding : 0)) diff --git a/src/imports/controls/universal/Drawer.qml b/src/imports/controls/universal/Drawer.qml index 2fe252e5..beaa3a15 100644 --- a/src/imports/controls/universal/Drawer.qml +++ b/src/imports/controls/universal/Drawer.qml @@ -43,8 +43,8 @@ T.Drawer { parent: T.Overlay.overlay - implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) + implicitWidth: Math.max(implicitBackgroundWidth, contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight, contentHeight + topPadding + bottomPadding) topPadding: control.edge === Qt.BottomEdge leftPadding: control.edge === Qt.RightEdge diff --git a/src/imports/controls/universal/Menu.qml b/src/imports/controls/universal/Menu.qml index 803bb96f..fa9bae13 100644 --- a/src/imports/controls/universal/Menu.qml +++ b/src/imports/controls/universal/Menu.qml @@ -42,10 +42,10 @@ import QtQuick.Controls.Universal 2.5 T.Menu { id: control - implicitWidth: Math.max(background ? background.implicitWidth : 0, - contentItem ? contentItem.implicitWidth + leftPadding + rightPadding : 0) - implicitHeight: Math.max(background ? background.implicitHeight : 0, - contentItem ? contentItem.implicitHeight : 0) + topPadding + bottomPadding + implicitWidth: Math.max(implicitBackgroundWidth, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight, + contentHeight + topPadding + bottomPadding) margins: 0 overlap: 1 diff --git a/src/imports/controls/universal/Popup.qml b/src/imports/controls/universal/Popup.qml index 243c793b..a5ddbcfc 100644 --- a/src/imports/controls/universal/Popup.qml +++ b/src/imports/controls/universal/Popup.qml @@ -41,9 +41,9 @@ import QtQuick.Controls.Universal 2.5 T.Popup { id: control - implicitWidth: Math.max(background ? background.implicitWidth : 0, + implicitWidth: Math.max(implicitBackgroundWidth, contentWidth > 0 ? contentWidth + leftPadding + rightPadding : 0) - implicitHeight: Math.max(background ? background.implicitHeight : 0, + implicitHeight: Math.max(implicitBackgroundHeight, contentHeight > 0 ? contentHeight + topPadding + bottomPadding : 0) padding: 12 diff --git a/src/imports/controls/universal/ToolTip.qml b/src/imports/controls/universal/ToolTip.qml index 961c38a3..38269c97 100644 --- a/src/imports/controls/universal/ToolTip.qml +++ b/src/imports/controls/universal/ToolTip.qml @@ -44,10 +44,10 @@ T.ToolTip { x: parent ? (parent.width - implicitWidth) / 2 : 0 y: -implicitHeight - 16 - implicitWidth: Math.max(background ? background.implicitWidth : 0, - contentItem.implicitWidth + leftPadding + rightPadding) - implicitHeight: Math.max(background ? background.implicitHeight : 0, - contentItem.implicitHeight + topPadding + bottomPadding) + implicitWidth: Math.max(implicitBackgroundWidth, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight, + contentHeight + topPadding + bottomPadding) margins: 8 padding: 8 diff --git a/src/quicktemplates2/qquickpopup.cpp b/src/quicktemplates2/qquickpopup.cpp index 6995b45d..8c0624f2 100644 --- a/src/quicktemplates2/qquickpopup.cpp +++ b/src/quicktemplates2/qquickpopup.cpp @@ -282,6 +282,10 @@ void QQuickPopupPrivate::init() QObject::connect(popupItem, &QQuickControl::paddingChanged, q, &QQuickPopup::paddingChanged); QObject::connect(popupItem, &QQuickControl::backgroundChanged, q, &QQuickPopup::backgroundChanged); QObject::connect(popupItem, &QQuickControl::contentItemChanged, q, &QQuickPopup::contentItemChanged); + QObject::connect(popupItem, &QQuickControl::implicitContentWidthChanged, q, &QQuickPopup::implicitContentWidthChanged); + QObject::connect(popupItem, &QQuickControl::implicitContentHeightChanged, q, &QQuickPopup::implicitContentHeightChanged); + QObject::connect(popupItem, &QQuickControl::implicitBackgroundWidthChanged, q, &QQuickPopup::implicitBackgroundWidthChanged); + QObject::connect(popupItem, &QQuickControl::implicitBackgroundHeightChanged, q, &QQuickPopup::implicitBackgroundHeightChanged); positioner = new QQuickPopupPositioner(q); } @@ -2186,6 +2190,74 @@ void QQuickPopup::resetVerticalPadding() d->popupItem->resetVerticalPadding(); } +/*! + \since QtQuick.Controls 2.5 (Qt 5.12) + \qmlproperty real QtQuick.Controls::Popup::implicitContentWidth + \readonly + + This property holds the implicit content width. + + The value is calculated based on the content children. + + \sa implicitContentHeight, implicitBackgroundWidth +*/ +qreal QQuickPopup::implicitContentWidth() const +{ + Q_D(const QQuickPopup); + return d->popupItem->implicitContentWidth(); +} + +/*! + \since QtQuick.Controls 2.5 (Qt 5.12) + \qmlproperty real QtQuick.Controls::Popup::implicitContentHeight + \readonly + + This property holds the implicit content height. + + The value is calculated based on the content children. + + \sa implicitContentWidth, implicitBackgroundHeight +*/ +qreal QQuickPopup::implicitContentHeight() const +{ + Q_D(const QQuickPopup); + return d->popupItem->implicitContentHeight(); +} + +/*! + \since QtQuick.Controls 2.5 (Qt 5.12) + \qmlproperty real QtQuick.Controls::Popup::implicitBackgroundWidth + \readonly + + This property holds the implicit background width. + + The value is equal to \c {background ? background.implicitWidth : 0}. + + \sa implicitBackgroundHeight, implicitContentWidth +*/ +qreal QQuickPopup::implicitBackgroundWidth() const +{ + Q_D(const QQuickPopup); + return d->popupItem->implicitBackgroundWidth(); +} + +/*! + \since QtQuick.Controls 2.5 (Qt 5.12) + \qmlproperty real QtQuick.Controls::Popup::implicitBackgroundHeight + \readonly + + This property holds the implicit background height. + + The value is equal to \c {background ? background.implicitHeight : 0}. + + \sa implicitBackgroundWidth, implicitContentHeight +*/ +qreal QQuickPopup::implicitBackgroundHeight() const +{ + Q_D(const QQuickPopup); + return d->popupItem->implicitBackgroundHeight(); +} + bool QQuickPopup::filtersChildMouseEvents() const { Q_D(const QQuickPopup); diff --git a/src/quicktemplates2/qquickpopup_p.h b/src/quicktemplates2/qquickpopup_p.h index 98e3c72f..1d232e92 100644 --- a/src/quicktemplates2/qquickpopup_p.h +++ b/src/quicktemplates2/qquickpopup_p.h @@ -126,6 +126,10 @@ class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickPopup : public QObject, public QQml Q_PROPERTY(qreal horizontalPadding READ horizontalPadding WRITE setHorizontalPadding RESET resetHorizontalPadding NOTIFY horizontalPaddingChanged FINAL) Q_PROPERTY(qreal verticalPadding READ verticalPadding WRITE setVerticalPadding RESET resetVerticalPadding NOTIFY verticalPaddingChanged FINAL) Q_PRIVATE_PROPERTY(QQuickPopup::d_func(), QQuickPopupAnchors *anchors READ getAnchors DESIGNABLE false CONSTANT FINAL REVISION 5) + Q_PROPERTY(qreal implicitContentWidth READ implicitContentWidth NOTIFY implicitContentWidthChanged FINAL REVISION 5) + Q_PROPERTY(qreal implicitContentHeight READ implicitContentHeight NOTIFY implicitContentHeightChanged FINAL REVISION 5) + Q_PROPERTY(qreal implicitBackgroundWidth READ implicitBackgroundWidth NOTIFY implicitBackgroundWidthChanged FINAL REVISION 5) + Q_PROPERTY(qreal implicitBackgroundHeight READ implicitBackgroundHeight NOTIFY implicitBackgroundHeightChanged FINAL REVISION 5) Q_CLASSINFO("DeferredPropertyNames", "background,contentItem") Q_CLASSINFO("DefaultProperty", "contentData") @@ -315,6 +319,12 @@ public: void setVerticalPadding(qreal padding); void resetVerticalPadding(); + qreal implicitContentWidth() const; + qreal implicitContentHeight() const; + + qreal implicitBackgroundWidth() const; + qreal implicitBackgroundHeight() const; + public Q_SLOTS: void open(); void close(); @@ -373,6 +383,10 @@ Q_SIGNALS: // 2.5 (Qt 5.12) Q_REVISION(5) void horizontalPaddingChanged(); Q_REVISION(5) void verticalPaddingChanged(); + Q_REVISION(5) void implicitContentWidthChanged(); + Q_REVISION(5) void implicitContentHeightChanged(); + Q_REVISION(5) void implicitBackgroundWidthChanged(); + Q_REVISION(5) void implicitBackgroundHeightChanged(); protected: QQuickPopup(QQuickPopupPrivate &dd, QObject *parent); -- cgit v1.2.3