qscroller.cpp

Absolute File Name:/home/qt/qt5_coco/qt5/qtbase/src/widgets/util/qscroller.cpp
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5-
6-
7-
8-
9bool qt_sendSpontaneousEvent(QObject *receiver, QEvent *event);-
10QDebug &operator<<(QDebug &dbg, const QScrollerPrivate::ScrollSegment &s)-
11{-
12 dbg << "\n Time: start:" << s.startTime << " duration:" << s.deltaTime << " stop progress:" << s.stopProgress;-
13 dbg << "\n Pos: start:" << s.startPos << " delta:" << s.deltaPos << " stop:" << s.stopPos;-
14 dbg << "\n Curve: type:" << s.curve.type() << "\n";-
15 return
never executed: return dbg;
dbg;
never executed: return dbg;
0
16}-
17-
18-
19-
20-
21-
22-
23-
24inline bool operator<=(const QPointF &p, qreal f)-
25{-
26 return
never executed: return (qAbs(p.x()) <= f) && (qAbs(p.y()) <= f);
(
(qAbs(p.x()) <= f)Description
TRUEnever evaluated
FALSEnever evaluated
qAbs(p.x()) <= f)
(qAbs(p.x()) <= f)Description
TRUEnever evaluated
FALSEnever evaluated
&& (
(qAbs(p.y()) <= f)Description
TRUEnever evaluated
FALSEnever evaluated
qAbs(p.y()) <= f)
(qAbs(p.y()) <= f)Description
TRUEnever evaluated
FALSEnever evaluated
;
never executed: return (qAbs(p.x()) <= f) && (qAbs(p.y()) <= f);
0
27}-
28-
29-
30inline bool operator<(const QPointF &p, qreal f)-
31{-
32 return
never executed: return (qAbs(p.x()) < f) && (qAbs(p.y()) < f);
(
(qAbs(p.x()) < f)Description
TRUEnever evaluated
FALSEnever evaluated
qAbs(p.x()) < f)
(qAbs(p.x()) < f)Description
TRUEnever evaluated
FALSEnever evaluated
&& (
(qAbs(p.y()) < f)Description
TRUEnever evaluated
FALSEnever evaluated
qAbs(p.y()) < f)
(qAbs(p.y()) < f)Description
TRUEnever evaluated
FALSEnever evaluated
;
never executed: return (qAbs(p.x()) < f) && (qAbs(p.y()) < f);
0
33}-
34-
35-
36inline bool operator>=(const QPointF &p, qreal f)-
37{-
38 return
never executed: return (qAbs(p.x()) >= f) || (qAbs(p.y()) >= f);
(
(qAbs(p.x()) >= f)Description
TRUEnever evaluated
FALSEnever evaluated
qAbs(p.x()) >= f)
(qAbs(p.x()) >= f)Description
TRUEnever evaluated
FALSEnever evaluated
|| (
(qAbs(p.y()) >= f)Description
TRUEnever evaluated
FALSEnever evaluated
qAbs(p.y()) >= f)
(qAbs(p.y()) >= f)Description
TRUEnever evaluated
FALSEnever evaluated
;
never executed: return (qAbs(p.x()) >= f) || (qAbs(p.y()) >= f);
0
39}-
40-
41-
42inline bool operator>(const QPointF &p, qreal f)-
43{-
44 return
never executed: return (qAbs(p.x()) > f) || (qAbs(p.y()) > f);
(
(qAbs(p.x()) > f)Description
TRUEnever evaluated
FALSEnever evaluated
qAbs(p.x()) > f)
(qAbs(p.x()) > f)Description
TRUEnever evaluated
FALSEnever evaluated
|| (
(qAbs(p.y()) > f)Description
TRUEnever evaluated
FALSEnever evaluated
qAbs(p.y()) > f)
(qAbs(p.y()) > f)Description
TRUEnever evaluated
FALSEnever evaluated
;
never executed: return (qAbs(p.x()) > f) || (qAbs(p.y()) > f);
0
45}-
46-
47-
48inline QPointF qAbs(const QPointF &p)-
49{-
50 return
never executed: return QPointF(qAbs(p.x()), qAbs(p.y()));
QPointF(qAbs(p.x()), qAbs(p.y()));
never executed: return QPointF(qAbs(p.x()), qAbs(p.y()));
0
51}-
52-
53-
54inline QPointF operator*(const QPointF &p1, const QPointF &p2)-
55{-
56 return
never executed: return QPointF(p1.x() * p2.x(), p1.y() * p2.y());
QPointF(p1.x() * p2.x(), p1.y() * p2.y());
never executed: return QPointF(p1.x() * p2.x(), p1.y() * p2.y());
0
57}-
58-
59-
60inline QPointF operator/(const QPointF &p1, const QPointF &p2)-
61{-
62 return
never executed: return QPointF(p1.x() / p2.x(), p1.y() / p2.y());
QPointF(p1.x() / p2.x(), p1.y() / p2.y());
never executed: return QPointF(p1.x() / p2.x(), p1.y() / p2.y());
0
63}-
64-
65inline QPointF clampToRect(const QPointF &p, const QRectF &rect)-
66{-
67 qreal x = qBound(rect.left(), p.x(), rect.right());-
68 qreal y = qBound(rect.top(), p.y(), rect.bottom());-
69 return
never executed: return QPointF(x, y);
QPointF(x, y);
never executed: return QPointF(x, y);
0
70}-
71-
72-
73inline int qSign(qreal r)-
74{-
75 return
never executed: return (r < 0) ? -1 : ((r > 0) ? 1 : 0);
(
(r < 0)Description
TRUEnever evaluated
FALSEnever evaluated
r < 0)
(r < 0)Description
TRUEnever evaluated
FALSEnever evaluated
? -1 : ((
(r > 0)Description
TRUEnever evaluated
FALSEnever evaluated
r > 0)
(r > 0)Description
TRUEnever evaluated
FALSEnever evaluated
? 1 : 0);
never executed: return (r < 0) ? -1 : ((r > 0) ? 1 : 0);
0
76}-
77-
78-
79-
80-
81static qreal differentialForProgress(const QEasingCurve &curve, qreal pos)-
82{-
83 const qreal dx = 0.01;-
84 qreal left = (
(pos < qreal(0.5))Description
TRUEnever evaluated
FALSEnever evaluated
pos < qreal(0.5))
(pos < qreal(0.5))Description
TRUEnever evaluated
FALSEnever evaluated
? pos : pos - qreal(dx);
0
85 qreal right = (
(pos >= qreal(0.5))Description
TRUEnever evaluated
FALSEnever evaluated
pos >= qreal(0.5))
(pos >= qreal(0.5))Description
TRUEnever evaluated
FALSEnever evaluated
? pos : pos + qreal(dx);
0
86 qreal d = (curve.valueForProgress(right) - curve.valueForProgress(left)) / qreal(dx);-
87-
88-
89-
90 return
never executed: return d;
d;
never executed: return d;
0
91}-
92-
93-
94-
95-
96static qreal progressForValue(const QEasingCurve &curve, qreal value)-
97{-
98 if (curve.type() >= QEasingCurve::InElastic
curve.type() >...rve::InElasticDescription
TRUEnever evaluated
FALSEnever evaluated
&&
0
99 curve.type() < QEasingCurve::Custom
curve.type() <...gCurve::CustomDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
100 QMessageLogger(__FILE__, 164, __PRETTY_FUNCTION__).warning("progressForValue(): QEasingCurves of type %d do not have an inverse, since they are not injective.", curve.type());-
101 return
never executed: return value;
value;
never executed: return value;
0
102 }-
103 if (value < qreal(0)
value < qreal(0)Description
TRUEnever evaluated
FALSEnever evaluated
|| value > qreal(1)
value > qreal(1)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
104 return
never executed: return value;
value;
never executed: return value;
0
105-
106 qreal progress = value, left(0), right(1);-
107 for (int iterations = 6; iterations
iterationsDescription
TRUEnever evaluated
FALSEnever evaluated
; --iterations) {
0
108 qreal v = curve.valueForProgress(progress);-
109 if (v < value
v < valueDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
110 left = progress;
never executed: left = progress;
0
111 else if (v > value
v > valueDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
112 right = progress;
never executed: right = progress;
0
113 else-
114 break;
never executed: break;
0
115 progress = (left + right) / qreal(2);-
116 }
never executed: end of block
0
117 return
never executed: return progress;
progress;
never executed: return progress;
0
118}-
119-
120-
121-
122class QScrollTimer : public QAbstractAnimation-
123{-
124public:-
125 QScrollTimer(QScrollerPrivate *_d)-
126 : QAbstractAnimation(_d), d(_d), ignoreUpdate(false), skip(0)-
127 { }
never executed: end of block
0
128-
129 int duration() const override-
130 {-
131 return
never executed: return -1;
-1;
never executed: return -1;
0
132 }-
133-
134 void start()-
135 {-
136-
137-
138 ignoreUpdate = true;-
139 QAbstractAnimation::start();-
140 ignoreUpdate = false;-
141 skip = 0;-
142 }
never executed: end of block
0
143-
144protected:-
145 void updateCurrentTime(int ) override-
146 {-
147 if (!ignoreUpdate
!ignoreUpdateDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
148 if (++
++skip >= d->frameRateSkip()Description
TRUEnever evaluated
FALSEnever evaluated
skip >= d->frameRateSkip()
++skip >= d->frameRateSkip()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
149 skip = 0;-
150 d->timerTick();-
151 }
never executed: end of block
0
152 }
never executed: end of block
0
153 }
never executed: end of block
0
154-
155private:-
156 QScrollerPrivate *d;-
157 bool ignoreUpdate;-
158 int skip;-
159};-
160typedef QMap<QObject *, QScroller *> ScrollerHash;-
161typedef QSet<QScroller *> ScrollerSet;-
162-
163namespace { namespace Q_QGS_qt_allScrollers { typedef ScrollerHash Type; QBasicAtomicInt guard = { QtGlobalStatic::Uninitialized }; __attribute__((visibility("hidden"))) inline Type *innerFunction() { struct HolderBase { ~HolderBase() noexcept { if (guard.load() == QtGlobalStatic::Initialized
guard.load() =...c::InitializedDescription
TRUEnever evaluated
FALSEnever evaluated
) guard.store(QtGlobalStatic::Destroyed);
never executed: guard.store(QtGlobalStatic::Destroyed);
}
never executed: end of block
}; static struct Holder : public HolderBase { Type value; Holder() noexcept(noexcept(Type ())) : value () { guard.store(QtGlobalStatic::Initialized); } } holder; return
never executed: return &holder.value;
&holder.value;
never executed: return &holder.value;
} } } static QGlobalStatic<ScrollerHash, Q_QGS_qt_allScrollers::innerFunction, Q_QGS_qt_allScrollers::guard> qt_allScrollers;
0
164namespace { namespace Q_QGS_qt_activeScrollers { typedef ScrollerSet Type; QBasicAtomicInt guard = { QtGlobalStatic::Uninitialized }; __attribute__((visibility("hidden"))) inline Type *innerFunction() { struct HolderBase { ~HolderBase() noexcept { if (guard.load() == QtGlobalStatic::Initialized
guard.load() =...c::InitializedDescription
TRUEnever evaluated
FALSEnever evaluated
) guard.store(QtGlobalStatic::Destroyed);
never executed: guard.store(QtGlobalStatic::Destroyed);
}
never executed: end of block
}; static struct Holder : public HolderBase { Type value; Holder() noexcept(noexcept(Type ())) : value () { guard.store(QtGlobalStatic::Initialized); } } holder; return
never executed: return &holder.value;
&holder.value;
never executed: return &holder.value;
} } } static QGlobalStatic<ScrollerSet, Q_QGS_qt_activeScrollers::innerFunction, Q_QGS_qt_activeScrollers::guard> qt_activeScrollers;
0
165-
166-
167-
168-
169-
170-
171bool QScroller::hasScroller(QObject *target)-
172{-
173 return
never executed: return (qt_allScrollers()->value(target));
(qt_allScrollers()->value(target));
never executed: return (qt_allScrollers()->value(target));
0
174}-
175QScroller *QScroller::scroller(QObject *target)-
176{-
177 if (!target
!targetDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
178 QMessageLogger(__FILE__, 301, __PRETTY_FUNCTION__).warning("QScroller::scroller() was called with a null target.");-
179 return
never executed: return 0;
0;
never executed: return 0;
0
180 }-
181-
182 if (qt_allScrollers()->contains(target)
qt_allScroller...ntains(target)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
183 return
never executed: return qt_allScrollers()->value(target);
qt_allScrollers()->value(target);
never executed: return qt_allScrollers()->value(target);
0
184-
185 QScroller *s = new QScroller(target);-
186 qt_allScrollers()->insert(target, s);-
187 return
never executed: return s;
s;
never executed: return s;
0
188}-
189-
190-
191-
192-
193-
194const QScroller *QScroller::scroller(const QObject *target)-
195{-
196 return
never executed: return scroller(const_cast<QObject*>(target));
scroller(const_cast<QObject*>(target));
never executed: return scroller(const_cast<QObject*>(target));
0
197}-
198-
199-
200-
201-
202-
203-
204QList<QScroller *> QScroller::activeScrollers()-
205{-
206 return
never executed: return qt_activeScrollers()->toList();
qt_activeScrollers()->toList();
never executed: return qt_activeScrollers()->toList();
0
207}-
208-
209-
210-
211-
212-
213QObject *QScroller::target() const-
214{-
215 const QScrollerPrivate * const d = d_func();-
216 return
never executed: return d->target;
d->target;
never executed: return d->target;
0
217}-
218QScrollerProperties QScroller::scrollerProperties() const-
219{-
220 const QScrollerPrivate * const d = d_func();-
221 return
never executed: return d->properties;
d->properties;
never executed: return d->properties;
0
222}-
223-
224void QScroller::setScrollerProperties(const QScrollerProperties &sp)-
225{-
226 QScrollerPrivate * const d = d_func();-
227 if (d->properties != sp
d->properties != spDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
228 d->properties = sp;-
229 scrollerPropertiesChanged(sp);-
230-
231-
232-
233 d->recalcScrollingSegments(true);-
234 }
never executed: end of block
0
235}
never executed: end of block
0
236Qt::GestureType QScroller::grabGesture(QObject *target, ScrollerGestureType scrollGestureType)-
237{-
238-
239 QScroller *s = scroller(target);-
240 if (!s
!sDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
241 return
never executed: return Qt::GestureType(0);
Qt::GestureType(0);
never executed: return Qt::GestureType(0);
0
242-
243 QScrollerPrivate *sp = s->d_ptr;-
244 if (sp->recognizer
sp->recognizerDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
245 ungrabGesture(target);
never executed: ungrabGesture(target);
0
246-
247 Qt::MouseButton button;-
248 switch (scrollGestureType) {-
249 case
never executed: case LeftMouseButtonGesture :
LeftMouseButtonGesture :
never executed: case LeftMouseButtonGesture :
button = Qt::LeftButton; break;
never executed: break;
0
250 case
never executed: case RightMouseButtonGesture :
RightMouseButtonGesture :
never executed: case RightMouseButtonGesture :
button = Qt::RightButton; break;
never executed: break;
0
251 case
never executed: case MiddleMouseButtonGesture:
MiddleMouseButtonGesture:
never executed: case MiddleMouseButtonGesture:
button = Qt::MiddleButton; break;
never executed: break;
0
252 default
never executed: default :
:
never executed: default :
0
253 case
never executed: case TouchGesture :
TouchGesture :
never executed: case TouchGesture :
button = Qt::NoButton; break;
never executed: break;
0
254 }-
255-
256 sp->recognizer = new QFlickGestureRecognizer(button);-
257 sp->recognizerType = QGestureRecognizer::registerRecognizer(sp->recognizer);-
258-
259 if (target->isWidgetType()
target->isWidgetType()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
260 QWidget *widget = static_cast<QWidget *>(target);-
261 widget->grabGesture(sp->recognizerType);-
262 if (scrollGestureType == TouchGesture
scrollGestureT...= TouchGestureDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
263 widget->setAttribute(Qt::WA_AcceptTouchEvents);
never executed: widget->setAttribute(Qt::WA_AcceptTouchEvents);
0
264-
265 }
never executed: end of block
else if (QGraphicsObject *go = qobject_cast<QGraphicsObject*>(target)
QGraphicsObjec...ject*>(target)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
266 if (scrollGestureType == TouchGesture
scrollGestureT...= TouchGestureDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
267 go->setAcceptTouchEvents(true);
never executed: go->setAcceptTouchEvents(true);
0
268 go->grabGesture(sp->recognizerType);-
269-
270 }
never executed: end of block
0
271 return
never executed: return sp->recognizerType;
sp->recognizerType;
never executed: return sp->recognizerType;
0
272}-
273-
274-
275-
276-
277-
278-
279-
280Qt::GestureType QScroller::grabbedGesture(QObject *target)-
281{-
282 QScroller *s = scroller(target);-
283 if (s
sDescription
TRUEnever evaluated
FALSEnever evaluated
&& s->d_ptr
s->d_ptrDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
284 return
never executed: return s->d_ptr->recognizerType;
s->d_ptr->recognizerType;
never executed: return s->d_ptr->recognizerType;
0
285 else-
286 return
never executed: return Qt::GestureType(0);
Qt::GestureType(0);
never executed: return Qt::GestureType(0);
0
287}-
288-
289-
290-
291-
292-
293-
294-
295void QScroller::ungrabGesture(QObject *target)-
296{-
297 QScroller *s = scroller(target);-
298 if (!s
!sDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
299 return;
never executed: return;
0
300-
301 QScrollerPrivate *sp = s->d_ptr;-
302 if (!sp->recognizer
!sp->recognizerDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
303 return;
never executed: return;
0
304-
305 if (target->isWidgetType()
target->isWidgetType()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
306 QWidget *widget = static_cast<QWidget *>(target);-
307 widget->ungrabGesture(sp->recognizerType);-
308-
309 }
never executed: end of block
else if (QGraphicsObject *go = qobject_cast<QGraphicsObject*>(target)
QGraphicsObjec...ject*>(target)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
310 go->ungrabGesture(sp->recognizerType);-
311-
312 }
never executed: end of block
0
313-
314 QGestureRecognizer::unregisterRecognizer(sp->recognizerType);-
315-
316 sp->recognizer = 0;-
317}
never executed: end of block
0
318-
319-
320-
321-
322-
323-
324QScroller::QScroller(QObject *target)-
325 : d_ptr(new QScrollerPrivate(this, target))-
326{-
327 ((!(target)) ? qt_assert("target",__FILE__,489) : qt_noop());-
328 QScrollerPrivate * const d = d_func();-
329 d->init();-
330}
never executed: end of block
0
331-
332-
333-
334-
335QScroller::~QScroller()-
336{-
337 QScrollerPrivate * const d = d_func();-
338-
339 QGestureRecognizer::unregisterRecognizer(d->recognizerType);-
340-
341 d->recognizer = 0;-
342-
343 qt_allScrollers()->remove(d->target);-
344 qt_activeScrollers()->remove(this);-
345-
346 delete d_ptr;-
347}
never executed: end of block
0
348QScroller::State QScroller::state() const-
349{-
350 const QScrollerPrivate * const d = d_func();-
351 return
never executed: return d->state;
d->state;
never executed: return d->state;
0
352}-
353-
354-
355-
356-
357void QScroller::stop()-
358{-
359 QScrollerPrivate * const d = d_func();-
360 if (d->state != Inactive
d->state != InactiveDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
361 QPointF here = clampToRect(d->contentPosition, d->contentPosRange);-
362 qreal snapX = d->nextSnapPos(here.x(), 0, Qt::Horizontal);-
363 qreal snapY = d->nextSnapPos(here.y(), 0, Qt::Vertical);-
364 QPointF snap = here;-
365 if (!qIsNaN(snapX)
!qIsNaN(snapX)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
366 snap.setX(snapX);
never executed: snap.setX(snapX);
0
367 if (!qIsNaN(snapY)
!qIsNaN(snapY)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
368 snap.setY(snapY);
never executed: snap.setY(snapY);
0
369 d->contentPosition = snap;-
370 d->overshootPosition = QPointF(0, 0);-
371-
372 d->setState(Inactive);-
373 }
never executed: end of block
0
374}
never executed: end of block
0
375QPointF QScroller::pixelPerMeter() const-
376{-
377 const QScrollerPrivate * const d = d_func();-
378 QPointF ppm = d->pixelPerMeter;-
379-
380-
381 if (QGraphicsObject *go = qobject_cast<QGraphicsObject *>(d->target)
QGraphicsObjec... *>(d->target)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
382 QTransform viewtr;-
383-
384 if (go->scene()
go->scene()Description
TRUEnever evaluated
FALSEnever evaluated
&& !go->scene()->views().isEmpty()
!go->scene()->...ws().isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
385 viewtr = go->scene()->views().first()->viewportTransform();
never executed: viewtr = go->scene()->views().first()->viewportTransform();
0
386 QTransform tr = go->deviceTransform(viewtr);-
387 if (tr.isScaling()
tr.isScaling()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
388 QPointF p0 = tr.map(QPointF(0, 0));-
389 QPointF px = tr.map(QPointF(1, 0));-
390 QPointF py = tr.map(QPointF(0, 1));-
391 ppm.rx() /= QLineF(p0, px).length();-
392 ppm.ry() /= QLineF(p0, py).length();-
393 }
never executed: end of block
0
394 }
never executed: end of block
0
395-
396 return
never executed: return ppm;
ppm;
never executed: return ppm;
0
397}-
398QPointF QScroller::velocity() const-
399{-
400 const QScrollerPrivate * const d = d_func();-
401 const QScrollerPropertiesPrivate *sp = d->properties.d.data();-
402-
403 switch (state()) {-
404 case
never executed: case Dragging:
Dragging:
never executed: case Dragging:
0
405 return
never executed: return d->releaseVelocity;
d->releaseVelocity;
never executed: return d->releaseVelocity;
0
406 case
never executed: case Scrolling:
Scrolling:
never executed: case Scrolling:
{
0
407 QPointF vel;-
408 qint64 now = d->monotonicTimer.elapsed();-
409-
410 if (!d->xSegments.isEmpty()
!d->xSegments.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
411 const QScrollerPrivate::ScrollSegment &s = d->xSegments.head();-
412 qreal progress = qreal(now - s.startTime) / qreal(s.deltaTime);-
413 qreal v = qSign(s.deltaPos) * qreal(s.deltaTime) / qreal(1000) * sp->decelerationFactor * qreal(0.5) * differentialForProgress(s.curve, progress);-
414 vel.setX(v);-
415 }
never executed: end of block
0
416-
417 if (!d->ySegments.isEmpty()
!d->ySegments.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
418 const QScrollerPrivate::ScrollSegment &s = d->ySegments.head();-
419 qreal progress = qreal(now - s.startTime) / qreal(s.deltaTime);-
420 qreal v = qSign(s.deltaPos) * qreal(s.deltaTime) / qreal(1000) * sp->decelerationFactor * qreal(0.5) * differentialForProgress(s.curve, progress);-
421 vel.setY(v);-
422 }
never executed: end of block
0
423 return
never executed: return vel;
vel;
never executed: return vel;
0
424 }-
425 default
never executed: default:
:
never executed: default:
0
426 return
never executed: return QPointF(0, 0);
QPointF(0, 0);
never executed: return QPointF(0, 0);
0
427 }-
428}-
429QPointF QScroller::finalPosition() const-
430{-
431 const QScrollerPrivate * const d = d_func();-
432 return
never executed: return QPointF(d->scrollingSegmentsEndPos(Qt::Horizontal), d->scrollingSegmentsEndPos(Qt::Vertical));
QPointF(d->scrollingSegmentsEndPos(Qt::Horizontal),
never executed: return QPointF(d->scrollingSegmentsEndPos(Qt::Horizontal), d->scrollingSegmentsEndPos(Qt::Vertical));
0
433 d->scrollingSegmentsEndPos(Qt::Vertical));
never executed: return QPointF(d->scrollingSegmentsEndPos(Qt::Horizontal), d->scrollingSegmentsEndPos(Qt::Vertical));
0
434}-
435void QScroller::scrollTo(const QPointF &pos)-
436{-
437-
438 scrollTo(pos, 300);-
439}
never executed: end of block
0
440-
441-
442-
443-
444-
445void QScroller::scrollTo(const QPointF &pos, int scrollTime)-
446{-
447 QScrollerPrivate * const d = d_func();-
448-
449 if (d->state == Pressed
d->state == PressedDescription
TRUEnever evaluated
FALSEnever evaluated
|| d->state == Dragging
d->state == DraggingDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
450 return;
never executed: return;
0
451-
452-
453 if (d->state == Inactive
d->state == InactiveDescription
TRUEnever evaluated
FALSEnever evaluated
&& !d->prepareScrolling(QPointF())
!d->prepareScr...ing(QPointF())Description
TRUEnever evaluated
FALSEnever evaluated
)
0
454 return;
never executed: return;
0
455-
456 QPointF newpos = clampToRect(pos, d->contentPosRange);-
457 qreal snapX = d->nextSnapPos(newpos.x(), 0, Qt::Horizontal);-
458 qreal snapY = d->nextSnapPos(newpos.y(), 0, Qt::Vertical);-
459 if (!qIsNaN(snapX)
!qIsNaN(snapX)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
460 newpos.setX(snapX);
never executed: newpos.setX(snapX);
0
461 if (!qIsNaN(snapY)
!qIsNaN(snapY)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
462 newpos.setY(snapY);
never executed: newpos.setY(snapY);
0
463-
464 while (false) QMessageLogger(__FILE__, 686, __PRETTY_FUNCTION__).debug() << "QScroller::scrollTo(req:" << pos << " [pix] / snap:" << newpos << ", " << scrollTime << " [ms])";
dead code: QMessageLogger(__FILE__, 686, __PRETTY_FUNCTION__).debug() << "QScroller::scrollTo(req:" << pos << " [pix] / snap:" << newpos << ", " << scrollTime << " [ms])";
-
465-
466 if (newpos == d->contentPosition + d->overshootPosition
newpos == d->c...rshootPositionDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
467 return;
never executed: return;
0
468-
469 QPointF vel = velocity();-
470-
471 if (scrollTime < 0
scrollTime < 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
472 scrollTime = 0;
never executed: scrollTime = 0;
0
473 qreal time = qreal(scrollTime) / 1000;-
474-
475 d->createScrollToSegments(vel.x(), time, newpos.x(), Qt::Horizontal, QScrollerPrivate::ScrollTypeScrollTo);-
476 d->createScrollToSegments(vel.y(), time, newpos.y(), Qt::Vertical, QScrollerPrivate::ScrollTypeScrollTo);-
477-
478 if (!scrollTime
!scrollTimeDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
479 d->setContentPositionHelperScrolling();
never executed: d->setContentPositionHelperScrolling();
0
480 d->setState(scrollTime ? Scrolling : Inactive);-
481}
never executed: end of block
0
482void QScroller::ensureVisible(const QRectF &rect, qreal xmargin, qreal ymargin)-
483{-
484-
485 ensureVisible(rect, xmargin, ymargin, 1000);-
486}
never executed: end of block
0
487-
488-
489-
490-
491-
492void QScroller::ensureVisible(const QRectF &rect, qreal xmargin, qreal ymargin, int scrollTime)-
493{-
494 QScrollerPrivate * const d = d_func();-
495-
496 if (d->state == Pressed
d->state == PressedDescription
TRUEnever evaluated
FALSEnever evaluated
|| d->state == Dragging
d->state == DraggingDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
497 return;
never executed: return;
0
498-
499 if (d->state == Inactive
d->state == InactiveDescription
TRUEnever evaluated
FALSEnever evaluated
&& !d->prepareScrolling(QPointF())
!d->prepareScr...ing(QPointF())Description
TRUEnever evaluated
FALSEnever evaluated
)
0
500 return;
never executed: return;
0
501-
502-
503 QPointF startPos(d->scrollingSegmentsEndPos(Qt::Horizontal),-
504 d->scrollingSegmentsEndPos(Qt::Vertical));-
505-
506 QRectF marginRect(rect.x() - xmargin, rect.y() - ymargin,-
507 rect.width() + 2 * xmargin, rect.height() + 2 * ymargin);-
508-
509 QSizeF visible = d->viewportSize;-
510 QRectF visibleRect(startPos, visible);-
511-
512 while (false) QMessageLogger(__FILE__, 750, __PRETTY_FUNCTION__).debug() << "QScroller::ensureVisible(" << rect << " [pix], " << xmargin << " [pix], " << ymargin << " [pix], " << scrollTime << "[ms])";
dead code: QMessageLogger(__FILE__, 750, __PRETTY_FUNCTION__).debug() << "QScroller::ensureVisible(" << rect << " [pix], " << xmargin << " [pix], " << ymargin << " [pix], " << scrollTime << "[ms])";
-
513 while (false) QMessageLogger(__FILE__, 751, __PRETTY_FUNCTION__).debug() << " --> content position:" << d->contentPosition;
dead code: QMessageLogger(__FILE__, 751, __PRETTY_FUNCTION__).debug() << " --> content position:" << d->contentPosition;
-
514-
515 if (visibleRect.contains(marginRect)
visibleRect.co...ns(marginRect)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
516 return;
never executed: return;
0
517-
518 QPointF newPos = startPos;-
519-
520 if (visibleRect.width() < rect.width()
visibleRect.wi...< rect.width()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
521-
522 if (rect.left() > visibleRect.left()
rect.left() > ...bleRect.left()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
523 newPos.setX(rect.left());
never executed: newPos.setX(rect.left());
0
524 else if (rect.right() < visibleRect.right()
rect.right() <...leRect.right()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
525 newPos.setX(rect.right() - visible.width());
never executed: newPos.setX(rect.right() - visible.width());
0
526-
527 }
never executed: end of block
else if (visibleRect.width() < marginRect.width()
visibleRect.wi...inRect.width()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
528 newPos.setX(rect.center().x() - visibleRect.width() / 2);-
529 }
never executed: end of block
else if (marginRect.left() > visibleRect.left()
marginRect.lef...bleRect.left()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
530 newPos.setX(marginRect.left());-
531 }
never executed: end of block
else if (marginRect.right() < visibleRect.right()
marginRect.rig...leRect.right()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
532 newPos.setX(marginRect.right() - visible.width());-
533 }
never executed: end of block
0
534-
535 if (visibleRect.height() < rect.height()
visibleRect.he... rect.height()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
536-
537 if (rect.top() > visibleRect.top()
rect.top() > visibleRect.top()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
538 newPos.setX(rect.top());
never executed: newPos.setX(rect.top());
0
539 else if (rect.bottom() < visibleRect.bottom()
rect.bottom() ...eRect.bottom()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
540 newPos.setX(rect.bottom() - visible.height());
never executed: newPos.setX(rect.bottom() - visible.height());
0
541-
542 }
never executed: end of block
else if (visibleRect.height() < marginRect.height()
visibleRect.he...nRect.height()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
543 newPos.setY(rect.center().y() - visibleRect.height() / 2);-
544 }
never executed: end of block
else if (marginRect.top() > visibleRect.top()
marginRect.top...ibleRect.top()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
545 newPos.setY(marginRect.top());-
546 }
never executed: end of block
else if (marginRect.bottom() < visibleRect.bottom()
marginRect.bot...eRect.bottom()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
547 newPos.setY(marginRect.bottom() - visible.height());-
548 }
never executed: end of block
0
549-
550-
551 newPos = clampToRect(newPos, d->contentPosRange);-
552 if (newPos == startPos
newPos == startPosDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
553 return;
never executed: return;
0
554-
555 scrollTo(newPos, scrollTime);-
556}
never executed: end of block
0
557void QScroller::resendPrepareEvent()-
558{-
559 QScrollerPrivate * const d = d_func();-
560 d->prepareScrolling(d->pressPosition);-
561}
never executed: end of block
0
562-
563-
564-
565-
566-
567-
568void QScroller::setSnapPositionsX(const QList<qreal> &positions)-
569{-
570 QScrollerPrivate * const d = d_func();-
571 d->snapPositionsX = positions;-
572 d->snapIntervalX = 0.0;-
573-
574 d->recalcScrollingSegments();-
575}
never executed: end of block
0
576void QScroller::setSnapPositionsX(qreal first, qreal interval)-
577{-
578 QScrollerPrivate * const d = d_func();-
579 d->snapFirstX = first;-
580 d->snapIntervalX = interval;-
581 d->snapPositionsX.clear();-
582-
583 d->recalcScrollingSegments();-
584}
never executed: end of block
0
585-
586-
587-
588-
589-
590-
591void QScroller::setSnapPositionsY(const QList<qreal> &positions)-
592{-
593 QScrollerPrivate * const d = d_func();-
594 d->snapPositionsY = positions;-
595 d->snapIntervalY = 0.0;-
596-
597 d->recalcScrollingSegments();-
598}
never executed: end of block
0
599-
600-
601-
602-
603-
604-
605-
606void QScroller::setSnapPositionsY(qreal first, qreal interval)-
607{-
608 QScrollerPrivate * const d = d_func();-
609 d->snapFirstY = first;-
610 d->snapIntervalY = interval;-
611 d->snapPositionsY.clear();-
612-
613 d->recalcScrollingSegments();-
614}
never executed: end of block
0
615-
616-
617-
618-
619-
620QScrollerPrivate::QScrollerPrivate(QScroller *q, QObject *_target)-
621 : target(_target)-
622-
623 , recognizer(0)-
624 , recognizerType(Qt::CustomGesture)-
625-
626 , state(QScroller::Inactive)-
627 , firstScroll(true)-
628 , pressTimestamp(0)-
629 , lastTimestamp(0)-
630 , snapFirstX(-1.0)-
631 , snapIntervalX(0.0)-
632 , snapFirstY(-1.0)-
633 , snapIntervalY(0.0)-
634-
635 , scrollTimer(new QScrollTimer(this))-
636-
637 , q_ptr(q)-
638{-
639 connect(target, qFlagLocation("2""destroyed(QObject*)" "\0" __FILE__ ":" "893"), this, qFlagLocation("1""targetDestroyed()" "\0" __FILE__ ":" "893"));-
640}
never executed: end of block
0
641-
642void QScrollerPrivate::init()-
643{-
644 setDpiFromWidget(0);-
645 monotonicTimer.start();-
646}
never executed: end of block
0
647-
648void QScrollerPrivate::sendEvent(QObject *o, QEvent *e)-
649{-
650 qt_sendSpontaneousEvent(o, e);-
651}
never executed: end of block
0
652-
653const char *QScrollerPrivate::stateName(QScroller::State state)-
654{-
655 switch (state) {-
656 case
never executed: case QScroller::Inactive:
QScroller::Inactive:
never executed: case QScroller::Inactive:
return
never executed: return "inactive";
"inactive";
never executed: return "inactive";
0
657 case
never executed: case QScroller::Pressed:
QScroller::Pressed:
never executed: case QScroller::Pressed:
return
never executed: return "pressed";
"pressed";
never executed: return "pressed";
0
658 case
never executed: case QScroller::Dragging:
QScroller::Dragging:
never executed: case QScroller::Dragging:
return
never executed: return "dragging";
"dragging";
never executed: return "dragging";
0
659 case
never executed: case QScroller::Scrolling:
QScroller::Scrolling:
never executed: case QScroller::Scrolling:
return
never executed: return "scrolling";
"scrolling";
never executed: return "scrolling";
0
660 default
never executed: default:
:
never executed: default:
return
never executed: return "(invalid)";
"(invalid)";
never executed: return "(invalid)";
0
661 }-
662}-
663-
664const char *QScrollerPrivate::inputName(QScroller::Input input)-
665{-
666 switch (input) {-
667 case
never executed: case QScroller::InputPress:
QScroller::InputPress:
never executed: case QScroller::InputPress:
return
never executed: return "press";
"press";
never executed: return "press";
0
668 case
never executed: case QScroller::InputMove:
QScroller::InputMove:
never executed: case QScroller::InputMove:
return
never executed: return "move";
"move";
never executed: return "move";
0
669 case
never executed: case QScroller::InputRelease:
QScroller::InputRelease:
never executed: case QScroller::InputRelease:
return
never executed: return "release";
"release";
never executed: return "release";
0
670 default
never executed: default:
:
never executed: default:
return
never executed: return "(invalid)";
"(invalid)";
never executed: return "(invalid)";
0
671 }-
672}-
673-
674void QScrollerPrivate::targetDestroyed()-
675{-
676-
677 scrollTimer->stop();-
678-
679 delete q_ptr;-
680}
never executed: end of block
0
681-
682void QScrollerPrivate::timerTick()-
683{-
684 struct timerevent {-
685 QScroller::State state;-
686 typedef void (QScrollerPrivate::*timerhandler_t)();-
687 timerhandler_t handler;-
688 };-
689-
690 timerevent timerevents[] = {-
691 { QScroller::Dragging, &QScrollerPrivate::timerEventWhileDragging },-
692 { QScroller::Scrolling, &QScrollerPrivate::timerEventWhileScrolling },-
693 };-
694-
695 for (int i = 0; i < int(sizeof(timerevents) / sizeof(*timerevents))
i < int(sizeof...*timerevents))Description
TRUEnever evaluated
FALSEnever evaluated
; ++i) {
0
696 timerevent *te = timerevents + i;-
697-
698 if (state == te->state
state == te->stateDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
699 (this->*te->handler)();-
700 return;
never executed: return;
0
701 }-
702 }
never executed: end of block
0
703-
704-
705 scrollTimer->stop();-
706-
707}
never executed: end of block
0
708bool QScroller::handleInput(Input input, const QPointF &position, qint64 timestamp)-
709{-
710 QScrollerPrivate * const d = d_func();-
711-
712 while (false) QMessageLogger(__FILE__, 979, __PRETTY_FUNCTION__).debug() << "QScroller::handleInput(" << input << ", " << d->stateName(d->state) << ", " << position << ", " << timestamp << ')';
dead code: QMessageLogger(__FILE__, 979, __PRETTY_FUNCTION__).debug() << "QScroller::handleInput(" << input << ", " << d->stateName(d->state) << ", " << position << ", " << timestamp << ')';
-
713 struct statechange {-
714 State state;-
715 Input input;-
716 typedef bool (QScrollerPrivate::*inputhandler_t)(const QPointF &position, qint64 timestamp);-
717 inputhandler_t handler;-
718 };-
719-
720 statechange statechanges[] = {-
721 { QScroller::Inactive, InputPress, &QScrollerPrivate::pressWhileInactive },-
722 { QScroller::Pressed, InputMove, &QScrollerPrivate::moveWhilePressed },-
723 { QScroller::Pressed, InputRelease, &QScrollerPrivate::releaseWhilePressed },-
724 { QScroller::Dragging, InputMove, &QScrollerPrivate::moveWhileDragging },-
725 { QScroller::Dragging, InputRelease, &QScrollerPrivate::releaseWhileDragging },-
726 { QScroller::Scrolling, InputPress, &QScrollerPrivate::pressWhileScrolling }-
727 };-
728-
729 for (int i = 0; i < int(sizeof(statechanges) / sizeof(*statechanges))
i < int(sizeof...statechanges))Description
TRUEnever evaluated
FALSEnever evaluated
; ++i) {
0
730 statechange *sc = statechanges + i;-
731-
732 if (d->state == sc->state
d->state == sc->stateDescription
TRUEnever evaluated
FALSEnever evaluated
&& input == sc->input
input == sc->inputDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
733 return
never executed: return (d->*sc->handler)(position - d->overshootPosition, timestamp);
(d->*sc->handler)(position - d->overshootPosition, timestamp);
never executed: return (d->*sc->handler)(position - d->overshootPosition, timestamp);
0
734 }
never executed: end of block
0
735 return
never executed: return false;
false;
never executed: return false;
0
736}-
737-
738-
739-
740-
741QPointF QScrollerPrivate::realDpi(int screen)-
742{-
743 QWidget *w = QApplication::desktop()->screen(screen);-
744 return
never executed: return QPointF(w->physicalDpiX(), w->physicalDpiY());
QPointF(w->physicalDpiX(), w->physicalDpiY());
never executed: return QPointF(w->physicalDpiX(), w->physicalDpiY());
0
745}-
746-
747-
748-
749-
750-
751-
752-
753QPointF QScrollerPrivate::dpi() const-
754{-
755 return
never executed: return pixelPerMeter * qreal(0.0254);
pixelPerMeter * qreal(0.0254);
never executed: return pixelPerMeter * qreal(0.0254);
0
756}-
757-
758-
759-
760-
761-
762-
763-
764void QScrollerPrivate::setDpi(const QPointF &dpi)-
765{-
766 pixelPerMeter = dpi / qreal(0.0254);-
767}
never executed: end of block
0
768-
769-
770-
771-
772void QScrollerPrivate::setDpiFromWidget(QWidget *widget)-
773{-
774 QDesktopWidget *dw = QApplication::desktop();-
775 setDpi(realDpi(widget ? dw->screenNumber(widget) : dw->primaryScreen()));-
776}
never executed: end of block
0
777-
778-
779-
780-
781-
782void QScrollerPrivate::updateVelocity(const QPointF &deltaPixelRaw, qint64 deltaTime)-
783{-
784 if (deltaTime <= 0
deltaTime <= 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
785 return;
never executed: return;
0
786-
787 QScroller * const q = q_func();-
788 QPointF ppm = q->pixelPerMeter();-
789 const QScrollerPropertiesPrivate *sp = properties.d.data();-
790 QPointF deltaPixel = deltaPixelRaw;-
791-
792 while (false) QMessageLogger(__FILE__, 1081, __PRETTY_FUNCTION__).debug() << "QScroller::updateVelocity(" << deltaPixelRaw << " [delta pix], " << deltaTime << " [delta ms])";
dead code: QMessageLogger(__FILE__, 1081, __PRETTY_FUNCTION__).debug() << "QScroller::updateVelocity(" << deltaPixelRaw << " [delta pix], " << deltaTime << " [delta ms])";
-
793-
794-
795 if (((
((deltaPixelRa...) > qreal(2.5)Description
TRUEnever evaluated
FALSEnever evaluated
deltaPixelRaw / qreal(deltaTime)).manhattanLength() / ((ppm.x() + ppm.y()) / 2) * 1000) > qreal(2.5)
((deltaPixelRa...) > qreal(2.5)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
796 deltaPixel = deltaPixelRaw * qreal(2.5) * ppm / 1000 / (deltaPixelRaw / qreal(deltaTime)).manhattanLength();
never executed: deltaPixel = deltaPixelRaw * qreal(2.5) * ppm / 1000 / (deltaPixelRaw / qreal(deltaTime)).manhattanLength();
0
797-
798 QPointF newv = -deltaPixel / qreal(deltaTime) * qreal(1000) / ppm;-
799-
800-
801-
802 qreal smoothing = sp->dragVelocitySmoothingFactor * qMin(qreal(deltaTime), qreal(50)) / qreal(50);-
803-
804-
805-
806 if ((
(releaseVeloci...QPointF(0, 0))Description
TRUEnever evaluated
FALSEnever evaluated
releaseVelocity != QPointF(0, 0))
(releaseVeloci...QPointF(0, 0))Description
TRUEnever evaluated
FALSEnever evaluated
&& (
(deltaTime < 100)Description
TRUEnever evaluated
FALSEnever evaluated
deltaTime < 100)
(deltaTime < 100)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
807 while (false) QMessageLogger(__FILE__, 1096, __PRETTY_FUNCTION__).debug() << "SMOOTHED from " << newv << " to " << newv * smoothing + releaseVelocity * (qreal(1) - smoothing);
dead code: QMessageLogger(__FILE__, 1096, __PRETTY_FUNCTION__).debug() << "SMOOTHED from " << newv << " to " << newv * smoothing + releaseVelocity * (qreal(1) - smoothing);
-
808-
809-
810 if (!newv.x()
!newv.x()Description
TRUEnever evaluated
FALSEnever evaluated
|| (
(qSign(release...ign(newv.x()))Description
TRUEnever evaluated
FALSEnever evaluated
qSign(releaseVelocity.x()) == qSign(newv.x()))
(qSign(release...ign(newv.x()))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
811 newv.setX(newv.x() * smoothing + releaseVelocity.x() * (qreal(1) - smoothing));
never executed: newv.setX(newv.x() * smoothing + releaseVelocity.x() * (qreal(1) - smoothing));
0
812 if (!newv.y()
!newv.y()Description
TRUEnever evaluated
FALSEnever evaluated
|| (
(qSign(release...ign(newv.y()))Description
TRUEnever evaluated
FALSEnever evaluated
qSign(releaseVelocity.y()) == qSign(newv.y()))
(qSign(release...ign(newv.y()))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
813 newv.setY(newv.y() * smoothing + releaseVelocity.y() * (qreal(1) - smoothing));
never executed: newv.setY(newv.y() * smoothing + releaseVelocity.y() * (qreal(1) - smoothing));
0
814 }
never executed: end of block
else
0
815 while (false) QMessageLogger(__FILE__, 1104, __PRETTY_FUNCTION__).debug() << "NO SMOOTHING to " << newv;
dead code: QMessageLogger(__FILE__, 1104, __PRETTY_FUNCTION__).debug() << "NO SMOOTHING to " << newv;
-
816-
817 releaseVelocity.setX(qBound(-sp->maximumVelocity, newv.x(), sp->maximumVelocity));-
818 releaseVelocity.setY(qBound(-sp->maximumVelocity, newv.y(), sp->maximumVelocity));-
819-
820 while (false) QMessageLogger(__FILE__, 1109, __PRETTY_FUNCTION__).debug() << " --> new velocity:" << releaseVelocity;
dead code: QMessageLogger(__FILE__, 1109, __PRETTY_FUNCTION__).debug() << " --> new velocity:" << releaseVelocity;
-
821}
never executed: end of block
0
822-
823void QScrollerPrivate::pushSegment(ScrollType type, qreal deltaTime, qreal stopProgress, qreal startPos, qreal deltaPos, qreal stopPos, QEasingCurve::Type curve, Qt::Orientation orientation)-
824{-
825 if (startPos == stopPos
startPos == stopPosDescription
TRUEnever evaluated
FALSEnever evaluated
|| deltaPos == 0
deltaPos == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
826 return;
never executed: return;
0
827-
828 ScrollSegment s;-
829 if (orientation == Qt::Horizontal
orientation == Qt::HorizontalDescription
TRUEnever evaluated
FALSEnever evaluated
&& !xSegments.isEmpty()
!xSegments.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
830 s.startTime = xSegments.last().startTime + xSegments.last().deltaTime * xSegments.last().stopProgress;
never executed: s.startTime = xSegments.last().startTime + xSegments.last().deltaTime * xSegments.last().stopProgress;
0
831 else if (orientation == Qt::Vertical
orientation == Qt::VerticalDescription
TRUEnever evaluated
FALSEnever evaluated
&& !ySegments.isEmpty()
!ySegments.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
832 s.startTime = ySegments.last().startTime + ySegments.last().deltaTime * ySegments.last().stopProgress;
never executed: s.startTime = ySegments.last().startTime + ySegments.last().deltaTime * ySegments.last().stopProgress;
0
833 else-
834 s.startTime = monotonicTimer.elapsed();
never executed: s.startTime = monotonicTimer.elapsed();
0
835-
836 s.startPos = startPos;-
837 s.deltaPos = deltaPos;-
838 s.stopPos = stopPos;-
839 s.deltaTime = deltaTime * 1000;-
840 s.stopProgress = stopProgress;-
841 s.curve.setType(curve);-
842 s.type = type;-
843-
844 if (orientation == Qt::Horizontal
orientation == Qt::HorizontalDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
845 xSegments.enqueue(s);
never executed: xSegments.enqueue(s);
0
846 else-
847 ySegments.enqueue(s);
never executed: ySegments.enqueue(s);
0
848-
849 while (false) QMessageLogger(__FILE__, 1138, __PRETTY_FUNCTION__).debug() << "+++ Added a new ScrollSegment: " << s;
dead code: QMessageLogger(__FILE__, 1138, __PRETTY_FUNCTION__).debug() << "+++ Added a new ScrollSegment: " << s;
-
850}
never executed: end of block
0
851-
852-
853-
854-
855-
856void QScrollerPrivate::recalcScrollingSegments(bool forceRecalc)-
857{-
858 QScroller * const q = q_func();-
859 QPointF ppm = q->pixelPerMeter();-
860-
861 releaseVelocity = q->velocity();-
862-
863 if (forceRecalc
forceRecalcDescription
TRUEnever evaluated
FALSEnever evaluated
||
0
864 !scrollingSegmentsValid(Qt::Horizontal)
!scrollingSegm...t::Horizontal)Description
TRUEnever evaluated
FALSEnever evaluated
||
0
865 !scrollingSegmentsValid(Qt::Vertical)
!scrollingSegm...(Qt::Vertical)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
866 createScrollingSegments(releaseVelocity, contentPosition + overshootPosition, ppm);
never executed: createScrollingSegments(releaseVelocity, contentPosition + overshootPosition, ppm);
0
867}
never executed: end of block
0
868-
869-
870-
871-
872qreal QScrollerPrivate::scrollingSegmentsEndPos(Qt::Orientation orientation) const-
873{-
874 if (orientation == Qt::Horizontal
orientation == Qt::HorizontalDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
875 if (xSegments.isEmpty()
xSegments.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
876 return
never executed: return contentPosition.x() + overshootPosition.x();
contentPosition.x() + overshootPosition.x();
never executed: return contentPosition.x() + overshootPosition.x();
0
877 else-
878 return
never executed: return xSegments.last().stopPos;
xSegments.last().stopPos;
never executed: return xSegments.last().stopPos;
0
879 } else {-
880 if (ySegments.isEmpty()
ySegments.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
881 return
never executed: return contentPosition.y() + overshootPosition.y();
contentPosition.y() + overshootPosition.y();
never executed: return contentPosition.y() + overshootPosition.y();
0
882 else-
883 return
never executed: return ySegments.last().stopPos;
ySegments.last().stopPos;
never executed: return ySegments.last().stopPos;
0
884 }-
885}-
886-
887-
888-
889-
890bool QScrollerPrivate::scrollingSegmentsValid(Qt::Orientation orientation)-
891{-
892 QQueue<ScrollSegment> *segments;-
893 qreal minPos;-
894 qreal maxPos;-
895-
896 if (orientation == Qt::Horizontal
orientation == Qt::HorizontalDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
897 segments = &xSegments;-
898 minPos = contentPosRange.left();-
899 maxPos = contentPosRange.right();-
900 }
never executed: end of block
else {
0
901 segments = &ySegments;-
902 minPos = contentPosRange.top();-
903 maxPos = contentPosRange.bottom();-
904 }
never executed: end of block
0
905-
906 if (segments->isEmpty()
segments->isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
907 return
never executed: return true;
true;
never executed: return true;
0
908-
909 const ScrollSegment &last = segments->last();-
910 qreal stopPos = last.stopPos;-
911-
912 if (last.type == ScrollTypeScrollTo
last.type == S...llTypeScrollToDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
913 return
never executed: return true;
true;
never executed: return true;
0
914-
915 if (last.type == ScrollTypeOvershoot
last.type == S...lTypeOvershootDescription
TRUEnever evaluated
FALSEnever evaluated
&&
0
916 (stopPos != minPos
stopPos != minPosDescription
TRUEnever evaluated
FALSEnever evaluated
&& stopPos != maxPos
stopPos != maxPosDescription
TRUEnever evaluated
FALSEnever evaluated
))
0
917 return
never executed: return false;
false;
never executed: return false;
0
918-
919 if (stopPos < minPos
stopPos < minPosDescription
TRUEnever evaluated
FALSEnever evaluated
|| stopPos > maxPos
stopPos > maxPosDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
920 return
never executed: return false;
false;
never executed: return false;
0
921-
922 if (stopPos == minPos
stopPos == minPosDescription
TRUEnever evaluated
FALSEnever evaluated
|| stopPos == maxPos
stopPos == maxPosDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
923 return
never executed: return true;
true;
never executed: return true;
0
924-
925 qreal nextSnap = nextSnapPos(stopPos, 0, orientation);-
926 if (!qIsNaN(nextSnap)
!qIsNaN(nextSnap)Description
TRUEnever evaluated
FALSEnever evaluated
&& stopPos != nextSnap
stopPos != nextSnapDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
927 return
never executed: return false;
false;
never executed: return false;
0
928-
929 return
never executed: return true;
true;
never executed: return true;
0
930}-
931-
932-
933-
934-
935void QScrollerPrivate::createScrollToSegments(qreal v, qreal deltaTime, qreal endPos, Qt::Orientation orientation, ScrollType type)-
936{-
937 (void)v;;-
938-
939 if (orientation == Qt::Horizontal
orientation == Qt::HorizontalDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
940 xSegments.clear();
never executed: xSegments.clear();
0
941 else-
942 ySegments.clear();
never executed: ySegments.clear();
0
943-
944 while (false) QMessageLogger(__FILE__, 1233, __PRETTY_FUNCTION__).debug() << "+++ createScrollToSegments: t:" << deltaTime << "ep:" << endPos << "o:" << int(orientation);
dead code: QMessageLogger(__FILE__, 1233, __PRETTY_FUNCTION__).debug() << "+++ createScrollToSegments: t:" << deltaTime << "ep:" << endPos << "o:" << int(orientation);
-
945-
946 const QScrollerPropertiesPrivate *sp = properties.d.data();-
947-
948 qreal startPos = (
(orientation =...t::Horizontal)Description
TRUEnever evaluated
FALSEnever evaluated
orientation == Qt::Horizontal)
(orientation =...t::Horizontal)Description
TRUEnever evaluated
FALSEnever evaluated
? contentPosition.x() + overshootPosition.x()
0
949 : contentPosition.y() + overshootPosition.y();-
950 qreal deltaPos = (endPos - startPos) / 2;-
951-
952 pushSegment(type, deltaTime * qreal(0.3), qreal(1.0), startPos, deltaPos, startPos + deltaPos, QEasingCurve::InQuad, orientation);-
953 pushSegment(type, deltaTime * qreal(0.7), qreal(1.0), startPos + deltaPos, deltaPos, endPos, sp->scrollingCurve.type(), orientation);-
954}
never executed: end of block
0
955-
956-
957-
958void QScrollerPrivate::createScrollingSegments(qreal v, qreal startPos,-
959 qreal deltaTime, qreal deltaPos,-
960 Qt::Orientation orientation)-
961{-
962 const QScrollerPropertiesPrivate *sp = properties.d.data();-
963-
964 QScrollerProperties::OvershootPolicy policy;-
965 qreal minPos;-
966 qreal maxPos;-
967 qreal viewSize;-
968-
969 if (orientation == Qt::Horizontal
orientation == Qt::HorizontalDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
970 xSegments.clear();-
971 policy = sp->hOvershootPolicy;-
972 minPos = contentPosRange.left();-
973 maxPos = contentPosRange.right();-
974 viewSize = viewportSize.width();-
975 }
never executed: end of block
else {
0
976 ySegments.clear();-
977 policy = sp->vOvershootPolicy;-
978 minPos = contentPosRange.top();-
979 maxPos = contentPosRange.bottom();-
980 viewSize = viewportSize.height();-
981 }
never executed: end of block
0
982-
983 bool alwaysOvershoot = (policy == QScrollerProperties::OvershootAlwaysOn);-
984 bool noOvershoot = (
(policy == QSc...hootAlwaysOff)Description
TRUEnever evaluated
FALSEnever evaluated
policy == QScrollerProperties::OvershootAlwaysOff)
(policy == QSc...hootAlwaysOff)Description
TRUEnever evaluated
FALSEnever evaluated
|| !sp->overshootScrollDistanceFactor
!sp->overshoot...DistanceFactorDescription
TRUEnever evaluated
FALSEnever evaluated
;
0
985 bool canOvershoot = !noOvershoot
!noOvershootDescription
TRUEnever evaluated
FALSEnever evaluated
&& (alwaysOvershoot
alwaysOvershootDescription
TRUEnever evaluated
FALSEnever evaluated
|| maxPos
maxPosDescription
TRUEnever evaluated
FALSEnever evaluated
);
0
986-
987 while (false) QMessageLogger(__FILE__, 1276, __PRETTY_FUNCTION__).debug() << "+++ createScrollingSegments: s:" << startPos << "maxPos:" << maxPos << "o:" << int(orientation);
dead code: QMessageLogger(__FILE__, 1276, __PRETTY_FUNCTION__).debug() << "+++ createScrollingSegments: s:" << startPos << "maxPos:" << maxPos << "o:" << int(orientation);
-
988-
989 while (false) QMessageLogger(__FILE__, 1278, __PRETTY_FUNCTION__).debug() << "v = " << v << ", decelerationFactor = " << sp->decelerationFactor << ", curveType = " << sp->scrollingCurve.type();
dead code: QMessageLogger(__FILE__, 1278, __PRETTY_FUNCTION__).debug() << "v = " << v << ", decelerationFactor = " << sp->decelerationFactor << ", curveType = " << sp->scrollingCurve.type();
-
990-
991 qreal endPos = startPos + deltaPos;-
992-
993 while (false) QMessageLogger(__FILE__, 1282, __PRETTY_FUNCTION__).debug() << " Real Delta:" << deltaPos;
dead code: QMessageLogger(__FILE__, 1282, __PRETTY_FUNCTION__).debug() << " Real Delta:" << deltaPos;
-
994-
995-
996 if ((startPos < minPos
startPos < minPosDescription
TRUEnever evaluated
FALSEnever evaluated
&& endPos < minPos
endPos < minPosDescription
TRUEnever evaluated
FALSEnever evaluated
) ||
0
997 (startPos > maxPos
startPos > maxPosDescription
TRUEnever evaluated
FALSEnever evaluated
&& endPos > maxPos
endPos > maxPosDescription
TRUEnever evaluated
FALSEnever evaluated
)) {
0
998 qreal stopPos = endPos < minPos
endPos < minPosDescription
TRUEnever evaluated
FALSEnever evaluated
? minPos : maxPos;
0
999 qreal oDeltaTime = sp->overshootScrollTime;-
1000-
1001 pushSegment(ScrollTypeOvershoot, oDeltaTime * qreal(0.7), qreal(1.0), startPos, stopPos - startPos, stopPos, sp->scrollingCurve.type(), orientation);-
1002 return;
never executed: return;
0
1003 }-
1004-
1005-
1006 qreal nextSnap = nextSnapPos(endPos, 0, orientation);-
1007 qreal lowerSnapPos = nextSnapPos(startPos, -1, orientation);-
1008 qreal higherSnapPos = nextSnapPos(startPos, 1, orientation);-
1009-
1010 while (false) QMessageLogger(__FILE__, 1299, __PRETTY_FUNCTION__).debug() << " Real Delta:" << lowerSnapPos << '-' << nextSnap << '-' <<higherSnapPos;
dead code: QMessageLogger(__FILE__, 1299, __PRETTY_FUNCTION__).debug() << " Real Delta:" << lowerSnapPos << '-' << nextSnap << '-' <<higherSnapPos;
-
1011-
1012-
1013 if (nextSnap > higherSnapPos
nextSnap > higherSnapPosDescription
TRUEnever evaluated
FALSEnever evaluated
|| qIsNaN(higherSnapPos)
qIsNaN(higherSnapPos)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1014 higherSnapPos = nextSnap;
never executed: higherSnapPos = nextSnap;
0
1015 if (nextSnap < lowerSnapPos
nextSnap < lowerSnapPosDescription
TRUEnever evaluated
FALSEnever evaluated
|| qIsNaN(lowerSnapPos)
qIsNaN(lowerSnapPos)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1016 lowerSnapPos = nextSnap;
never executed: lowerSnapPos = nextSnap;
0
1017-
1018 if (qAbs(v) < sp->minimumVelocity
qAbs(v) < sp->minimumVelocityDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1019-
1020 while (false) QMessageLogger(__FILE__, 1309, __PRETTY_FUNCTION__).debug() << "### below minimum Vel" << orientation;
dead code: QMessageLogger(__FILE__, 1309, __PRETTY_FUNCTION__).debug() << "### below minimum Vel" << orientation;
-
1021-
1022-
1023 if (qIsNaN(nextSnap)
qIsNaN(nextSnap)Description
TRUEnever evaluated
FALSEnever evaluated
|| nextSnap == startPos
nextSnap == startPosDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1024 return;
never executed: return;
0
1025-
1026-
1027-
1028 qreal snapDistance = higherSnapPos - lowerSnapPos;-
1029-
1030 qreal pressDistance = (
(orientation =...t::Horizontal)Description
TRUEnever evaluated
FALSEnever evaluated
orientation == Qt::Horizontal)
(orientation =...t::Horizontal)Description
TRUEnever evaluated
FALSEnever evaluated
?
0
1031 lastPosition.x() - pressPosition.x() :-
1032 lastPosition.y() - pressPosition.y();-
1033-
1034-
1035 if (sp->snapPositionRatio == 0.0
sp->snapPositionRatio == 0.0Description
TRUEnever evaluated
FALSEnever evaluated
|| qAbs(pressDistance / sp->snapPositionRatio) > snapDistance
qAbs(pressDist...> snapDistanceDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1036 endPos = nextSnap;
never executed: endPos = nextSnap;
0
1037 else if (pressDistance < 0.0
pressDistance < 0.0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1038 endPos = lowerSnapPos;
never executed: endPos = lowerSnapPos;
0
1039 else-
1040 endPos = higherSnapPos;
never executed: endPos = higherSnapPos;
0
1041-
1042 deltaPos = endPos - startPos;-
1043 qreal midPos = startPos + deltaPos * qreal(0.3);-
1044 pushSegment(ScrollTypeFlick, sp->snapTime * qreal(0.3), qreal(1.0), startPos, midPos - startPos, midPos, QEasingCurve::InQuad, orientation);-
1045 pushSegment(ScrollTypeFlick, sp->snapTime * qreal(0.7), qreal(1.0), midPos, endPos - midPos, endPos, sp->scrollingCurve.type(), orientation);-
1046 return;
never executed: return;
0
1047 }-
1048-
1049-
1050 if (v > 0
v > 0Description
TRUEnever evaluated
FALSEnever evaluated
&& !qIsNaN(higherSnapPos)
!qIsNaN(higherSnapPos)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1051-
1052 if (endPos - startPos
endPos - startPosDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1053 deltaTime *= qAbs((higherSnapPos - startPos) / (endPos - startPos));
never executed: deltaTime *= qAbs((higherSnapPos - startPos) / (endPos - startPos));
0
1054 if (deltaTime > sp->snapTime
deltaTime > sp->snapTimeDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1055 deltaTime = sp->snapTime;
never executed: deltaTime = sp->snapTime;
0
1056 endPos = higherSnapPos;-
1057-
1058 }
never executed: end of block
else if (v < 0
v < 0Description
TRUEnever evaluated
FALSEnever evaluated
&& !qIsNaN(lowerSnapPos)
!qIsNaN(lowerSnapPos)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1059-
1060 if (endPos - startPos
endPos - startPosDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1061 deltaTime *= qAbs((lowerSnapPos - startPos) / (endPos - startPos));
never executed: deltaTime *= qAbs((lowerSnapPos - startPos) / (endPos - startPos));
0
1062 if (deltaTime > sp->snapTime
deltaTime > sp->snapTimeDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1063 deltaTime = sp->snapTime;
never executed: deltaTime = sp->snapTime;
0
1064 endPos = lowerSnapPos;-
1065-
1066-
1067 }
never executed: end of block
else if (endPos < minPos
endPos < minPosDescription
TRUEnever evaluated
FALSEnever evaluated
|| endPos > maxPos
endPos > maxPosDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1068 qreal stopPos = endPos < minPos
endPos < minPosDescription
TRUEnever evaluated
FALSEnever evaluated
? minPos : maxPos;
0
1069-
1070 while (false) QMessageLogger(__FILE__, 1359, __PRETTY_FUNCTION__).debug() << "Overshoot: delta:" << (stopPos - startPos);
dead code: QMessageLogger(__FILE__, 1359, __PRETTY_FUNCTION__).debug() << "Overshoot: delta:" << (stopPos - startPos);
-
1071-
1072 qreal stopProgress = progressForValue(sp->scrollingCurve, qAbs((stopPos - startPos) / deltaPos));-
1073-
1074 if (!canOvershoot
!canOvershootDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1075 while (false) QMessageLogger(__FILE__, 1364, __PRETTY_FUNCTION__).debug() << "Overshoot stopp:" << stopProgress;
dead code: QMessageLogger(__FILE__, 1364, __PRETTY_FUNCTION__).debug() << "Overshoot stopp:" << stopProgress;
-
1076-
1077 pushSegment(ScrollTypeFlick, deltaTime, stopProgress, startPos, endPos, stopPos, sp->scrollingCurve.type(), orientation);-
1078 }
never executed: end of block
else {
0
1079 qreal oDeltaTime = sp->overshootScrollTime;-
1080 qreal oStopProgress = qMin(stopProgress + oDeltaTime * qreal(0.3) / deltaTime, qreal(1));-
1081 qreal oDistance = startPos + deltaPos * sp->scrollingCurve.valueForProgress(oStopProgress) - stopPos;-
1082 qreal oMaxDistance = qSign(oDistance) * (viewSize * sp->overshootScrollDistanceFactor);-
1083-
1084 while (false) QMessageLogger(__FILE__, 1373, __PRETTY_FUNCTION__).debug() << "1 oDistance:" << oDistance << "Max:" << oMaxDistance << "stopP/oStopP" << stopProgress << oStopProgress;
dead code: QMessageLogger(__FILE__, 1373, __PRETTY_FUNCTION__).debug() << "1 oDistance:" << oDistance << "Max:" << oMaxDistance << "stopP/oStopP" << stopProgress << oStopProgress;
-
1085-
1086 if (qAbs(oDistance) > qAbs(oMaxDistance)
qAbs(oDistance...(oMaxDistance)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1087 oStopProgress = progressForValue(sp->scrollingCurve, qAbs((stopPos + oMaxDistance - startPos) / deltaPos));-
1088 oDistance = oMaxDistance;-
1089 while (false) QMessageLogger(__FILE__, 1378, __PRETTY_FUNCTION__).debug() << "2 oDistance:" << oDistance << "Max:" << oMaxDistance << "stopP/oStopP" << stopProgress << oStopProgress;
dead code: QMessageLogger(__FILE__, 1378, __PRETTY_FUNCTION__).debug() << "2 oDistance:" << oDistance << "Max:" << oMaxDistance << "stopP/oStopP" << stopProgress << oStopProgress;
-
1090 }
never executed: end of block
0
1091-
1092 pushSegment(ScrollTypeFlick, deltaTime, oStopProgress, startPos, deltaPos, stopPos + oDistance, sp->scrollingCurve.type(), orientation);-
1093 pushSegment(ScrollTypeOvershoot, oDeltaTime * qreal(0.7), qreal(1.0), stopPos + oDistance, -oDistance, stopPos, sp->scrollingCurve.type(), orientation);-
1094 }
never executed: end of block
0
1095 return;
never executed: return;
0
1096 }-
1097-
1098 pushSegment(ScrollTypeFlick, deltaTime, qreal(1.0), startPos, deltaPos, endPos, sp->scrollingCurve.type(), orientation);-
1099}
never executed: end of block
0
1100-
1101-
1102void QScrollerPrivate::createScrollingSegments(const QPointF &v,-
1103 const QPointF &startPos,-
1104 const QPointF &ppm)-
1105{-
1106 const QScrollerPropertiesPrivate *sp = properties.d.data();-
1107 QVector2D vel(v);-
1108 qreal deltaTime = (qreal(2) * vel.length()) / (sp->decelerationFactor * differentialForProgress(sp->scrollingCurve, 0));-
1109 QPointF deltaPos = (vel.normalized() * QVector2D(ppm)).toPointF() * deltaTime * deltaTime * qreal(0.5) * sp->decelerationFactor;-
1110-
1111 createScrollingSegments(v.x(), startPos.x(), deltaTime, deltaPos.x(),-
1112 Qt::Horizontal);-
1113 createScrollingSegments(v.y(), startPos.y(), deltaTime, deltaPos.y(),-
1114 Qt::Vertical);-
1115}
never executed: end of block
0
1116-
1117-
1118-
1119-
1120-
1121bool QScrollerPrivate::prepareScrolling(const QPointF &position)-
1122{-
1123 QScrollPrepareEvent spe(position);-
1124 spe.ignore();-
1125 sendEvent(target, &spe);-
1126-
1127 while (false) QMessageLogger(__FILE__, 1431, __PRETTY_FUNCTION__).debug() << "QScrollPrepareEvent returned from" << target << "with" << spe.isAccepted() << "mcp:" << spe.contentPosRange() << "cp:" << spe.contentPos();
dead code: QMessageLogger(__FILE__, 1431, __PRETTY_FUNCTION__).debug() << "QScrollPrepareEvent returned from" << target << "with" << spe.isAccepted() << "mcp:" << spe.contentPosRange() << "cp:" << spe.contentPos();
-
1128 if (spe.isAccepted()
spe.isAccepted()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1129 QPointF oldContentPos = contentPosition + overshootPosition;-
1130 QPointF contentDelta = spe.contentPos() - oldContentPos;-
1131-
1132 viewportSize = spe.viewportSize();-
1133 contentPosRange = spe.contentPosRange();-
1134 if (contentPosRange.width() < 0
contentPosRange.width() < 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1135 contentPosRange.setWidth(0);
never executed: contentPosRange.setWidth(0);
0
1136 if (contentPosRange.height() < 0
contentPosRange.height() < 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1137 contentPosRange.setHeight(0);
never executed: contentPosRange.setHeight(0);
0
1138 contentPosition = clampToRect(spe.contentPos(), contentPosRange);-
1139 overshootPosition = spe.contentPos() - contentPosition;-
1140-
1141-
1142 if (contentDelta != QPointF(0, 0)
contentDelta != QPointF(0, 0)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1143-
1144 for (int i = 0; i < xSegments.count()
i < xSegments.count()Description
TRUEnever evaluated
FALSEnever evaluated
; i++)
0
1145 xSegments[i].startPos -= contentDelta.x();
never executed: xSegments[i].startPos -= contentDelta.x();
0
1146-
1147 for (int i = 0; i < ySegments.count()
i < ySegments.count()Description
TRUEnever evaluated
FALSEnever evaluated
; i++)
0
1148 ySegments[i].startPos -= contentDelta.y();
never executed: ySegments[i].startPos -= contentDelta.y();
0
1149 }
never executed: end of block
0
1150-
1151 if (QWidget *w = qobject_cast<QWidget *>(target)
QWidget *w = q...get *>(target)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1152 setDpiFromWidget(w);
never executed: setDpiFromWidget(w);
0
1153-
1154 if (QGraphicsObject *go = qobject_cast<QGraphicsObject *>(target)
QGraphicsObjec...ect *>(target)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1155-
1156 if (go->scene()
go->scene()Description
TRUEnever evaluated
FALSEnever evaluated
&& !go->scene()->views().isEmpty()
!go->scene()->...ws().isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1157 setDpiFromWidget(go->scene()->views().first());
never executed: setDpiFromWidget(go->scene()->views().first());
0
1158 }
never executed: end of block
0
1159-
1160-
1161 if (state == QScroller::Scrolling
state == QScroller::ScrollingDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1162 recalcScrollingSegments();-
1163 }
never executed: end of block
0
1164 return
never executed: return true;
true;
never executed: return true;
0
1165 }-
1166-
1167 return
never executed: return false;
false;
never executed: return false;
0
1168}-
1169-
1170void QScrollerPrivate::handleDrag(const QPointF &position, qint64 timestamp)-
1171{-
1172 const QScrollerPropertiesPrivate *sp = properties.d.data();-
1173-
1174 QPointF deltaPixel = position - lastPosition;-
1175 qint64 deltaTime = timestamp - lastTimestamp;-
1176-
1177 if (sp->axisLockThreshold
sp->axisLockThresholdDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1178 int dx = qAbs(deltaPixel.x());-
1179 int dy = qAbs(deltaPixel.y());-
1180 if (dx
dxDescription
TRUEnever evaluated
FALSEnever evaluated
|| dy
dyDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1181 bool vertical = (dy > dx);-
1182 qreal alpha = qreal(vertical ? dx : dy) / qreal(vertical ? dy : dx);-
1183-
1184 if (alpha <= sp->axisLockThreshold
alpha <= sp->axisLockThresholdDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1185 if (vertical
verticalDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1186 deltaPixel.setX(0);
never executed: deltaPixel.setX(0);
0
1187 else-
1188 deltaPixel.setY(0);
never executed: deltaPixel.setY(0);
0
1189 }-
1190 }
never executed: end of block
0
1191 }
never executed: end of block
0
1192-
1193-
1194 updateVelocity(deltaPixel, deltaTime);-
1195-
1196-
1197 QRectF max = contentPosRange;-
1198 bool canScrollX = (
(max.width() > 0)Description
TRUEnever evaluated
FALSEnever evaluated
max.width() > 0)
(max.width() > 0)Description
TRUEnever evaluated
FALSEnever evaluated
|| (
(sp->hOvershoo...shootAlwaysOn)Description
TRUEnever evaluated
FALSEnever evaluated
sp->hOvershootPolicy == QScrollerProperties::OvershootAlwaysOn)
(sp->hOvershoo...shootAlwaysOn)Description
TRUEnever evaluated
FALSEnever evaluated
;
0
1199 bool canScrollY = (
(max.height() > 0)Description
TRUEnever evaluated
FALSEnever evaluated
max.height() > 0)
(max.height() > 0)Description
TRUEnever evaluated
FALSEnever evaluated
|| (
(sp->vOvershoo...shootAlwaysOn)Description
TRUEnever evaluated
FALSEnever evaluated
sp->vOvershootPolicy == QScrollerProperties::OvershootAlwaysOn)
(sp->vOvershoo...shootAlwaysOn)Description
TRUEnever evaluated
FALSEnever evaluated
;
0
1200-
1201 if (!canScrollX
!canScrollXDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1202 deltaPixel.setX(0);-
1203 releaseVelocity.setX(0);-
1204 }
never executed: end of block
0
1205 if (!canScrollY
!canScrollYDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1206 deltaPixel.setY(0);-
1207 releaseVelocity.setY(0);-
1208 }
never executed: end of block
0
1209-
1210-
1211-
1212-
1213-
1214-
1215 dragDistance += deltaPixel;-
1216-
1217-
1218-
1219 lastPosition = position;-
1220 lastTimestamp = timestamp;-
1221}
never executed: end of block
0
1222-
1223bool QScrollerPrivate::pressWhileInactive(const QPointF &position, qint64 timestamp)-
1224{-
1225 if (prepareScrolling(position)
prepareScrolling(position)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1226 const QScrollerPropertiesPrivate *sp = properties.d.data();-
1227-
1228 if (!contentPosRange.isNull()
!contentPosRange.isNull()Description
TRUEnever evaluated
FALSEnever evaluated
||
0
1229 (
(sp->hOvershoo...shootAlwaysOn)Description
TRUEnever evaluated
FALSEnever evaluated
sp->hOvershootPolicy == QScrollerProperties::OvershootAlwaysOn)
(sp->hOvershoo...shootAlwaysOn)Description
TRUEnever evaluated
FALSEnever evaluated
||
0
1230 (
(sp->vOvershoo...shootAlwaysOn)Description
TRUEnever evaluated
FALSEnever evaluated
sp->vOvershootPolicy == QScrollerProperties::OvershootAlwaysOn)
(sp->vOvershoo...shootAlwaysOn)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1231-
1232 lastPosition = pressPosition = position;-
1233 lastTimestamp = pressTimestamp = timestamp;-
1234 setState(QScroller::Pressed);-
1235 }
never executed: end of block
0
1236 }
never executed: end of block
0
1237 return
never executed: return false;
false;
never executed: return false;
0
1238}-
1239-
1240bool QScrollerPrivate::releaseWhilePressed(const QPointF &, qint64)-
1241{-
1242 if (overshootPosition != QPointF(0.0, 0.0)
overshootPosit...intF(0.0, 0.0)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1243 setState(QScroller::Scrolling);-
1244 return
never executed: return true;
true;
never executed: return true;
0
1245 } else {-
1246 setState(QScroller::Inactive);-
1247 return
never executed: return false;
false;
never executed: return false;
0
1248 }-
1249}-
1250-
1251bool QScrollerPrivate::moveWhilePressed(const QPointF &position, qint64 timestamp)-
1252{-
1253 QScroller * const q = q_func();-
1254 const QScrollerPropertiesPrivate *sp = properties.d.data();-
1255 QPointF ppm = q->pixelPerMeter();-
1256-
1257 QPointF deltaPixel = position - pressPosition;-
1258-
1259 bool moveAborted = false;-
1260 bool moveStarted = (((deltaPixel / ppm).manhattanLength()) > sp->dragStartDistance);-
1261-
1262-
1263 if (moveStarted
moveStartedDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1264 QRectF max = contentPosRange;-
1265 bool canScrollX = (max.width() > 0);-
1266 bool canScrollY = (max.height() > 0);-
1267-
1268 if (sp->hOvershootPolicy == QScrollerProperties::OvershootAlwaysOn
sp->hOvershoot...rshootAlwaysOnDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1269 canScrollX = true;
never executed: canScrollX = true;
0
1270 if (sp->vOvershootPolicy == QScrollerProperties::OvershootAlwaysOn
sp->vOvershoot...rshootAlwaysOnDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1271 canScrollY = true;
never executed: canScrollY = true;
0
1272-
1273 if (qAbs(deltaPixel.x() / ppm.x()) < qAbs(deltaPixel.y() / ppm.y())
qAbs(deltaPixe...y() / ppm.y())Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1274 if (!canScrollY
!canScrollYDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1275 moveAborted = true;
never executed: moveAborted = true;
0
1276 }
never executed: end of block
else {
0
1277 if (!canScrollX
!canScrollXDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1278 moveAborted = true;
never executed: moveAborted = true;
0
1279 }
never executed: end of block
0
1280 }-
1281-
1282 if (moveAborted
moveAbortedDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1283 setState(QScroller::Inactive);-
1284 moveStarted = false;-
1285-
1286 }
never executed: end of block
else if (moveStarted
moveStartedDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1287 setState(QScroller::Dragging);-
1288-
1289-
1290 deltaPixel = deltaPixel - deltaPixel * (sp->dragStartDistance / deltaPixel.manhattanLength());-
1291-
1292 if (deltaPixel != QPointF(0, 0)
deltaPixel != QPointF(0, 0)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1293-
1294 handleDrag(pressPosition + deltaPixel, timestamp);-
1295 }
never executed: end of block
0
1296 }
never executed: end of block
0
1297 return
never executed: return moveStarted;
moveStarted;
never executed: return moveStarted;
0
1298}-
1299-
1300bool QScrollerPrivate::moveWhileDragging(const QPointF &position, qint64 timestamp)-
1301{-
1302-
1303 handleDrag(position, timestamp);-
1304 return
never executed: return true;
true;
never executed: return true;
0
1305}-
1306-
1307void QScrollerPrivate::timerEventWhileDragging()-
1308{-
1309 if (dragDistance != QPointF(0, 0)
dragDistance != QPointF(0, 0)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1310 while (false) QMessageLogger(__FILE__, 1614, __PRETTY_FUNCTION__).debug() << "QScroller::timerEventWhileDragging() -- dragDistance:" << dragDistance;
dead code: QMessageLogger(__FILE__, 1614, __PRETTY_FUNCTION__).debug() << "QScroller::timerEventWhileDragging() -- dragDistance:" << dragDistance;
-
1311-
1312 setContentPositionHelperDragging(-dragDistance);-
1313 dragDistance = QPointF(0, 0);-
1314 }
never executed: end of block
0
1315}
never executed: end of block
0
1316-
1317bool QScrollerPrivate::releaseWhileDragging(const QPointF &position, qint64 timestamp)-
1318{-
1319 QScroller * const q = q_func();-
1320 const QScrollerPropertiesPrivate *sp = properties.d.data();-
1321-
1322-
1323 handleDrag(position, timestamp);-
1324-
1325-
1326-
1327 QPointF deltaPixel = position - pressPosition;-
1328 if (((
((deltaPixel /...gStartDistanceDescription
TRUEnever evaluated
FALSEnever evaluated
deltaPixel / q->pixelPerMeter()).manhattanLength()) > sp->dragStartDistance
((deltaPixel /...gStartDistanceDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1329-
1330-
1331 if ((
(oldVelocity != QPointF(0, 0))Description
TRUEnever evaluated
FALSEnever evaluated
oldVelocity != QPointF(0, 0))
(oldVelocity != QPointF(0, 0))Description
TRUEnever evaluated
FALSEnever evaluated
&& sp->acceleratingFlickMaximumTime
sp->accelerati...ickMaximumTimeDescription
TRUEnever evaluated
FALSEnever evaluated
&&
0
1332 ((
((timestamp - ...mTime * 1000))Description
TRUEnever evaluated
FALSEnever evaluated
timestamp - pressTimestamp) < qint64(sp->acceleratingFlickMaximumTime * 1000))
((timestamp - ...mTime * 1000))Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1333-
1334-
1335 int signX = 0, signY = 0;-
1336 if (releaseVelocity.x()
releaseVelocity.x()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1337 signX = (
(releaseVeloci...ocity.x() > 0)Description
TRUEnever evaluated
FALSEnever evaluated
releaseVelocity.x() > 0) == (oldVelocity.x() > 0)
(releaseVeloci...ocity.x() > 0)Description
TRUEnever evaluated
FALSEnever evaluated
? 1 : -1;
never executed: signX = (releaseVelocity.x() > 0) == (oldVelocity.x() > 0) ? 1 : -1;
0
1338 if (releaseVelocity.y()
releaseVelocity.y()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1339 signY = (
(releaseVeloci...ocity.y() > 0)Description
TRUEnever evaluated
FALSEnever evaluated
releaseVelocity.y() > 0) == (oldVelocity.y() > 0)
(releaseVeloci...ocity.y() > 0)Description
TRUEnever evaluated
FALSEnever evaluated
? 1 : -1;
never executed: signY = (releaseVelocity.y() > 0) == (oldVelocity.y() > 0) ? 1 : -1;
0
1340-
1341 if (signX > 0
signX > 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1342 releaseVelocity.setX(qBound(-sp->maximumVelocity,
never executed: releaseVelocity.setX(qBound(-sp->maximumVelocity, oldVelocity.x() * sp->acceleratingFlickSpeedupFactor, sp->maximumVelocity));
0
1343 oldVelocity.x() * sp->acceleratingFlickSpeedupFactor,
never executed: releaseVelocity.setX(qBound(-sp->maximumVelocity, oldVelocity.x() * sp->acceleratingFlickSpeedupFactor, sp->maximumVelocity));
0
1344 sp->maximumVelocity));
never executed: releaseVelocity.setX(qBound(-sp->maximumVelocity, oldVelocity.x() * sp->acceleratingFlickSpeedupFactor, sp->maximumVelocity));
0
1345 if (signY > 0
signY > 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1346 releaseVelocity.setY(qBound(-sp->maximumVelocity,
never executed: releaseVelocity.setY(qBound(-sp->maximumVelocity, oldVelocity.y() * sp->acceleratingFlickSpeedupFactor, sp->maximumVelocity));
0
1347 oldVelocity.y() * sp->acceleratingFlickSpeedupFactor,
never executed: releaseVelocity.setY(qBound(-sp->maximumVelocity, oldVelocity.y() * sp->acceleratingFlickSpeedupFactor, sp->maximumVelocity));
0
1348 sp->maximumVelocity));
never executed: releaseVelocity.setY(qBound(-sp->maximumVelocity, oldVelocity.y() * sp->acceleratingFlickSpeedupFactor, sp->maximumVelocity));
0
1349 }
never executed: end of block
0
1350 }
never executed: end of block
0
1351-
1352 QPointF ppm = q->pixelPerMeter();-
1353 createScrollingSegments(releaseVelocity, contentPosition + overshootPosition, ppm);-
1354-
1355 while (false) QMessageLogger(__FILE__, 1659, __PRETTY_FUNCTION__).debug() << "QScroller::releaseWhileDragging() -- velocity:" << releaseVelocity << "-- minimum velocity:" << sp->minimumVelocity << "overshoot" << overshootPosition;
dead code: QMessageLogger(__FILE__, 1659, __PRETTY_FUNCTION__).debug() << "QScroller::releaseWhileDragging() -- velocity:" << releaseVelocity << "-- minimum velocity:" << sp->minimumVelocity << "overshoot" << overshootPosition;
-
1356-
1357 if (xSegments.isEmpty()
xSegments.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
&& ySegments.isEmpty()
ySegments.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1358 setState(QScroller::Inactive);
never executed: setState(QScroller::Inactive);
0
1359 else-
1360 setState(QScroller::Scrolling);
never executed: setState(QScroller::Scrolling);
0
1361-
1362 return
never executed: return true;
true;
never executed: return true;
0
1363}-
1364-
1365void QScrollerPrivate::timerEventWhileScrolling()-
1366{-
1367 while (false) QMessageLogger(__FILE__, 1671, __PRETTY_FUNCTION__).debug("QScroller::timerEventWhileScrolling()");
dead code: QMessageLogger(__FILE__, 1671, __PRETTY_FUNCTION__).debug("QScroller::timerEventWhileScrolling()");
-
1368-
1369 setContentPositionHelperScrolling();-
1370 if (xSegments.isEmpty()
xSegments.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
&& ySegments.isEmpty()
ySegments.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1371 setState(QScroller::Inactive);
never executed: setState(QScroller::Inactive);
0
1372}
never executed: end of block
0
1373-
1374bool QScrollerPrivate::pressWhileScrolling(const QPointF &position, qint64 timestamp)-
1375{-
1376 QScroller * const q = q_func();-
1377-
1378 if ((
(q->velocity()...roughVelocity)Description
TRUEnever evaluated
FALSEnever evaluated
q->velocity() <= properties.d->maximumClickThroughVelocity)
(q->velocity()...roughVelocity)Description
TRUEnever evaluated
FALSEnever evaluated
&&
0
1379 (
(overshootPosi...ntF(0.0, 0.0))Description
TRUEnever evaluated
FALSEnever evaluated
overshootPosition == QPointF(0.0, 0.0))
(overshootPosi...ntF(0.0, 0.0))Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1380 setState(QScroller::Inactive);-
1381 return
never executed: return false;
false;
never executed: return false;
0
1382 } else {-
1383 lastPosition = pressPosition = position;-
1384 lastTimestamp = pressTimestamp = timestamp;-
1385 setState(QScroller::Pressed);-
1386 setState(QScroller::Dragging);-
1387 return
never executed: return true;
true;
never executed: return true;
0
1388 }-
1389}-
1390-
1391-
1392-
1393-
1394void QScrollerPrivate::setState(QScroller::State newstate)-
1395{-
1396 QScroller * const q = q_func();-
1397 bool sendLastScroll = false;-
1398-
1399 if (state == newstate
state == newstateDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1400 return;
never executed: return;
0
1401-
1402 while (false) QMessageLogger(__FILE__, 1706, __PRETTY_FUNCTION__).debug() << q << "QScroller::setState(" << stateName(newstate) << ')';
dead code: QMessageLogger(__FILE__, 1706, __PRETTY_FUNCTION__).debug() << q << "QScroller::setState(" << stateName(newstate) << ')';
-
1403-
1404 switch (newstate) {-
1405 case
never executed: case QScroller::Inactive:
QScroller::Inactive:
never executed: case QScroller::Inactive:
0
1406-
1407 scrollTimer->stop();-
1408-
1409-
1410-
1411 if (!firstScroll
!firstScrollDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1412 sendLastScroll = true;
never executed: sendLastScroll = true;
0
1413-
1414 releaseVelocity = QPointF(0, 0);-
1415 break;
never executed: break;
0
1416-
1417 case
never executed: case QScroller::Pressed:
QScroller::Pressed:
never executed: case QScroller::Pressed:
0
1418-
1419 scrollTimer->stop();-
1420-
1421-
1422 oldVelocity = releaseVelocity;-
1423 releaseVelocity = QPointF(0, 0);-
1424 break;
never executed: break;
0
1425-
1426 case
never executed: case QScroller::Dragging:
QScroller::Dragging:
never executed: case QScroller::Dragging:
0
1427 dragDistance = QPointF(0, 0);-
1428-
1429 if (state == QScroller::Pressed
state == QScroller::PressedDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1430 scrollTimer->start();
never executed: scrollTimer->start();
0
1431-
1432 break;
never executed: break;
0
1433-
1434 case
never executed: case QScroller::Scrolling:
QScroller::Scrolling:
never executed: case QScroller::Scrolling:
0
1435-
1436 scrollTimer->start();-
1437-
1438 break;
never executed: break;
0
1439 }-
1440-
1441 qSwap(state, newstate);-
1442-
1443 if (sendLastScroll
sendLastScrollDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1444 QScrollEvent se(contentPosition, overshootPosition, QScrollEvent::ScrollFinished);-
1445 sendEvent(target, &se);-
1446 firstScroll = true;-
1447 }
never executed: end of block
0
1448 if (state == QScroller::Dragging
state == QScroller::DraggingDescription
TRUEnever evaluated
FALSEnever evaluated
|| state == QScroller::Scrolling
state == QScroller::ScrollingDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1449 qt_activeScrollers()->insert(q);
never executed: qt_activeScrollers()->insert(q);
0
1450 else-
1451 qt_activeScrollers()->remove(q);
never executed: qt_activeScrollers()->remove(q);
0
1452 q->stateChanged(state);-
1453}
never executed: end of block
0
1454void QScrollerPrivate::setContentPositionHelperDragging(const QPointF &deltaPos)-
1455{-
1456 const QScrollerPropertiesPrivate *sp = properties.d.data();-
1457-
1458 if (sp->overshootDragResistanceFactor
sp->overshootD...sistanceFactorDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1459 overshootPosition /= sp->overshootDragResistanceFactor;
never executed: overshootPosition /= sp->overshootDragResistanceFactor;
0
1460-
1461 QPointF oldPos = contentPosition + overshootPosition;-
1462 QPointF newPos = oldPos + deltaPos;-
1463-
1464 while (false) QMessageLogger(__FILE__, 1782, __PRETTY_FUNCTION__).debug() << "QScroller::setContentPositionHelperDragging(" << deltaPos << " [pix])";
dead code: QMessageLogger(__FILE__, 1782, __PRETTY_FUNCTION__).debug() << "QScroller::setContentPositionHelperDragging(" << deltaPos << " [pix])";
-
1465 while (false) QMessageLogger(__FILE__, 1783, __PRETTY_FUNCTION__).debug() << " --> overshoot:" << overshootPosition << "- old pos:" << oldPos << "- new pos:" << newPos;
dead code: QMessageLogger(__FILE__, 1783, __PRETTY_FUNCTION__).debug() << " --> overshoot:" << overshootPosition << "- old pos:" << oldPos << "- new pos:" << newPos;
-
1466-
1467 QPointF oldClampedPos = clampToRect(oldPos, contentPosRange);-
1468 QPointF newClampedPos = clampToRect(newPos, contentPosRange);-
1469-
1470-
1471 bool alwaysOvershootX = (sp->hOvershootPolicy == QScrollerProperties::OvershootAlwaysOn);-
1472 bool alwaysOvershootY = (sp->vOvershootPolicy == QScrollerProperties::OvershootAlwaysOn);-
1473 bool noOvershootX = (
(sp->hOvershoo...hootAlwaysOff)Description
TRUEnever evaluated
FALSEnever evaluated
sp->hOvershootPolicy == QScrollerProperties::OvershootAlwaysOff)
(sp->hOvershoo...hootAlwaysOff)Description
TRUEnever evaluated
FALSEnever evaluated
||
0
1474 ((
(state == QScroller::Dragging)Description
TRUEnever evaluated
FALSEnever evaluated
state == QScroller::Dragging)
(state == QScroller::Dragging)Description
TRUEnever evaluated
FALSEnever evaluated
&& !sp->overshootDragResistanceFactor
!sp->overshoot...sistanceFactorDescription
TRUEnever evaluated
FALSEnever evaluated
) ||
0
1475 !sp->overshootDragDistanceFactor
!sp->overshoot...DistanceFactorDescription
TRUEnever evaluated
FALSEnever evaluated
;
0
1476 bool noOvershootY = (
(sp->vOvershoo...hootAlwaysOff)Description
TRUEnever evaluated
FALSEnever evaluated
sp->vOvershootPolicy == QScrollerProperties::OvershootAlwaysOff)
(sp->vOvershoo...hootAlwaysOff)Description
TRUEnever evaluated
FALSEnever evaluated
||
0
1477 ((
(state == QScroller::Dragging)Description
TRUEnever evaluated
FALSEnever evaluated
state == QScroller::Dragging)
(state == QScroller::Dragging)Description
TRUEnever evaluated
FALSEnever evaluated
&& !sp->overshootDragResistanceFactor
!sp->overshoot...sistanceFactorDescription
TRUEnever evaluated
FALSEnever evaluated
) ||
0
1478 !sp->overshootDragDistanceFactor
!sp->overshoot...DistanceFactorDescription
TRUEnever evaluated
FALSEnever evaluated
;
0
1479 bool canOvershootX = !noOvershootX
!noOvershootXDescription
TRUEnever evaluated
FALSEnever evaluated
&& (alwaysOvershootX
alwaysOvershootXDescription
TRUEnever evaluated
FALSEnever evaluated
|| contentPosRange.width()
contentPosRange.width()Description
TRUEnever evaluated
FALSEnever evaluated
);
0
1480 bool canOvershootY = !noOvershootY
!noOvershootYDescription
TRUEnever evaluated
FALSEnever evaluated
&& (alwaysOvershootY
alwaysOvershootYDescription
TRUEnever evaluated
FALSEnever evaluated
|| contentPosRange.height()
contentPosRange.height()Description
TRUEnever evaluated
FALSEnever evaluated
);
0
1481-
1482 qreal oldOvershootX = (
(canOvershootX)Description
TRUEnever evaluated
FALSEnever evaluated
canOvershootX)
(canOvershootX)Description
TRUEnever evaluated
FALSEnever evaluated
? oldPos.x() - oldClampedPos.x() : 0;
0
1483 qreal oldOvershootY = (
(canOvershootY)Description
TRUEnever evaluated
FALSEnever evaluated
canOvershootY)
(canOvershootY)Description
TRUEnever evaluated
FALSEnever evaluated
? oldPos.y() - oldClampedPos.y() : 0;
0
1484-
1485 qreal newOvershootX = (
(canOvershootX)Description
TRUEnever evaluated
FALSEnever evaluated
canOvershootX)
(canOvershootX)Description
TRUEnever evaluated
FALSEnever evaluated
? newPos.x() - newClampedPos.x() : 0;
0
1486 qreal newOvershootY = (
(canOvershootY)Description
TRUEnever evaluated
FALSEnever evaluated
canOvershootY)
(canOvershootY)Description
TRUEnever evaluated
FALSEnever evaluated
? newPos.y() - newClampedPos.y() : 0;
0
1487-
1488 qreal maxOvershootX = viewportSize.width() * sp->overshootDragDistanceFactor;-
1489 qreal maxOvershootY = viewportSize.height() * sp->overshootDragDistanceFactor;-
1490-
1491 while (false) QMessageLogger(__FILE__, 1809, __PRETTY_FUNCTION__).debug() << " --> noOs:" << noOvershootX << "drf:" << sp->overshootDragResistanceFactor << "mdf:" << sp->overshootScrollDistanceFactor << "ossP:"<<sp->hOvershootPolicy;
dead code: QMessageLogger(__FILE__, 1809, __PRETTY_FUNCTION__).debug() << " --> noOs:" << noOvershootX << "drf:" << sp->overshootDragResistanceFactor << "mdf:" << sp->overshootScrollDistanceFactor << "ossP:"<<sp->hOvershootPolicy;
-
1492 while (false) QMessageLogger(__FILE__, 1810, __PRETTY_FUNCTION__).debug() << " --> canOS:" << canOvershootX << "newOS:" << newOvershootX << "maxOS:" << maxOvershootX;
dead code: QMessageLogger(__FILE__, 1810, __PRETTY_FUNCTION__).debug() << " --> canOS:" << canOvershootX << "newOS:" << newOvershootX << "maxOS:" << maxOvershootX;
-
1493-
1494 if (sp->overshootDragResistanceFactor
sp->overshootD...sistanceFactorDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1495 oldOvershootX *= sp->overshootDragResistanceFactor;-
1496 oldOvershootY *= sp->overshootDragResistanceFactor;-
1497 newOvershootX *= sp->overshootDragResistanceFactor;-
1498 newOvershootY *= sp->overshootDragResistanceFactor;-
1499 }
never executed: end of block
0
1500-
1501-
1502-
1503 newOvershootX = qBound(-maxOvershootX, newOvershootX, maxOvershootX);-
1504 newOvershootY = qBound(-maxOvershootY, newOvershootY, maxOvershootY);-
1505-
1506 overshootPosition.setX(newOvershootX);-
1507 overshootPosition.setY(newOvershootY);-
1508 contentPosition = newClampedPos;-
1509-
1510 QScrollEvent se(contentPosition, overshootPosition, firstScroll ? QScrollEvent::ScrollStarted : QScrollEvent::ScrollUpdated);-
1511 sendEvent(target, &se);-
1512 firstScroll = false;-
1513-
1514 while (false) QMessageLogger(__FILE__, 1832, __PRETTY_FUNCTION__).debug() << " --> new position:" << newClampedPos << "- new overshoot:" << overshootPosition <<
dead code: QMessageLogger(__FILE__, 1832, __PRETTY_FUNCTION__).debug() << " --> new position:" << newClampedPos << "- new overshoot:" << overshootPosition << "- overshoot x/y?:" << overshootPosition;
-
1515 "- overshoot x/y?:" << overshootPosition;
dead code: QMessageLogger(__FILE__, 1832, __PRETTY_FUNCTION__).debug() << " --> new position:" << newClampedPos << "- new overshoot:" << overshootPosition << "- overshoot x/y?:" << overshootPosition;
-
1516}
never executed: end of block
0
1517-
1518-
1519qreal QScrollerPrivate::nextSegmentPosition(QQueue<ScrollSegment> &segments, qint64 now, qreal oldPos)-
1520{-
1521 qreal pos = oldPos;-
1522-
1523-
1524 while (!segments.isEmpty()
!segments.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1525 const ScrollSegment s = segments.head();-
1526-
1527 if ((
(s.startTime +...ogress) <= nowDescription
TRUEnever evaluated
FALSEnever evaluated
s.startTime + s.deltaTime * s.stopProgress) <= now
(s.startTime +...ogress) <= nowDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1528 segments.dequeue();-
1529 pos = s.stopPos;-
1530 }
never executed: end of block
else if (s.startTime <= now
s.startTime <= nowDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1531 qreal progress = qreal(now - s.startTime) / qreal(s.deltaTime);-
1532 pos = s.startPos + s.deltaPos * s.curve.valueForProgress(progress);-
1533 if (s.deltaPos > 0
s.deltaPos > 0Description
TRUEnever evaluated
FALSEnever evaluated
? pos > s.stopPos : pos < s.stopPos
s.deltaPos > 0...os < s.stopPosDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1534 segments.dequeue();-
1535 pos = s.stopPos;-
1536 }
never executed: end of block
else {
0
1537 break;
never executed: break;
0
1538 }-
1539 } else {-
1540 break;
never executed: break;
0
1541 }-
1542 }-
1543 return
never executed: return pos;
pos;
never executed: return pos;
0
1544}-
1545-
1546void QScrollerPrivate::setContentPositionHelperScrolling()-
1547{-
1548 qint64 now = monotonicTimer.elapsed();-
1549 QPointF newPos = contentPosition + overshootPosition;-
1550-
1551 newPos.setX(nextSegmentPosition(xSegments, now, newPos.x()));-
1552 newPos.setY(nextSegmentPosition(ySegments, now, newPos.y()));-
1553-
1554-
1555 while (false) QMessageLogger(__FILE__, 1873, __PRETTY_FUNCTION__).debug() << "QScroller::setContentPositionHelperScrolling()\n"
dead code: QMessageLogger(__FILE__, 1873, __PRETTY_FUNCTION__).debug() << "QScroller::setContentPositionHelperScrolling()\n" " --> overshoot:" << overshootPosition << "- new pos:" << newPos;
-
1556 " --> overshoot:" << overshootPosition << "- new pos:" << newPos;
dead code: QMessageLogger(__FILE__, 1873, __PRETTY_FUNCTION__).debug() << "QScroller::setContentPositionHelperScrolling()\n" " --> overshoot:" << overshootPosition << "- new pos:" << newPos;
-
1557-
1558 QPointF newClampedPos = clampToRect(newPos, contentPosRange);-
1559-
1560 overshootPosition = newPos - newClampedPos;-
1561 contentPosition = newClampedPos;-
1562-
1563 QScrollEvent se(contentPosition, overshootPosition, firstScroll ? QScrollEvent::ScrollStarted : QScrollEvent::ScrollUpdated);-
1564 sendEvent(target, &se);-
1565 firstScroll = false;-
1566-
1567 while (false) QMessageLogger(__FILE__, 1885, __PRETTY_FUNCTION__).debug() << " --> new position:" << newClampedPos << "- new overshoot:" << overshootPosition;
dead code: QMessageLogger(__FILE__, 1885, __PRETTY_FUNCTION__).debug() << " --> new position:" << newClampedPos << "- new overshoot:" << overshootPosition;
-
1568}
never executed: end of block
0
1569qreal QScrollerPrivate::nextSnapPos(qreal p, int dir, Qt::Orientation orientation)-
1570{-
1571 qreal bestSnapPos = (::qQNaN());-
1572 qreal bestSnapPosDist = (::qInf());-
1573-
1574 qreal minPos;-
1575 qreal maxPos;-
1576-
1577 if (orientation == Qt::Horizontal
orientation == Qt::HorizontalDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1578 minPos = contentPosRange.left();-
1579 maxPos = contentPosRange.right();-
1580 }
never executed: end of block
else {
0
1581 minPos = contentPosRange.top();-
1582 maxPos = contentPosRange.bottom();-
1583 }
never executed: end of block
0
1584-
1585 if (orientation == Qt::Horizontal
orientation == Qt::HorizontalDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1586-
1587 for (QForeachContainer<typename QtPrivate::remove_reference<decltype(snapPositionsX)>::type> _container_((snapPositionsX)); _container_.control && _container_.i != _container_.e; ++_container_.i, _container_.control ^= 1) for (qreal snapPos = *_container_.i; _container_.control; _container_.control = 0) {-
1588 qreal snapPosDist = snapPos - p;-
1589 if ((dir > 0
dir > 0Description
TRUEnever evaluated
FALSEnever evaluated
&& snapPosDist < 0
snapPosDist < 0Description
TRUEnever evaluated
FALSEnever evaluated
) ||
0
1590 (dir < 0
dir < 0Description
TRUEnever evaluated
FALSEnever evaluated
&& snapPosDist > 0
snapPosDist > 0Description
TRUEnever evaluated
FALSEnever evaluated
))
0
1591 continue;
never executed: continue;
0
1592 if (snapPos < minPos
snapPos < minPosDescription
TRUEnever evaluated
FALSEnever evaluated
|| snapPos > maxPos
snapPos > maxPosDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1593 continue;
never executed: continue;
0
1594-
1595 if (qIsNaN(bestSnapPos)
qIsNaN(bestSnapPos)Description
TRUEnever evaluated
FALSEnever evaluated
||
0
1596 qAbs(snapPosDist) < bestSnapPosDist
qAbs(snapPosDi...estSnapPosDistDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1597 bestSnapPos = snapPos;-
1598 bestSnapPosDist = qAbs(snapPosDist);-
1599 }
never executed: end of block
0
1600 }
never executed: end of block
0
1601-
1602-
1603 if (snapIntervalX > 0.0
snapIntervalX > 0.0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1604 qreal first = minPos + snapFirstX;-
1605 qreal snapPos;-
1606 if (dir > 0
dir > 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1607 snapPos = qCeil((p - first) / snapIntervalX) * snapIntervalX + first;
never executed: snapPos = qCeil((p - first) / snapIntervalX) * snapIntervalX + first;
0
1608 else if (dir < 0
dir < 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1609 snapPos = qFloor((p - first) / snapIntervalX) * snapIntervalX + first;
never executed: snapPos = qFloor((p - first) / snapIntervalX) * snapIntervalX + first;
0
1610 else if (p <= first
p <= firstDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1611 snapPos = first;
never executed: snapPos = first;
0
1612 else-
1613 {-
1614 qreal last = qFloor((maxPos - first) / snapIntervalX) * snapIntervalX + first;-
1615 if (p >= last
p >= lastDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1616 snapPos = last;
never executed: snapPos = last;
0
1617 else-
1618 snapPos = qRound((p - first) / snapIntervalX) * snapIntervalX + first;
never executed: snapPos = qRound((p - first) / snapIntervalX) * snapIntervalX + first;
0
1619 }-
1620-
1621 if (snapPos >= first
snapPos >= firstDescription
TRUEnever evaluated
FALSEnever evaluated
&& snapPos <= maxPos
snapPos <= maxPosDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1622 qreal snapPosDist = snapPos - p;-
1623-
1624 if (qIsNaN(bestSnapPos)
qIsNaN(bestSnapPos)Description
TRUEnever evaluated
FALSEnever evaluated
||
0
1625 qAbs(snapPosDist) < bestSnapPosDist
qAbs(snapPosDi...estSnapPosDistDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1626 bestSnapPos = snapPos;-
1627 bestSnapPosDist = qAbs(snapPosDist);-
1628 }
never executed: end of block
0
1629 }
never executed: end of block
0
1630 }
never executed: end of block
0
1631-
1632 }
never executed: end of block
else {
0
1633-
1634 for (QForeachContainer<typename QtPrivate::remove_reference<decltype(snapPositionsY)>::type> _container_((snapPositionsY)); _container_.control && _container_.i != _container_.e; ++_container_.i, _container_.control ^= 1) for (qreal snapPos = *_container_.i; _container_.control; _container_.control = 0) {-
1635 qreal snapPosDist = snapPos - p;-
1636 if ((dir > 0
dir > 0Description
TRUEnever evaluated
FALSEnever evaluated
&& snapPosDist < 0
snapPosDist < 0Description
TRUEnever evaluated
FALSEnever evaluated
) ||
0
1637 (dir < 0
dir < 0Description
TRUEnever evaluated
FALSEnever evaluated
&& snapPosDist > 0
snapPosDist > 0Description
TRUEnever evaluated
FALSEnever evaluated
))
0
1638 continue;
never executed: continue;
0
1639 if (snapPos < minPos
snapPos < minPosDescription
TRUEnever evaluated
FALSEnever evaluated
|| snapPos > maxPos
snapPos > maxPosDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1640 continue;
never executed: continue;
0
1641-
1642 if (qIsNaN(bestSnapPos)
qIsNaN(bestSnapPos)Description
TRUEnever evaluated
FALSEnever evaluated
||
0
1643 qAbs(snapPosDist) < bestSnapPosDist
qAbs(snapPosDi...estSnapPosDistDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1644 bestSnapPos = snapPos;-
1645 bestSnapPosDist = qAbs(snapPosDist);-
1646 }
never executed: end of block
0
1647 }
never executed: end of block
0
1648-
1649-
1650 if (snapIntervalY > 0.0
snapIntervalY > 0.0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1651 qreal first = minPos + snapFirstY;-
1652 qreal snapPos;-
1653 if (dir > 0
dir > 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1654 snapPos = qCeil((p - first) / snapIntervalY) * snapIntervalY + first;
never executed: snapPos = qCeil((p - first) / snapIntervalY) * snapIntervalY + first;
0
1655 else if (dir < 0
dir < 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1656 snapPos = qFloor((p - first) / snapIntervalY) * snapIntervalY + first;
never executed: snapPos = qFloor((p - first) / snapIntervalY) * snapIntervalY + first;
0
1657 else if (p <= first
p <= firstDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1658 snapPos = first;
never executed: snapPos = first;
0
1659 else-
1660 {-
1661 qreal last = qFloor((maxPos - first) / snapIntervalY) * snapIntervalY + first;-
1662 if (p >= last
p >= lastDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1663 snapPos = last;
never executed: snapPos = last;
0
1664 else-
1665 snapPos = qRound((p - first) / snapIntervalY) * snapIntervalY + first;
never executed: snapPos = qRound((p - first) / snapIntervalY) * snapIntervalY + first;
0
1666 }-
1667-
1668 if (snapPos >= first
snapPos >= firstDescription
TRUEnever evaluated
FALSEnever evaluated
&& snapPos <= maxPos
snapPos <= maxPosDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1669 qreal snapPosDist = snapPos - p;-
1670-
1671 if (qIsNaN(bestSnapPos)
qIsNaN(bestSnapPos)Description
TRUEnever evaluated
FALSEnever evaluated
||
0
1672 qAbs(snapPosDist) < bestSnapPosDist
qAbs(snapPosDi...estSnapPosDistDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1673 bestSnapPos = snapPos;-
1674 bestSnapPosDist = qAbs(snapPosDist);-
1675 }
never executed: end of block
0
1676 }
never executed: end of block
0
1677 }
never executed: end of block
0
1678 }
never executed: end of block
0
1679-
1680 return
never executed: return bestSnapPos;
bestSnapPos;
never executed: return bestSnapPos;
0
1681}-
1682-
1683-
Switch to Source codePreprocessed file

Generated by Squish Coco Non-Commercial 4.3.0-BETA-master-30-08-2018-4cb69e9