aboutsummaryrefslogtreecommitdiffstats
path: root/src/quicktemplates2
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2018-05-02 15:29:36 +0200
committerJ-P Nurmi <jpnurmi@qt.io>2018-05-02 14:43:11 +0000
commit09b9888ddd52fc6d32ab3353a938b0784ebfd328 (patch)
tree3a2ca9bd8bce3a442ff074e2ecf6e646982df082 /src/quicktemplates2
parentf9779928136a25db8fb84db9450ae6fc4aa5bb14 (diff)
Replace QQuickDrawerPrivate::reposition() with QQuickDrawerPositioner
Change-Id: I64567cf88b14d407e4888b8c2ae921322af0e154 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src/quicktemplates2')
-rw-r--r--src/quicktemplates2/qquickdrawer.cpp27
-rw-r--r--src/quicktemplates2/qquickdrawer_p_p.h2
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;