diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2018-05-02 15:29:36 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2018-05-02 14:43:11 +0000 |
commit | 09b9888ddd52fc6d32ab3353a938b0784ebfd328 (patch) | |
tree | 3a2ca9bd8bce3a442ff074e2ecf6e646982df082 | |
parent | f9779928136a25db8fb84db9450ae6fc4aa5bb14 (diff) |
Replace QQuickDrawerPrivate::reposition() with QQuickDrawerPositioner
Change-Id: I64567cf88b14d407e4888b8c2ae921322af0e154
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
-rw-r--r-- | src/quicktemplates2/qquickdrawer.cpp | 27 | ||||
-rw-r--r-- | src/quicktemplates2/qquickdrawer_p_p.h | 2 |
2 files changed, 24 insertions, 5 deletions
diff --git a/src/quicktemplates2/qquickdrawer.cpp b/src/quicktemplates2/qquickdrawer.cpp index 2d60e649..cbed2fdb 100644 --- a/src/quicktemplates2/qquickdrawer.cpp +++ b/src/quicktemplates2/qquickdrawer.cpp @@ -37,6 +37,7 @@ #include "qquickdrawer_p.h" #include "qquickdrawer_p_p.h" #include "qquickpopupitem_p_p.h" +#include "qquickpopuppositioner_p_p.h" #include <QtGui/qstylehints.h> #include <QtGui/private/qguiapplication_p.h> @@ -171,6 +172,14 @@ QT_BEGIN_NAMESPACE \sa SwipeView, {Customizing Drawer}, {Navigation Controls}, {Popup Controls} */ +class QQuickDrawerPositioner : public QQuickPopupPositioner +{ +public: + QQuickDrawerPositioner(QQuickDrawer *drawer) : QQuickPopupPositioner(drawer) { } + + void reposition() override; +}; + QQuickDrawerPrivate::QQuickDrawerPrivate() : edge(Qt::LeftEdge), offset(0), @@ -212,14 +221,24 @@ qreal QQuickDrawerPrivate::positionAt(const QPointF &point) const } } -void QQuickDrawerPrivate::reposition() +QQuickPopupPositioner *QQuickDrawerPrivate::getPositioner() { Q_Q(QQuickDrawer); - QQuickWindow *window = q->window(); + if (!positioner) + positioner = new QQuickDrawerPositioner(q); + return positioner; +} + +void QQuickDrawerPositioner::reposition() +{ + QQuickDrawer *drawer = static_cast<QQuickDrawer*>(popup()); + QQuickWindow *window = drawer->window(); if (!window) return; - switch (edge) { + const qreal position = drawer->position(); + QQuickItem *popupItem = drawer->popupItem(); + switch (drawer->edge()) { case Qt::LeftEdge: popupItem->setX((position - 1.0) * popupItem->width()); break; @@ -234,7 +253,7 @@ void QQuickDrawerPrivate::reposition() break; } - QQuickPopupPrivate::reposition(); + QQuickPopupPositioner::reposition(); } void QQuickDrawerPrivate::showOverlay() diff --git a/src/quicktemplates2/qquickdrawer_p_p.h b/src/quicktemplates2/qquickdrawer_p_p.h index 0ceaf2e7..02339d23 100644 --- a/src/quicktemplates2/qquickdrawer_p_p.h +++ b/src/quicktemplates2/qquickdrawer_p_p.h @@ -69,7 +69,7 @@ public: qreal offsetAt(const QPointF &point) const; qreal positionAt(const QPointF &point) const; - void reposition() override; + QQuickPopupPositioner *getPositioner() override; void showOverlay() override; void hideOverlay() override; void resizeOverlay() override; |