aboutsummaryrefslogtreecommitdiff
path: root/tests/ut_mscrollchain/scroller.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ut_mscrollchain/scroller.cpp')
-rw-r--r--tests/ut_mscrollchain/scroller.cpp51
1 files changed, 51 insertions, 0 deletions
diff --git a/tests/ut_mscrollchain/scroller.cpp b/tests/ut_mscrollchain/scroller.cpp
new file mode 100644
index 00000000..6c1a398b
--- /dev/null
+++ b/tests/ut_mscrollchain/scroller.cpp
@@ -0,0 +1,51 @@
+#include "scroller.h"
+#include "scrollablewidget.h"
+
+QPoint Scroller::maximumOffset;
+
+Scroller::Scroller()
+{
+}
+
+Scroller::~Scroller()
+{
+}
+
+QPoint Scroller::queryScrollingAmount(const QGraphicsWidget *widget,
+ const QRect &targetRect,
+ const QPoint &originPoint,
+ const QPoint &currentOffset)
+{
+ const ScrollableWidget *scrollable = dynamic_cast<const ScrollableWidget *>(widget);
+ if (!scrollable) {
+ return QPoint();
+ }
+
+ const QRect boundaries(scrollable->boundingRect().toRect());
+
+ QRect movedTargetRect(targetRect);
+ moveRectInsideArea(boundaries, movedTargetRect);
+
+ const QPoint offset(movedTargetRect.topLeft() - originPoint);
+ const QPoint lowerBound(-maximumOffset - currentOffset);
+ const QPoint upperBound(maximumOffset - currentOffset);
+ const QPoint limitedOffset(qBound(lowerBound.x(), offset.x(), upperBound.x()),
+ qBound(lowerBound.y(), offset.y(), upperBound.y()));
+ return limitedOffset;
+}
+
+void Scroller::applyScrolling(QGraphicsWidget *widget, const QPoint &contentsOffset)
+{
+ ScrollableWidget *scrollableWidget = dynamic_cast<ScrollableWidget *>(widget);
+ if (scrollableWidget) {
+ scrollableWidget->scrollContents(contentsOffset);
+ }
+}
+
+void Scroller::restoreScrolling(QGraphicsWidget *widget)
+{
+ ScrollableWidget *scrollableWidget = dynamic_cast<ScrollableWidget *>(widget);
+ if (scrollableWidget) {
+ scrollableWidget->clearScroll();
+ }
+}