aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/controls/gallery/gallery.qml1
-rw-r--r--src/imports/controls/doc/images/qtlabscontrols-popup-transformorigin.pngbin0 -> 8927 bytes
-rw-r--r--src/imports/controls/material/ComboBox.qml2
-rw-r--r--src/imports/controls/material/Menu.qml3
-rw-r--r--src/templates/qquickpopup.cpp27
-rw-r--r--src/templates/qquickpopup_p.h12
6 files changed, 40 insertions, 5 deletions
diff --git a/examples/controls/gallery/gallery.qml b/examples/controls/gallery/gallery.qml
index d40e7f9b..7ccadd06 100644
--- a/examples/controls/gallery/gallery.qml
+++ b/examples/controls/gallery/gallery.qml
@@ -90,6 +90,7 @@ ApplicationWindow {
Menu {
id: optionsMenu
x: parent.width - width
+ transformOrigin: Menu.TopRight
MenuItem {
text: "Settings"
diff --git a/src/imports/controls/doc/images/qtlabscontrols-popup-transformorigin.png b/src/imports/controls/doc/images/qtlabscontrols-popup-transformorigin.png
new file mode 100644
index 00000000..4af320fb
--- /dev/null
+++ b/src/imports/controls/doc/images/qtlabscontrols-popup-transformorigin.png
Binary files differ
diff --git a/src/imports/controls/material/ComboBox.qml b/src/imports/controls/material/ComboBox.qml
index b19901fb..2d1e2899 100644
--- a/src/imports/controls/material/ComboBox.qml
+++ b/src/imports/controls/material/ComboBox.qml
@@ -117,6 +117,7 @@ T.ComboBox {
y: control.height
implicitWidth: control.width
implicitHeight: Math.min(200, listview.contentHeight)
+ transformOrigin: Item.Top
enter: Transition {
// grow_fade_in
@@ -135,7 +136,6 @@ T.ComboBox {
clip: true
model: control.delegateModel
currentIndex: control.highlightedIndex
- transformOrigin: popup.showAbove ? Item.Bottom : Item.Top
// ScrollIndicator.vertical: ScrollIndicator { }
}
diff --git a/src/imports/controls/material/Menu.qml b/src/imports/controls/material/Menu.qml
index 6a5c6f61..6dc645a9 100644
--- a/src/imports/controls/material/Menu.qml
+++ b/src/imports/controls/material/Menu.qml
@@ -48,6 +48,8 @@ T.Menu {
implicitHeight: Math.min(background ? background.implicitHeight : 0,
contentItem ? contentItem.implicitHeight + topPadding + bottomPadding : 0)
+ transformOrigin: Item.Top
+
enter: Transition {
// grow_fade_in
NumberAnimation { property: "scale"; from: 0.9; to: 1.0; easing.type: Easing.OutQuint; duration: 220 }
@@ -63,7 +65,6 @@ T.Menu {
//! [contentItem]
contentItem: ListView {
implicitHeight: contentHeight
- transformOrigin: Item.Top
model: control.contentModel
// TODO: improve this?
diff --git a/src/templates/qquickpopup.cpp b/src/templates/qquickpopup.cpp
index e613adec..6b226ae8 100644
--- a/src/templates/qquickpopup.cpp
+++ b/src/templates/qquickpopup.cpp
@@ -545,9 +545,6 @@ void QQuickPopup::open()
d->overlay = static_cast<QQuickOverlay *>(applicationWindow->overlay());
d->popupItem->setParentItem(d->overlay);
d->positioner.setParentItem(d->parentItem);
- // TODO: add Popup::transformOrigin?
- if (d->contentItem)
- d->popupItem->setTransformOrigin(d->contentItem->transformOrigin());
emit aboutToShow();
d->transitionManager.transitionEnter();
emit visibleChanged();
@@ -1094,6 +1091,30 @@ void QQuickPopup::setVisible(bool visible)
}
/*!
+ \qmlproperty enumeration Qt.labs.controls::Popup::transformOrigin
+
+ This property holds the origin point for transformations in enter and exit transitions.
+
+ Nine transform origins are available, as shown in the image below.
+ The default transform origin is \c Popup.Center.
+
+ \image qtlabscontrols-popup-transformorigin.png
+
+ \sa enter, exit, Item::transformOrigin
+*/
+QQuickPopup::TransformOrigin QQuickPopup::transformOrigin() const
+{
+ Q_D(const QQuickPopup);
+ return static_cast<TransformOrigin>(d->popupItem->transformOrigin());
+}
+
+void QQuickPopup::setTransformOrigin(TransformOrigin origin)
+{
+ Q_D(QQuickPopup);
+ d->popupItem->setTransformOrigin(static_cast<QQuickItem::TransformOrigin>(origin));
+}
+
+/*!
\qmlproperty Transition Qt.labs.controls::Popup::enter
This property holds the transition that is applied to the content item
diff --git a/src/templates/qquickpopup_p.h b/src/templates/qquickpopup_p.h
index a9094f92..66eae777 100644
--- a/src/templates/qquickpopup_p.h
+++ b/src/templates/qquickpopup_p.h
@@ -90,6 +90,7 @@ class Q_LABSTEMPLATES_EXPORT QQuickPopup : public QObject, public QQmlParserStat
Q_PROPERTY(bool focus READ hasFocus WRITE setFocus NOTIFY focusChanged)
Q_PROPERTY(bool modal READ isModal WRITE setModal NOTIFY modalChanged)
Q_PROPERTY(bool visible READ isVisible WRITE setVisible NOTIFY visibleChanged)
+ Q_PROPERTY(TransformOrigin transformOrigin READ transformOrigin WRITE setTransformOrigin)
Q_PROPERTY(QQuickTransition *enter READ enter WRITE setEnter NOTIFY enterChanged FINAL)
Q_PROPERTY(QQuickTransition *exit READ exit WRITE setExit NOTIFY exitChanged FINAL)
Q_CLASSINFO("DefaultProperty", "contentData")
@@ -168,6 +169,17 @@ public:
bool isVisible() const;
void setVisible(bool visible);
+ // keep in sync with Item.TransformOrigin
+ enum TransformOrigin {
+ TopLeft, Top, TopRight,
+ Left, Center, Right,
+ BottomLeft, Bottom, BottomRight
+ };
+ Q_ENUM(TransformOrigin)
+
+ TransformOrigin transformOrigin() const;
+ void setTransformOrigin(TransformOrigin);
+
QQuickTransition *enter() const;
void setEnter(QQuickTransition *transition);