aboutsummaryrefslogtreecommitdiff
path: root/src/corelib/core/mscrollchain.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/core/mscrollchain.cpp')
-rw-r--r--src/corelib/core/mscrollchain.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/corelib/core/mscrollchain.cpp b/src/corelib/core/mscrollchain.cpp
index a292ec32..0d4ecd7f 100644
--- a/src/corelib/core/mscrollchain.cpp
+++ b/src/corelib/core/mscrollchain.cpp
@@ -61,6 +61,24 @@ void MScrollChain::addBottomUpScroll(const QRect &targetRect,
}
}
+void MScrollChain::addMinimalScroll(const QRect &localRect,
+ int startingIndex,
+ int untilIndex)
+{
+ untilIndex = qBound<int>(0, untilIndex, chainItems.count() - 1);
+ startingIndex = qBound<int>(0, startingIndex, untilIndex);
+
+ for (int i = startingIndex; i <= untilIndex; ++i) {
+ ScrollChainItem &chainItem(chainItems[i]);
+
+ // Map target rectangle and origin point to delegate widget's local coordinates.
+ QRect delegateRect = mapToChainItemFromScrollTarget(chainItem, localRect);
+
+ // Scroll the chain item.
+ chainItem.calculateScrolling(delegateRect, delegateRect.topLeft());
+ }
+}
+
void MScrollChain::applyScrolling()
{
for (ChainItemList::iterator item = chainItems.begin(); item != chainItems.end(); ++item) {
@@ -198,6 +216,15 @@ QPoint MScrollChain::mapToChainItemFromScrollTarget(const ScrollChainItem &item,
return mappedPoint;
}
+
+QRect MScrollChain::mapToChainItemFromScrollTarget(const ScrollChainItem &item,
+ const QRect &rect)
+{
+ QRect moved = rect;
+ moved.moveTo(mapToChainItemFromScrollTarget(item, rect.topLeft()));
+ return moved;
+}
+
QSharedPointer<MAbstractScroller> MScrollChain::findScrollerDelegate(const QGraphicsWidget *widget) const
{
QSharedPointer<MAbstractScroller> result;