From 8b2e819ab2246d01eb564a52aa08bdf1d55c02c2 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Wed, 11 May 2016 09:38:42 +0200 Subject: QQuickPopup: align position accessors with x/y accessors Change-Id: Ib3db04d9d1395f33bf9c8d83f69d7f24a3e380b9 Reviewed-by: Mitch Curtis --- src/quicktemplates2/qquickpopup.cpp | 47 ++++++++++++------------------------- 1 file changed, 15 insertions(+), 32 deletions(-) (limited to 'src/quicktemplates2/qquickpopup.cpp') diff --git a/src/quicktemplates2/qquickpopup.cpp b/src/quicktemplates2/qquickpopup.cpp index 2aa77aae..94cf5d76 100644 --- a/src/quicktemplates2/qquickpopup.cpp +++ b/src/quicktemplates2/qquickpopup.cpp @@ -766,24 +766,13 @@ void QQuickPopup::close() */ qreal QQuickPopup::x() const { - Q_D(const QQuickPopup); - qreal x = d->popupItem->x(); - if (d->parentItem) - x = d->parentItem->mapFromScene(QPointF(x, 0)).x(); - return x; + return position().x(); } void QQuickPopup::setX(qreal x) { Q_D(QQuickPopup); - if (qFuzzyCompare(d->x, x)) - return; - - d->x = x; - if (d->popupItem->isVisible()) - d->reposition(); - else - emit xChanged(); + setPosition(QPointF(x, d->y)); } /*! @@ -793,30 +782,22 @@ void QQuickPopup::setX(qreal x) */ qreal QQuickPopup::y() const { - Q_D(const QQuickPopup); - qreal y = d->popupItem->y(); - if (d->parentItem) - y = d->parentItem->mapFromScene(QPointF(0, y)).y(); - return y; + return position().y(); } void QQuickPopup::setY(qreal y) { Q_D(QQuickPopup); - if (qFuzzyCompare(d->y, y)) - return; - - d->y = y; - if (d->popupItem->isVisible()) - d->reposition(); - else - emit yChanged(); + setPosition(QPointF(d->x, y)); } QPointF QQuickPopup::position() const { Q_D(const QQuickPopup); - return QPointF(d->x, d->y); + QPointF pos = d->popupItem->position(); + if (d->parentItem) + pos = d->parentItem->mapFromScene(pos); + return pos; } void QQuickPopup::setPosition(const QPointF &pos) @@ -829,12 +810,14 @@ void QQuickPopup::setPosition(const QPointF &pos) d->x = pos.x(); d->y = pos.y(); - if (d->popupItem->isVisible()) + if (d->popupItem->isVisible()) { d->reposition(); - if (xChange) - emit xChanged(); - if (yChange) - emit yChanged(); + } else { + if (xChange) + emit xChanged(); + if (yChange) + emit yChanged(); + } } /*! -- cgit v1.2.3