Line | Source Code | Coverage |
---|
1 | /**************************************************************************** | - |
2 | ** | - |
3 | ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). | - |
4 | ** Contact: http://www.qt-project.org/legal | - |
5 | ** | - |
6 | ** This file is part of the QtGui module of the Qt Toolkit. | - |
7 | ** | - |
8 | ** $QT_BEGIN_LICENSE:LGPL$ | - |
9 | ** Commercial License Usage | - |
10 | ** Licensees holding valid commercial Qt licenses may use this file in | - |
11 | ** accordance with the commercial license agreement provided with the | - |
12 | ** Software or, alternatively, in accordance with the terms contained in | - |
13 | ** a written agreement between you and Digia. For licensing terms and | - |
14 | ** conditions see http://qt.digia.com/licensing. For further information | - |
15 | ** use the contact form at http://qt.digia.com/contact-us. | - |
16 | ** | - |
17 | ** GNU Lesser General Public License Usage | - |
18 | ** Alternatively, this file may be used under the terms of the GNU Lesser | - |
19 | ** General Public License version 2.1 as published by the Free Software | - |
20 | ** Foundation and appearing in the file LICENSE.LGPL included in the | - |
21 | ** packaging of this file. Please review the following information to | - |
22 | ** ensure the GNU Lesser General Public License version 2.1 requirements | - |
23 | ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. | - |
24 | ** | - |
25 | ** In addition, as a special exception, Digia gives you certain additional | - |
26 | ** rights. These rights are described in the Digia Qt LGPL Exception | - |
27 | ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. | - |
28 | ** | - |
29 | ** GNU General Public License Usage | - |
30 | ** Alternatively, this file may be used under the terms of the GNU | - |
31 | ** General Public License version 3.0 as published by the Free Software | - |
32 | ** Foundation and appearing in the file LICENSE.GPL included in the | - |
33 | ** packaging of this file. Please review the following information to | - |
34 | ** ensure the GNU General Public License version 3.0 requirements will be | - |
35 | ** met: http://www.gnu.org/copyleft/gpl.html. | - |
36 | ** | - |
37 | ** | - |
38 | ** $QT_END_LICENSE$ | - |
39 | ** | - |
40 | ****************************************************************************/ | - |
41 | | - |
42 | #include "private/qgesturemanager_p.h" | - |
43 | #include "private/qstandardgestures_p.h" | - |
44 | #include "private/qwidget_p.h" | - |
45 | #include "private/qgesture_p.h" | - |
46 | #include "private/qgraphicsitem_p.h" | - |
47 | #include "private/qevent_p.h" | - |
48 | #include "private/qapplication_p.h" | - |
49 | #include "private/qwidgetwindow_qpa_p.h" | - |
50 | #include "qgesture.h" | - |
51 | #include "qevent.h" | - |
52 | #include "qgraphicsitem.h" | - |
53 | | - |
54 | #ifdef Q_WS_MAC | - |
55 | #include "qmacgesturerecognizer_mac_p.h" | - |
56 | #endif | - |
57 | #if defined(Q_WS_WIN) && !defined(QT_NO_NATIVE_GESTURES) | - |
58 | #include "qwinnativepangesturerecognizer_win_p.h" | - |
59 | #endif | - |
60 | | - |
61 | #include "qdebug.h" | - |
62 | | - |
63 | // #define GESTURE_DEBUG | - |
64 | #ifndef GESTURE_DEBUG | - |
65 | # define DEBUG if (0) qDebug | - |
66 | #else | - |
67 | # define DEBUG qDebug | - |
68 | #endif | - |
69 | | - |
70 | #ifndef QT_NO_GESTURES | - |
71 | | - |
72 | QT_BEGIN_NAMESPACE | - |
73 | | - |
74 | QGestureManager::QGestureManager(QObject *parent) | - |
75 | : QObject(parent), state(NotGesture), m_lastCustomGestureId(Qt::CustomGesture) | - |
76 | { | - |
77 | qRegisterMetaType<Qt::GestureState>(); executed (the execution status of this line is deduced): qRegisterMetaType<Qt::GestureState>(); | - |
78 | | - |
79 | #if defined(Q_WS_MAC) | - |
80 | registerGestureRecognizer(new QMacSwipeGestureRecognizer); | - |
81 | registerGestureRecognizer(new QMacPinchGestureRecognizer); | - |
82 | registerGestureRecognizer(new QMacPanGestureRecognizer); | - |
83 | #else | - |
84 | registerGestureRecognizer(new QPanGestureRecognizer); executed (the execution status of this line is deduced): registerGestureRecognizer(new QPanGestureRecognizer); | - |
85 | registerGestureRecognizer(new QPinchGestureRecognizer); executed (the execution status of this line is deduced): registerGestureRecognizer(new QPinchGestureRecognizer); | - |
86 | registerGestureRecognizer(new QSwipeGestureRecognizer); executed (the execution status of this line is deduced): registerGestureRecognizer(new QSwipeGestureRecognizer); | - |
87 | registerGestureRecognizer(new QTapGestureRecognizer); executed (the execution status of this line is deduced): registerGestureRecognizer(new QTapGestureRecognizer); | - |
88 | #endif | - |
89 | #if defined(Q_WS_WIN) | - |
90 | #if !defined(QT_NO_NATIVE_GESTURES) | - |
91 | if (QApplicationPrivate::HasTouchSupport) | - |
92 | registerGestureRecognizer(new QWinNativePanGestureRecognizer); | - |
93 | #endif | - |
94 | #else | - |
95 | registerGestureRecognizer(new QTapAndHoldGestureRecognizer); executed (the execution status of this line is deduced): registerGestureRecognizer(new QTapAndHoldGestureRecognizer); | - |
96 | #endif | - |
97 | } executed: } Execution Count:56 | 56 |
98 | | - |
99 | QGestureManager::~QGestureManager() | - |
100 | { | - |
101 | qDeleteAll(m_recognizers.values()); executed (the execution status of this line is deduced): qDeleteAll(m_recognizers.values()); | - |
102 | foreach (QGestureRecognizer *recognizer, m_obsoleteGestures.keys()) { executed (the execution status of this line is deduced): for (QForeachContainer<__typeof__(m_obsoleteGestures.keys())> _container_(m_obsoleteGestures.keys()); !_container_.brk && _container_.i != _container_.e; __extension__ ({ ++_container_.brk; ++_container_.i; })) for (QGestureRecognizer *recognizer = *_container_.i;; __extension__ ({--_container_.brk; break;})) { | - |
103 | qDeleteAll(m_obsoleteGestures.value(recognizer)); executed (the execution status of this line is deduced): qDeleteAll(m_obsoleteGestures.value(recognizer)); | - |
104 | delete recognizer; executed (the execution status of this line is deduced): delete recognizer; | - |
105 | } executed: } Execution Count:16 | 16 |
106 | m_obsoleteGestures.clear(); executed (the execution status of this line is deduced): m_obsoleteGestures.clear(); | - |
107 | } executed: } Execution Count:56 | 56 |
108 | | - |
109 | Qt::GestureType QGestureManager::registerGestureRecognizer(QGestureRecognizer *recognizer) | - |
110 | { | - |
111 | QGesture *dummy = recognizer->create(0); executed (the execution status of this line is deduced): QGesture *dummy = recognizer->create(0); | - |
112 | if (!dummy) { partially evaluated: !dummy no Evaluation Count:0 | yes Evaluation Count:299 |
| 0-299 |
113 | qWarning("QGestureManager::registerGestureRecognizer: " never executed (the execution status of this line is deduced): QMessageLogger("kernel/qgesturemanager.cpp", 113, __PRETTY_FUNCTION__).warning("QGestureManager::registerGestureRecognizer: " | - |
114 | "the recognizer fails to create a gesture object, skipping registration."); never executed (the execution status of this line is deduced): "the recognizer fails to create a gesture object, skipping registration."); | - |
115 | return Qt::GestureType(0); never executed: return Qt::GestureType(0); | 0 |
116 | } | - |
117 | Qt::GestureType type = dummy->gestureType(); executed (the execution status of this line is deduced): Qt::GestureType type = dummy->gestureType(); | - |
118 | if (type == Qt::CustomGesture) { evaluated: type == Qt::CustomGesture yes Evaluation Count:17 | yes Evaluation Count:282 |
| 17-282 |
119 | // generate a new custom gesture id | - |
120 | ++m_lastCustomGestureId; executed (the execution status of this line is deduced): ++m_lastCustomGestureId; | - |
121 | type = Qt::GestureType(m_lastCustomGestureId); executed (the execution status of this line is deduced): type = Qt::GestureType(m_lastCustomGestureId); | - |
122 | } executed: } Execution Count:17 | 17 |
123 | m_recognizers.insertMulti(type, recognizer); executed (the execution status of this line is deduced): m_recognizers.insertMulti(type, recognizer); | - |
124 | delete dummy; executed (the execution status of this line is deduced): delete dummy; | - |
125 | return type; executed: return type; Execution Count:299 | 299 |
126 | } | - |
127 | | - |
128 | void QGestureManager::unregisterGestureRecognizer(Qt::GestureType type) | - |
129 | { | - |
130 | QList<QGestureRecognizer *> list = m_recognizers.values(type); executed (the execution status of this line is deduced): QList<QGestureRecognizer *> list = m_recognizers.values(type); | - |
131 | while (QGestureRecognizer *recognizer = m_recognizers.take(type)) { evaluated: QGestureRecognizer *recognizer = m_recognizers.take(type) yes Evaluation Count:16 | yes Evaluation Count:21 |
| 16-21 |
132 | if (!m_obsoleteGestures.contains(recognizer)) { partially evaluated: !m_obsoleteGestures.contains(recognizer) yes Evaluation Count:16 | no Evaluation Count:0 |
| 0-16 |
133 | // inserting even an empty QSet will cause the recognizer to be deleted on destruction of the manager | - |
134 | m_obsoleteGestures.insert(recognizer, QSet<QGesture *>()); executed (the execution status of this line is deduced): m_obsoleteGestures.insert(recognizer, QSet<QGesture *>()); | - |
135 | } executed: } Execution Count:16 | 16 |
136 | } executed: } Execution Count:16 | 16 |
137 | foreach (QGesture *g, m_gestureToRecognizer.keys()) { executed (the execution status of this line is deduced): for (QForeachContainer<__typeof__(m_gestureToRecognizer.keys())> _container_(m_gestureToRecognizer.keys()); !_container_.brk && _container_.i != _container_.e; __extension__ ({ ++_container_.brk; ++_container_.i; })) for (QGesture *g = *_container_.i;; __extension__ ({--_container_.brk; break;})) { | - |
138 | QGestureRecognizer *recognizer = m_gestureToRecognizer.value(g); executed (the execution status of this line is deduced): QGestureRecognizer *recognizer = m_gestureToRecognizer.value(g); | - |
139 | if (list.contains(recognizer)) { evaluated: list.contains(recognizer) yes Evaluation Count:17 | yes Evaluation Count:47 |
| 17-47 |
140 | m_deletedRecognizers.insert(g, recognizer); executed (the execution status of this line is deduced): m_deletedRecognizers.insert(g, recognizer); | - |
141 | } executed: } Execution Count:17 | 17 |
142 | } executed: } Execution Count:64 | 64 |
143 | | - |
144 | QMap<ObjectGesture, QList<QGesture *> >::const_iterator iter = m_objectGestures.constBegin(); executed (the execution status of this line is deduced): QMap<ObjectGesture, QList<QGesture *> >::const_iterator iter = m_objectGestures.constBegin(); | - |
145 | while (iter != m_objectGestures.constEnd()) { evaluated: iter != m_objectGestures.constEnd() yes Evaluation Count:96 | yes Evaluation Count:21 |
| 21-96 |
146 | ObjectGesture objectGesture = iter.key(); executed (the execution status of this line is deduced): ObjectGesture objectGesture = iter.key(); | - |
147 | if (objectGesture.gesture == type) { evaluated: objectGesture.gesture == type yes Evaluation Count:16 | yes Evaluation Count:80 |
| 16-80 |
148 | foreach (QGesture *g, iter.value()) { executed (the execution status of this line is deduced): for (QForeachContainer<__typeof__(iter.value())> _container_(iter.value()); !_container_.brk && _container_.i != _container_.e; __extension__ ({ ++_container_.brk; ++_container_.i; })) for (QGesture *g = *_container_.i;; __extension__ ({--_container_.brk; break;})) { | - |
149 | if (QGestureRecognizer *recognizer = m_gestureToRecognizer.value(g)) { partially evaluated: QGestureRecognizer *recognizer = m_gestureToRecognizer.value(g) yes Evaluation Count:17 | no Evaluation Count:0 |
| 0-17 |
150 | m_gestureToRecognizer.remove(g); executed (the execution status of this line is deduced): m_gestureToRecognizer.remove(g); | - |
151 | m_obsoleteGestures[recognizer].insert(g); executed (the execution status of this line is deduced): m_obsoleteGestures[recognizer].insert(g); | - |
152 | } executed: } Execution Count:17 | 17 |
153 | } executed: } Execution Count:17 | 17 |
154 | } executed: } Execution Count:16 | 16 |
155 | ++iter; executed (the execution status of this line is deduced): ++iter; | - |
156 | } executed: } Execution Count:96 | 96 |
157 | } executed: } Execution Count:21 | 21 |
158 | | - |
159 | void QGestureManager::cleanupCachedGestures(QObject *target, Qt::GestureType type) | - |
160 | { | - |
161 | QMap<ObjectGesture, QList<QGesture *> >::Iterator iter = m_objectGestures.begin(); executed (the execution status of this line is deduced): QMap<ObjectGesture, QList<QGesture *> >::Iterator iter = m_objectGestures.begin(); | - |
162 | while (iter != m_objectGestures.end()) { evaluated: iter != m_objectGestures.end() yes Evaluation Count:12171 | yes Evaluation Count:5516 |
| 5516-12171 |
163 | ObjectGesture objectGesture = iter.key(); executed (the execution status of this line is deduced): ObjectGesture objectGesture = iter.key(); | - |
164 | if (objectGesture.gesture == type && target == objectGesture.object) { evaluated: objectGesture.gesture == type yes Evaluation Count:11984 | yes Evaluation Count:187 |
evaluated: target == objectGesture.object yes Evaluation Count:4588 | yes Evaluation Count:7396 |
| 187-11984 |
165 | QSet<QGesture *> gestures = iter.value().toSet(); executed (the execution status of this line is deduced): QSet<QGesture *> gestures = iter.value().toSet(); | - |
166 | for (QHash<QGestureRecognizer *, QSet<QGesture *> >::iterator executed (the execution status of this line is deduced): for (QHash<QGestureRecognizer *, QSet<QGesture *> >::iterator | - |
167 | it = m_obsoleteGestures.begin(), e = m_obsoleteGestures.end(); it != e; ++it) { evaluated: it != e yes Evaluation Count:999 | yes Evaluation Count:4588 |
| 999-4588 |
168 | it.value() -= gestures; executed (the execution status of this line is deduced): it.value() -= gestures; | - |
169 | } executed: } Execution Count:999 | 999 |
170 | foreach (QGesture *g, gestures) { executed (the execution status of this line is deduced): for (QForeachContainer<__typeof__(gestures)> _container_(gestures); !_container_.brk && _container_.i != _container_.e; __extension__ ({ ++_container_.brk; ++_container_.i; })) for (QGesture *g = *_container_.i;; __extension__ ({--_container_.brk; break;})) { | - |
171 | m_deletedRecognizers.remove(g); executed (the execution status of this line is deduced): m_deletedRecognizers.remove(g); | - |
172 | m_gestureToRecognizer.remove(g); executed (the execution status of this line is deduced): m_gestureToRecognizer.remove(g); | - |
173 | m_maybeGestures.remove(g); executed (the execution status of this line is deduced): m_maybeGestures.remove(g); | - |
174 | m_activeGestures.remove(g); executed (the execution status of this line is deduced): m_activeGestures.remove(g); | - |
175 | m_gestureOwners.remove(g); executed (the execution status of this line is deduced): m_gestureOwners.remove(g); | - |
176 | m_gestureTargets.remove(g); executed (the execution status of this line is deduced): m_gestureTargets.remove(g); | - |
177 | m_gesturesToDelete.insert(g); executed (the execution status of this line is deduced): m_gesturesToDelete.insert(g); | - |
178 | } executed: } Execution Count:4589 | 4589 |
179 | | - |
180 | iter = m_objectGestures.erase(iter); executed (the execution status of this line is deduced): iter = m_objectGestures.erase(iter); | - |
181 | } else { executed: } Execution Count:4588 | 4588 |
182 | ++iter; executed (the execution status of this line is deduced): ++iter; | - |
183 | } executed: } Execution Count:7583 | 7583 |
184 | } | - |
185 | } executed: } Execution Count:5516 | 5516 |
186 | | - |
187 | // get or create a QGesture object that will represent the state for a given object, used by the recognizer | - |
188 | QGesture *QGestureManager::getState(QObject *object, QGestureRecognizer *recognizer, Qt::GestureType type) | - |
189 | { | - |
190 | // if the widget is being deleted we should be careful not to | - |
191 | // create a new state, as it will create QWeakPointer which doesn't work | - |
192 | // from the destructor. | - |
193 | if (object->isWidgetType()) { evaluated: object->isWidgetType() yes Evaluation Count:60487 | yes Evaluation Count:488 |
| 488-60487 |
194 | if (static_cast<QWidget *>(object)->d_func()->data.in_destructor) partially evaluated: static_cast<QWidget *>(object)->d_func()->data.in_destructor no Evaluation Count:0 | yes Evaluation Count:60487 |
| 0-60487 |
195 | return 0; never executed: return 0; | 0 |
196 | } else if (QGesture *g = qobject_cast<QGesture *>(object)) { executed: } Execution Count:60487 partially evaluated: QGesture *g = qobject_cast<QGesture *>(object) no Evaluation Count:0 | yes Evaluation Count:488 |
| 0-60487 |
197 | return g; never executed: return g; | 0 |
198 | #ifndef QT_NO_GRAPHICSVIEW | - |
199 | } else { | - |
200 | Q_ASSERT(qobject_cast<QGraphicsObject *>(object)); executed (the execution status of this line is deduced): qt_noop(); | - |
201 | QGraphicsObject *graphicsObject = static_cast<QGraphicsObject *>(object); executed (the execution status of this line is deduced): QGraphicsObject *graphicsObject = static_cast<QGraphicsObject *>(object); | - |
202 | if (graphicsObject->QGraphicsItem::d_func()->inDestructor) partially evaluated: graphicsObject->QGraphicsItem::d_func()->inDestructor no Evaluation Count:0 | yes Evaluation Count:488 |
| 0-488 |
203 | return 0; never executed: return 0; | 0 |
204 | #endif | - |
205 | } executed: } Execution Count:488 | 488 |
206 | | - |
207 | // check if the QGesture for this recognizer has already been created | - |
208 | foreach (QGesture *state, m_objectGestures.value(QGestureManager::ObjectGesture(object, type))) { executed (the execution status of this line is deduced): for (QForeachContainer<__typeof__(m_objectGestures.value(QGestureManager::ObjectGesture(object, type)))> _container_(m_objectGestures.value(QGestureManager::ObjectGesture(object, type))); !_container_.brk && _container_.i != _container_.e; __extension__ ({ ++_container_.brk; ++_container_.i; })) for (QGesture *state = *_container_.i;; __extension__ ({--_container_.brk; break;})) { | - |
209 | if (m_gestureToRecognizer.value(state) == recognizer) evaluated: m_gestureToRecognizer.value(state) == recognizer yes Evaluation Count:55741 | yes Evaluation Count:1 |
| 1-55741 |
210 | return state; executed: return state; Execution Count:55741 | 55741 |
211 | } executed: } Execution Count:1 | 1 |
212 | | - |
213 | Q_ASSERT(recognizer); executed (the execution status of this line is deduced): qt_noop(); | - |
214 | QGesture *state = recognizer->create(object); executed (the execution status of this line is deduced): QGesture *state = recognizer->create(object); | - |
215 | if (!state) partially evaluated: !state no Evaluation Count:0 | yes Evaluation Count:5234 |
| 0-5234 |
216 | return 0; never executed: return 0; | 0 |
217 | state->setParent(this); executed (the execution status of this line is deduced): state->setParent(this); | - |
218 | if (state->gestureType() == Qt::CustomGesture) { evaluated: state->gestureType() == Qt::CustomGesture yes Evaluation Count:115 | yes Evaluation Count:5119 |
| 115-5119 |
219 | // if the recognizer didn't fill in the gesture type, then this | - |
220 | // is a custom gesture with autogenerated id and we fill it. | - |
221 | state->d_func()->gestureType = type; executed (the execution status of this line is deduced): state->d_func()->gestureType = type; | - |
222 | #if defined(GESTURE_DEBUG) | - |
223 | state->setObjectName(QString::number((int)type)); | - |
224 | #endif | - |
225 | } executed: } Execution Count:115 | 115 |
226 | m_objectGestures[QGestureManager::ObjectGesture(object, type)].append(state); executed (the execution status of this line is deduced): m_objectGestures[QGestureManager::ObjectGesture(object, type)].append(state); | - |
227 | m_gestureToRecognizer[state] = recognizer; executed (the execution status of this line is deduced): m_gestureToRecognizer[state] = recognizer; | - |
228 | m_gestureOwners[state] = object; executed (the execution status of this line is deduced): m_gestureOwners[state] = object; | - |
229 | | - |
230 | return state; executed: return state; Execution Count:5234 | 5234 |
231 | } | - |
232 | | - |
233 | bool QGestureManager::filterEventThroughContexts(const QMultiMap<QObject *, | - |
234 | Qt::GestureType> &contexts, | - |
235 | QEvent *event) | - |
236 | { | - |
237 | QSet<QGesture *> triggeredGestures; executed (the execution status of this line is deduced): QSet<QGesture *> triggeredGestures; | - |
238 | QSet<QGesture *> finishedGestures; executed (the execution status of this line is deduced): QSet<QGesture *> finishedGestures; | - |
239 | QSet<QGesture *> newMaybeGestures; executed (the execution status of this line is deduced): QSet<QGesture *> newMaybeGestures; | - |
240 | QSet<QGesture *> notGestures; executed (the execution status of this line is deduced): QSet<QGesture *> notGestures; | - |
241 | | - |
242 | // TODO: sort contexts by the gesture type and check if one of the contexts | - |
243 | // is already active. | - |
244 | | - |
245 | bool consumeEventHint = false; executed (the execution status of this line is deduced): bool consumeEventHint = false; | - |
246 | | - |
247 | // filter the event through recognizers | - |
248 | typedef QMultiMap<QObject *, Qt::GestureType>::const_iterator ContextIterator; executed (the execution status of this line is deduced): typedef QMultiMap<QObject *, Qt::GestureType>::const_iterator ContextIterator; | - |
249 | ContextIterator contextEnd = contexts.end(); executed (the execution status of this line is deduced): ContextIterator contextEnd = contexts.end(); | - |
250 | for (ContextIterator context = contexts.begin(); context != contextEnd; ++context) { evaluated: context != contextEnd yes Evaluation Count:61027 | yes Evaluation Count:60419 |
| 60419-61027 |
251 | Qt::GestureType gestureType = context.value(); executed (the execution status of this line is deduced): Qt::GestureType gestureType = context.value(); | - |
252 | const QMap<Qt::GestureType, QGestureRecognizer *> &const_recognizers = m_recognizers; executed (the execution status of this line is deduced): const QMap<Qt::GestureType, QGestureRecognizer *> &const_recognizers = m_recognizers; | - |
253 | QMap<Qt::GestureType, QGestureRecognizer *>::const_iterator executed (the execution status of this line is deduced): QMap<Qt::GestureType, QGestureRecognizer *>::const_iterator | - |
254 | typeToRecognizerIterator = const_recognizers.lowerBound(gestureType), executed (the execution status of this line is deduced): typeToRecognizerIterator = const_recognizers.lowerBound(gestureType), | - |
255 | typeToRecognizerEnd = const_recognizers.upperBound(gestureType); executed (the execution status of this line is deduced): typeToRecognizerEnd = const_recognizers.upperBound(gestureType); | - |
256 | for (; typeToRecognizerIterator != typeToRecognizerEnd; ++typeToRecognizerIterator) { evaluated: typeToRecognizerIterator != typeToRecognizerEnd yes Evaluation Count:60975 | yes Evaluation Count:61027 |
| 60975-61027 |
257 | QGestureRecognizer *recognizer = typeToRecognizerIterator.value(); executed (the execution status of this line is deduced): QGestureRecognizer *recognizer = typeToRecognizerIterator.value(); | - |
258 | QObject *target = context.key(); executed (the execution status of this line is deduced): QObject *target = context.key(); | - |
259 | QGesture *state = getState(target, recognizer, gestureType); executed (the execution status of this line is deduced): QGesture *state = getState(target, recognizer, gestureType); | - |
260 | if (!state) partially evaluated: !state no Evaluation Count:0 | yes Evaluation Count:60975 |
| 0-60975 |
261 | continue; never executed: continue; | 0 |
262 | QGestureRecognizer::Result recognizerResult = recognizer->recognize(state, target, event); executed (the execution status of this line is deduced): QGestureRecognizer::Result recognizerResult = recognizer->recognize(state, target, event); | - |
263 | QGestureRecognizer::Result recognizerState = recognizerResult & QGestureRecognizer::ResultState_Mask; executed (the execution status of this line is deduced): QGestureRecognizer::Result recognizerState = recognizerResult & QGestureRecognizer::ResultState_Mask; | - |
264 | QGestureRecognizer::Result resultHint = recognizerResult & QGestureRecognizer::ResultHint_Mask; executed (the execution status of this line is deduced): QGestureRecognizer::Result resultHint = recognizerResult & QGestureRecognizer::ResultHint_Mask; | - |
265 | if (recognizerState == QGestureRecognizer::TriggerGesture) { evaluated: recognizerState == QGestureRecognizer::TriggerGesture yes Evaluation Count:205 | yes Evaluation Count:60770 |
| 205-60770 |
266 | DEBUG() << "QGestureManager:Recognizer: gesture triggered: " << state; never executed: QMessageLogger("kernel/qgesturemanager.cpp", 266, __PRETTY_FUNCTION__).debug() << "QGestureManager:Recognizer: gesture triggered: " << state; partially evaluated: 0 no Evaluation Count:0 | yes Evaluation Count:205 |
| 0-205 |
267 | triggeredGestures << state; executed (the execution status of this line is deduced): triggeredGestures << state; | - |
268 | } else if (recognizerState == QGestureRecognizer::FinishGesture) { executed: } Execution Count:205 evaluated: recognizerState == QGestureRecognizer::FinishGesture yes Evaluation Count:75 | yes Evaluation Count:60695 |
| 75-60695 |
269 | DEBUG() << "QGestureManager:Recognizer: gesture finished: " << state; never executed: QMessageLogger("kernel/qgesturemanager.cpp", 269, __PRETTY_FUNCTION__).debug() << "QGestureManager:Recognizer: gesture finished: " << state; partially evaluated: 0 no Evaluation Count:0 | yes Evaluation Count:75 |
| 0-75 |
270 | finishedGestures << state; executed (the execution status of this line is deduced): finishedGestures << state; | - |
271 | } else if (recognizerState == QGestureRecognizer::MayBeGesture) { executed: } Execution Count:75 evaluated: recognizerState == QGestureRecognizer::MayBeGesture yes Evaluation Count:133 | yes Evaluation Count:60562 |
| 75-60562 |
272 | DEBUG() << "QGestureManager:Recognizer: maybe gesture: " << state; never executed: QMessageLogger("kernel/qgesturemanager.cpp", 272, __PRETTY_FUNCTION__).debug() << "QGestureManager:Recognizer: maybe gesture: " << state; partially evaluated: 0 no Evaluation Count:0 | yes Evaluation Count:133 |
| 0-133 |
273 | newMaybeGestures << state; executed (the execution status of this line is deduced): newMaybeGestures << state; | - |
274 | } else if (recognizerState == QGestureRecognizer::CancelGesture) { executed: } Execution Count:133 evaluated: recognizerState == QGestureRecognizer::CancelGesture yes Evaluation Count:2 | yes Evaluation Count:60560 |
| 2-60560 |
275 | DEBUG() << "QGestureManager:Recognizer: not gesture: " << state; never executed: QMessageLogger("kernel/qgesturemanager.cpp", 275, __PRETTY_FUNCTION__).debug() << "QGestureManager:Recognizer: not gesture: " << state; partially evaluated: 0 no Evaluation Count:0 | yes Evaluation Count:2 |
| 0-2 |
276 | notGestures << state; executed (the execution status of this line is deduced): notGestures << state; | - |
277 | } else if (recognizerState == QGestureRecognizer::Ignore) { executed: } Execution Count:2 partially evaluated: recognizerState == QGestureRecognizer::Ignore yes Evaluation Count:60560 | no Evaluation Count:0 |
| 0-60560 |
278 | DEBUG() << "QGestureManager:Recognizer: ignored the event: " << state; never executed: QMessageLogger("kernel/qgesturemanager.cpp", 278, __PRETTY_FUNCTION__).debug() << "QGestureManager:Recognizer: ignored the event: " << state; partially evaluated: 0 no Evaluation Count:0 | yes Evaluation Count:60560 |
| 0-60560 |
279 | } else { executed: } Execution Count:60560 | 60560 |
280 | DEBUG() << "QGestureManager:Recognizer: hm, lets assume the recognizer" never executed: QMessageLogger("kernel/qgesturemanager.cpp", 280, __PRETTY_FUNCTION__).debug() << "QGestureManager:Recognizer: hm, lets assume the recognizer" << "ignored the event: " << state; never evaluated: 0 | 0 |
281 | << "ignored the event: " << state; never executed: QMessageLogger("kernel/qgesturemanager.cpp", 280, __PRETTY_FUNCTION__).debug() << "QGestureManager:Recognizer: hm, lets assume the recognizer" << "ignored the event: " << state; | 0 |
282 | } | 0 |
283 | if (resultHint & QGestureRecognizer::ConsumeEventHint) { evaluated: resultHint & QGestureRecognizer::ConsumeEventHint yes Evaluation Count:12 | yes Evaluation Count:60963 |
| 12-60963 |
284 | DEBUG() << "QGestureManager: we were asked to consume the event: " never executed: QMessageLogger("kernel/qgesturemanager.cpp", 284, __PRETTY_FUNCTION__).debug() << "QGestureManager: we were asked to consume the event: " << state; partially evaluated: 0 no Evaluation Count:0 | yes Evaluation Count:12 |
| 0-12 |
285 | << state; never executed: QMessageLogger("kernel/qgesturemanager.cpp", 284, __PRETTY_FUNCTION__).debug() << "QGestureManager: we were asked to consume the event: " << state; | 0 |
286 | consumeEventHint = true; executed (the execution status of this line is deduced): consumeEventHint = true; | - |
287 | } executed: } Execution Count:12 | 12 |
288 | } executed: } Execution Count:60975 | 60975 |
289 | } executed: } Execution Count:61027 | 61027 |
290 | if (!triggeredGestures.isEmpty() || !finishedGestures.isEmpty() evaluated: !triggeredGestures.isEmpty() yes Evaluation Count:173 | yes Evaluation Count:60246 |
evaluated: !finishedGestures.isEmpty() yes Evaluation Count:63 | yes Evaluation Count:60183 |
| 63-60246 |
291 | || !newMaybeGestures.isEmpty() || !notGestures.isEmpty()) { evaluated: !newMaybeGestures.isEmpty() yes Evaluation Count:113 | yes Evaluation Count:60070 |
evaluated: !notGestures.isEmpty() yes Evaluation Count:2 | yes Evaluation Count:60068 |
| 2-60070 |
292 | QSet<QGesture *> startedGestures = triggeredGestures - m_activeGestures; executed (the execution status of this line is deduced): QSet<QGesture *> startedGestures = triggeredGestures - m_activeGestures; | - |
293 | triggeredGestures &= m_activeGestures; executed (the execution status of this line is deduced): triggeredGestures &= m_activeGestures; | - |
294 | | - |
295 | // check if a running gesture switched back to maybe state | - |
296 | QSet<QGesture *> activeToMaybeGestures = m_activeGestures & newMaybeGestures; executed (the execution status of this line is deduced): QSet<QGesture *> activeToMaybeGestures = m_activeGestures & newMaybeGestures; | - |
297 | | - |
298 | // check if a maybe gesture switched to canceled - reset it but don't send an event | - |
299 | QSet<QGesture *> maybeToCanceledGestures = m_maybeGestures & notGestures; executed (the execution status of this line is deduced): QSet<QGesture *> maybeToCanceledGestures = m_maybeGestures & notGestures; | - |
300 | | - |
301 | // check if a running gesture switched back to not gesture state, | - |
302 | // i.e. were canceled | - |
303 | QSet<QGesture *> canceledGestures = m_activeGestures & notGestures; executed (the execution status of this line is deduced): QSet<QGesture *> canceledGestures = m_activeGestures & notGestures; | - |
304 | | - |
305 | // new gestures in maybe state | - |
306 | m_maybeGestures += newMaybeGestures; executed (the execution status of this line is deduced): m_maybeGestures += newMaybeGestures; | - |
307 | | - |
308 | // gestures that were in maybe state | - |
309 | QSet<QGesture *> notMaybeGestures = (startedGestures | triggeredGestures executed (the execution status of this line is deduced): QSet<QGesture *> notMaybeGestures = (startedGestures | triggeredGestures | - |
310 | | finishedGestures | canceledGestures executed (the execution status of this line is deduced): | finishedGestures | canceledGestures | - |
311 | | notGestures); executed (the execution status of this line is deduced): | notGestures); | - |
312 | m_maybeGestures -= notMaybeGestures; executed (the execution status of this line is deduced): m_maybeGestures -= notMaybeGestures; | - |
313 | | - |
314 | Q_ASSERT((startedGestures & finishedGestures).isEmpty()); executed (the execution status of this line is deduced): qt_noop(); | - |
315 | Q_ASSERT((startedGestures & newMaybeGestures).isEmpty()); executed (the execution status of this line is deduced): qt_noop(); | - |
316 | Q_ASSERT((startedGestures & canceledGestures).isEmpty()); executed (the execution status of this line is deduced): qt_noop(); | - |
317 | Q_ASSERT((finishedGestures & newMaybeGestures).isEmpty()); executed (the execution status of this line is deduced): qt_noop(); | - |
318 | Q_ASSERT((finishedGestures & canceledGestures).isEmpty()); executed (the execution status of this line is deduced): qt_noop(); | - |
319 | Q_ASSERT((canceledGestures & newMaybeGestures).isEmpty()); executed (the execution status of this line is deduced): qt_noop(); | - |
320 | | - |
321 | QSet<QGesture *> notStarted = finishedGestures - m_activeGestures; executed (the execution status of this line is deduced): QSet<QGesture *> notStarted = finishedGestures - m_activeGestures; | - |
322 | if (!notStarted.isEmpty()) { evaluated: !notStarted.isEmpty() yes Evaluation Count:9 | yes Evaluation Count:342 |
| 9-342 |
323 | // there are some gestures that claim to be finished, but never started. | - |
324 | // probably those are "singleshot" gestures so we'll fake the started state. | - |
325 | foreach (QGesture *gesture, notStarted) executed (the execution status of this line is deduced): for (QForeachContainer<__typeof__(notStarted)> _container_(notStarted); !_container_.brk && _container_.i != _container_.e; __extension__ ({ ++_container_.brk; ++_container_.i; })) for (QGesture *gesture = *_container_.i;; __extension__ ({--_container_.brk; break;})) | - |
326 | gesture->d_func()->state = Qt::GestureStarted; executed: gesture->d_func()->state = Qt::GestureStarted; Execution Count:9 | 9 |
327 | QSet<QGesture *> undeliveredGestures; executed (the execution status of this line is deduced): QSet<QGesture *> undeliveredGestures; | - |
328 | deliverEvents(notStarted, &undeliveredGestures); executed (the execution status of this line is deduced): deliverEvents(notStarted, &undeliveredGestures); | - |
329 | finishedGestures -= undeliveredGestures; executed (the execution status of this line is deduced): finishedGestures -= undeliveredGestures; | - |
330 | } executed: } Execution Count:9 | 9 |
331 | | - |
332 | m_activeGestures += startedGestures; executed (the execution status of this line is deduced): m_activeGestures += startedGestures; | - |
333 | // sanity check: all triggered gestures should already be in active gestures list | - |
334 | Q_ASSERT((m_activeGestures & triggeredGestures).size() == triggeredGestures.size()); executed (the execution status of this line is deduced): qt_noop(); | - |
335 | m_activeGestures -= finishedGestures; executed (the execution status of this line is deduced): m_activeGestures -= finishedGestures; | - |
336 | m_activeGestures -= activeToMaybeGestures; executed (the execution status of this line is deduced): m_activeGestures -= activeToMaybeGestures; | - |
337 | m_activeGestures -= canceledGestures; executed (the execution status of this line is deduced): m_activeGestures -= canceledGestures; | - |
338 | | - |
339 | // set the proper gesture state on each gesture | - |
340 | foreach (QGesture *gesture, startedGestures) executed (the execution status of this line is deduced): for (QForeachContainer<__typeof__(startedGestures)> _container_(startedGestures); !_container_.brk && _container_.i != _container_.e; __extension__ ({ ++_container_.brk; ++_container_.i; })) for (QGesture *gesture = *_container_.i;; __extension__ ({--_container_.brk; break;})) | - |
341 | gesture->d_func()->state = Qt::GestureStarted; executed: gesture->d_func()->state = Qt::GestureStarted; Execution Count:78 | 78 |
342 | foreach (QGesture *gesture, triggeredGestures) executed (the execution status of this line is deduced): for (QForeachContainer<__typeof__(triggeredGestures)> _container_(triggeredGestures); !_container_.brk && _container_.i != _container_.e; __extension__ ({ ++_container_.brk; ++_container_.i; })) for (QGesture *gesture = *_container_.i;; __extension__ ({--_container_.brk; break;})) | - |
343 | gesture->d_func()->state = Qt::GestureUpdated; executed: gesture->d_func()->state = Qt::GestureUpdated; Execution Count:127 | 127 |
344 | foreach (QGesture *gesture, finishedGestures) executed (the execution status of this line is deduced): for (QForeachContainer<__typeof__(finishedGestures)> _container_(finishedGestures); !_container_.brk && _container_.i != _container_.e; __extension__ ({ ++_container_.brk; ++_container_.i; })) for (QGesture *gesture = *_container_.i;; __extension__ ({--_container_.brk; break;})) | - |
345 | gesture->d_func()->state = Qt::GestureFinished; executed: gesture->d_func()->state = Qt::GestureFinished; Execution Count:74 | 74 |
346 | foreach (QGesture *gesture, canceledGestures) never executed (the execution status of this line is deduced): for (QForeachContainer<__typeof__(canceledGestures)> _container_(canceledGestures); !_container_.brk && _container_.i != _container_.e; __extension__ ({ ++_container_.brk; ++_container_.i; })) for (QGesture *gesture = *_container_.i;; __extension__ ({--_container_.brk; break;})) | - |
347 | gesture->d_func()->state = Qt::GestureCanceled; never executed: gesture->d_func()->state = Qt::GestureCanceled; | 0 |
348 | foreach (QGesture *gesture, activeToMaybeGestures) never executed (the execution status of this line is deduced): for (QForeachContainer<__typeof__(activeToMaybeGestures)> _container_(activeToMaybeGestures); !_container_.brk && _container_.i != _container_.e; __extension__ ({ ++_container_.brk; ++_container_.i; })) for (QGesture *gesture = *_container_.i;; __extension__ ({--_container_.brk; break;})) | - |
349 | gesture->d_func()->state = Qt::GestureFinished; never executed: gesture->d_func()->state = Qt::GestureFinished; | 0 |
350 | | - |
351 | if (!m_activeGestures.isEmpty() || !m_maybeGestures.isEmpty() || evaluated: !m_activeGestures.isEmpty() yes Evaluation Count:173 | yes Evaluation Count:178 |
evaluated: !m_maybeGestures.isEmpty() yes Evaluation Count:113 | yes Evaluation Count:65 |
| 65-178 |
352 | !startedGestures.isEmpty() || !triggeredGestures.isEmpty() || partially evaluated: !startedGestures.isEmpty() no Evaluation Count:0 | yes Evaluation Count:65 |
partially evaluated: !triggeredGestures.isEmpty() no Evaluation Count:0 | yes Evaluation Count:65 |
| 0-65 |
353 | !finishedGestures.isEmpty() || !canceledGestures.isEmpty()) { evaluated: !finishedGestures.isEmpty() yes Evaluation Count:62 | yes Evaluation Count:3 |
partially evaluated: !canceledGestures.isEmpty() no Evaluation Count:0 | yes Evaluation Count:3 |
| 0-62 |
354 | DEBUG() << "QGestureManager::filterEventThroughContexts:" never executed: QMessageLogger("kernel/qgesturemanager.cpp", 354, __PRETTY_FUNCTION__).debug() << "QGestureManager::filterEventThroughContexts:" << "\n\tactiveGestures:" << m_activeGestures << "\n\tmaybeGestures:" << m_maybeGestures << "\n\tstarted:" << startedGestures << "\n\ttriggered:" << triggeredGestures << "\n\tfinished:" << finishedGestures << "\n\tcanceled:" << canceledGestures << "\n\tmaybe-canceled:" << maybeToCanceledGestures; partially evaluated: 0 no Evaluation Count:0 | yes Evaluation Count:348 |
| 0-348 |
355 | << "\n\tactiveGestures:" << m_activeGestures never executed: QMessageLogger("kernel/qgesturemanager.cpp", 354, __PRETTY_FUNCTION__).debug() << "QGestureManager::filterEventThroughContexts:" << "\n\tactiveGestures:" << m_activeGestures << "\n\tmaybeGestures:" << m_maybeGestures << "\n\tstarted:" << startedGestures << "\n\ttriggered:" << triggeredGestures << "\n\tfinished:" << finishedGestures << "\n\tcanceled:" << canceledGestures << "\n\tmaybe-canceled:" << maybeToCanceledGestures; | 0 |
356 | << "\n\tmaybeGestures:" << m_maybeGestures never executed: QMessageLogger("kernel/qgesturemanager.cpp", 354, __PRETTY_FUNCTION__).debug() << "QGestureManager::filterEventThroughContexts:" << "\n\tactiveGestures:" << m_activeGestures << "\n\tmaybeGestures:" << m_maybeGestures << "\n\tstarted:" << startedGestures << "\n\ttriggered:" << triggeredGestures << "\n\tfinished:" << finishedGestures << "\n\tcanceled:" << canceledGestures << "\n\tmaybe-canceled:" << maybeToCanceledGestures; | 0 |
357 | << "\n\tstarted:" << startedGestures never executed: QMessageLogger("kernel/qgesturemanager.cpp", 354, __PRETTY_FUNCTION__).debug() << "QGestureManager::filterEventThroughContexts:" << "\n\tactiveGestures:" << m_activeGestures << "\n\tmaybeGestures:" << m_maybeGestures << "\n\tstarted:" << startedGestures << "\n\ttriggered:" << triggeredGestures << "\n\tfinished:" << finishedGestures << "\n\tcanceled:" << canceledGestures << "\n\tmaybe-canceled:" << maybeToCanceledGestures; | 0 |
358 | << "\n\ttriggered:" << triggeredGestures never executed: QMessageLogger("kernel/qgesturemanager.cpp", 354, __PRETTY_FUNCTION__).debug() << "QGestureManager::filterEventThroughContexts:" << "\n\tactiveGestures:" << m_activeGestures << "\n\tmaybeGestures:" << m_maybeGestures << "\n\tstarted:" << startedGestures << "\n\ttriggered:" << triggeredGestures << "\n\tfinished:" << finishedGestures << "\n\tcanceled:" << canceledGestures << "\n\tmaybe-canceled:" << maybeToCanceledGestures; | 0 |
359 | << "\n\tfinished:" << finishedGestures never executed: QMessageLogger("kernel/qgesturemanager.cpp", 354, __PRETTY_FUNCTION__).debug() << "QGestureManager::filterEventThroughContexts:" << "\n\tactiveGestures:" << m_activeGestures << "\n\tmaybeGestures:" << m_maybeGestures << "\n\tstarted:" << startedGestures << "\n\ttriggered:" << triggeredGestures << "\n\tfinished:" << finishedGestures << "\n\tcanceled:" << canceledGestures << "\n\tmaybe-canceled:" << maybeToCanceledGestures; | 0 |
360 | << "\n\tcanceled:" << canceledGestures never executed: QMessageLogger("kernel/qgesturemanager.cpp", 354, __PRETTY_FUNCTION__).debug() << "QGestureManager::filterEventThroughContexts:" << "\n\tactiveGestures:" << m_activeGestures << "\n\tmaybeGestures:" << m_maybeGestures << "\n\tstarted:" << startedGestures << "\n\ttriggered:" << triggeredGestures << "\n\tfinished:" << finishedGestures << "\n\tcanceled:" << canceledGestures << "\n\tmaybe-canceled:" << maybeToCanceledGestures; | 0 |
361 | << "\n\tmaybe-canceled:" << maybeToCanceledGestures; never executed: QMessageLogger("kernel/qgesturemanager.cpp", 354, __PRETTY_FUNCTION__).debug() << "QGestureManager::filterEventThroughContexts:" << "\n\tactiveGestures:" << m_activeGestures << "\n\tmaybeGestures:" << m_maybeGestures << "\n\tstarted:" << startedGestures << "\n\ttriggered:" << triggeredGestures << "\n\tfinished:" << finishedGestures << "\n\tcanceled:" << canceledGestures << "\n\tmaybe-canceled:" << maybeToCanceledGestures; | 0 |
362 | } executed: } Execution Count:348 | 348 |
363 | | - |
364 | QSet<QGesture *> undeliveredGestures; executed (the execution status of this line is deduced): QSet<QGesture *> undeliveredGestures; | - |
365 | deliverEvents(startedGestures+triggeredGestures+finishedGestures+canceledGestures, executed (the execution status of this line is deduced): deliverEvents(startedGestures+triggeredGestures+finishedGestures+canceledGestures, | - |
366 | &undeliveredGestures); executed (the execution status of this line is deduced): &undeliveredGestures); | - |
367 | | - |
368 | foreach (QGesture *g, startedGestures) { executed (the execution status of this line is deduced): for (QForeachContainer<__typeof__(startedGestures)> _container_(startedGestures); !_container_.brk && _container_.i != _container_.e; __extension__ ({ ++_container_.brk; ++_container_.i; })) for (QGesture *g = *_container_.i;; __extension__ ({--_container_.brk; break;})) { | - |
369 | if (undeliveredGestures.contains(g)) evaluated: undeliveredGestures.contains(g) yes Evaluation Count:8 | yes Evaluation Count:70 |
| 8-70 |
370 | continue; executed: continue; Execution Count:8 | 8 |
371 | if (g->gestureCancelPolicy() == QGesture::CancelAllInContext) { evaluated: g->gestureCancelPolicy() == QGesture::CancelAllInContext yes Evaluation Count:3 | yes Evaluation Count:67 |
| 3-67 |
372 | DEBUG() << "lets try to cancel some"; never executed: QMessageLogger("kernel/qgesturemanager.cpp", 372, __PRETTY_FUNCTION__).debug() << "lets try to cancel some"; partially evaluated: 0 no Evaluation Count:0 | yes Evaluation Count:3 |
| 0-3 |
373 | // find gestures in context in Qt::GestureStarted or Qt::GestureUpdated state and cancel them | - |
374 | cancelGesturesForChildren(g); executed (the execution status of this line is deduced): cancelGesturesForChildren(g); | - |
375 | } executed: } Execution Count:3 | 3 |
376 | } executed: } Execution Count:70 | 70 |
377 | | - |
378 | m_activeGestures -= undeliveredGestures; executed (the execution status of this line is deduced): m_activeGestures -= undeliveredGestures; | - |
379 | | - |
380 | // reset gestures that ended | - |
381 | QSet<QGesture *> endedGestures = executed (the execution status of this line is deduced): QSet<QGesture *> endedGestures = | - |
382 | finishedGestures + canceledGestures + undeliveredGestures + maybeToCanceledGestures; executed (the execution status of this line is deduced): finishedGestures + canceledGestures + undeliveredGestures + maybeToCanceledGestures; | - |
383 | foreach (QGesture *gesture, endedGestures) { executed (the execution status of this line is deduced): for (QForeachContainer<__typeof__(endedGestures)> _container_(endedGestures); !_container_.brk && _container_.i != _container_.e; __extension__ ({ ++_container_.brk; ++_container_.i; })) for (QGesture *gesture = *_container_.i;; __extension__ ({--_container_.brk; break;})) { | - |
384 | recycle(gesture); executed (the execution status of this line is deduced): recycle(gesture); | - |
385 | m_gestureTargets.remove(gesture); executed (the execution status of this line is deduced): m_gestureTargets.remove(gesture); | - |
386 | } executed: } Execution Count:84 | 84 |
387 | } executed: } Execution Count:351 | 351 |
388 | //Clean up the Gestures | - |
389 | qDeleteAll(m_gesturesToDelete); executed (the execution status of this line is deduced): qDeleteAll(m_gesturesToDelete); | - |
390 | m_gesturesToDelete.clear(); executed (the execution status of this line is deduced): m_gesturesToDelete.clear(); | - |
391 | | - |
392 | return consumeEventHint; executed: return consumeEventHint; Execution Count:60419 | 60419 |
393 | } | - |
394 | | - |
395 | // Cancel all gestures of children of the widget that original is associated with | - |
396 | void QGestureManager::cancelGesturesForChildren(QGesture *original) | - |
397 | { | - |
398 | Q_ASSERT(original); executed (the execution status of this line is deduced): qt_noop(); | - |
399 | QWidget *originatingWidget = m_gestureTargets.value(original); executed (the execution status of this line is deduced): QWidget *originatingWidget = m_gestureTargets.value(original); | - |
400 | Q_ASSERT(originatingWidget); executed (the execution status of this line is deduced): qt_noop(); | - |
401 | | - |
402 | // iterate over all active gestures and all maybe gestures | - |
403 | // for each find the owner | - |
404 | // if the owner is part of our sub-hierarchy, cancel it. | - |
405 | | - |
406 | QSet<QGesture*> cancelledGestures; executed (the execution status of this line is deduced): QSet<QGesture*> cancelledGestures; | - |
407 | QSet<QGesture*>::Iterator iter = m_activeGestures.begin(); executed (the execution status of this line is deduced): QSet<QGesture*>::Iterator iter = m_activeGestures.begin(); | - |
408 | while (iter != m_activeGestures.end()) { evaluated: iter != m_activeGestures.end() yes Evaluation Count:4 | yes Evaluation Count:3 |
| 3-4 |
409 | QWidget *widget = m_gestureTargets.value(*iter); executed (the execution status of this line is deduced): QWidget *widget = m_gestureTargets.value(*iter); | - |
410 | // note that we don't touch the gestures for our originatingWidget | - |
411 | if (widget != originatingWidget && originatingWidget->isAncestorOf(widget)) { evaluated: widget != originatingWidget yes Evaluation Count:1 | yes Evaluation Count:3 |
partially evaluated: originatingWidget->isAncestorOf(widget) yes Evaluation Count:1 | no Evaluation Count:0 |
| 0-3 |
412 | DEBUG() << " found a gesture to cancel" << (*iter); never executed: QMessageLogger("kernel/qgesturemanager.cpp", 412, __PRETTY_FUNCTION__).debug() << " found a gesture to cancel" << (*iter); partially evaluated: 0 no Evaluation Count:0 | yes Evaluation Count:1 |
| 0-1 |
413 | (*iter)->d_func()->state = Qt::GestureCanceled; executed (the execution status of this line is deduced): (*iter)->d_func()->state = Qt::GestureCanceled; | - |
414 | cancelledGestures << *iter; executed (the execution status of this line is deduced): cancelledGestures << *iter; | - |
415 | iter = m_activeGestures.erase(iter); executed (the execution status of this line is deduced): iter = m_activeGestures.erase(iter); | - |
416 | } else { executed: } Execution Count:1 | 1 |
417 | ++iter; executed (the execution status of this line is deduced): ++iter; | - |
418 | } executed: } Execution Count:3 | 3 |
419 | } | - |
420 | | - |
421 | // TODO handle 'maybe' gestures too | - |
422 | | - |
423 | // sort them per target widget by cherry picking from almostCanceledGestures and delivering | - |
424 | QSet<QGesture *> almostCanceledGestures = cancelledGestures; executed (the execution status of this line is deduced): QSet<QGesture *> almostCanceledGestures = cancelledGestures; | - |
425 | while (!almostCanceledGestures.isEmpty()) { evaluated: !almostCanceledGestures.isEmpty() yes Evaluation Count:1 | yes Evaluation Count:3 |
| 1-3 |
426 | QWidget *target = 0; executed (the execution status of this line is deduced): QWidget *target = 0; | - |
427 | QSet<QGesture*> gestures; executed (the execution status of this line is deduced): QSet<QGesture*> gestures; | - |
428 | iter = almostCanceledGestures.begin(); executed (the execution status of this line is deduced): iter = almostCanceledGestures.begin(); | - |
429 | // sort per target widget | - |
430 | while (iter != almostCanceledGestures.end()) { evaluated: iter != almostCanceledGestures.end() yes Evaluation Count:1 | yes Evaluation Count:1 |
| 1 |
431 | QWidget *widget = m_gestureTargets.value(*iter); executed (the execution status of this line is deduced): QWidget *widget = m_gestureTargets.value(*iter); | - |
432 | if (target == 0) partially evaluated: target == 0 yes Evaluation Count:1 | no Evaluation Count:0 |
| 0-1 |
433 | target = widget; executed: target = widget; Execution Count:1 | 1 |
434 | if (target == widget) { partially evaluated: target == widget yes Evaluation Count:1 | no Evaluation Count:0 |
| 0-1 |
435 | gestures << *iter; executed (the execution status of this line is deduced): gestures << *iter; | - |
436 | iter = almostCanceledGestures.erase(iter); executed (the execution status of this line is deduced): iter = almostCanceledGestures.erase(iter); | - |
437 | } else { executed: } Execution Count:1 | 1 |
438 | ++iter; never executed (the execution status of this line is deduced): ++iter; | - |
439 | } | 0 |
440 | } | - |
441 | Q_ASSERT(target); executed (the execution status of this line is deduced): qt_noop(); | - |
442 | | - |
443 | QSet<QGesture*> undeliveredGestures; executed (the execution status of this line is deduced): QSet<QGesture*> undeliveredGestures; | - |
444 | deliverEvents(gestures, &undeliveredGestures); executed (the execution status of this line is deduced): deliverEvents(gestures, &undeliveredGestures); | - |
445 | } executed: } Execution Count:1 | 1 |
446 | | - |
447 | for (iter = cancelledGestures.begin(); iter != cancelledGestures.end(); ++iter) evaluated: iter != cancelledGestures.end() yes Evaluation Count:1 | yes Evaluation Count:3 |
| 1-3 |
448 | recycle(*iter); executed: recycle(*iter); Execution Count:1 | 1 |
449 | } executed: } Execution Count:3 | 3 |
450 | | - |
451 | void QGestureManager::cleanupGesturesForRemovedRecognizer(QGesture *gesture) | - |
452 | { | - |
453 | QGestureRecognizer *recognizer = m_deletedRecognizers.value(gesture); never executed (the execution status of this line is deduced): QGestureRecognizer *recognizer = m_deletedRecognizers.value(gesture); | - |
454 | if(!recognizer) //The Gesture is removed while in the even loop, so the recognizers for this gestures was removed never evaluated: !recognizer | 0 |
455 | return; | 0 |
456 | m_deletedRecognizers.remove(gesture); never executed (the execution status of this line is deduced): m_deletedRecognizers.remove(gesture); | - |
457 | if (m_deletedRecognizers.keys(recognizer).isEmpty()) { never evaluated: m_deletedRecognizers.keys(recognizer).isEmpty() | 0 |
458 | // no more active gestures, cleanup! | - |
459 | qDeleteAll(m_obsoleteGestures.value(recognizer)); never executed (the execution status of this line is deduced): qDeleteAll(m_obsoleteGestures.value(recognizer)); | - |
460 | m_obsoleteGestures.remove(recognizer); never executed (the execution status of this line is deduced): m_obsoleteGestures.remove(recognizer); | - |
461 | delete recognizer; never executed (the execution status of this line is deduced): delete recognizer; | - |
462 | } | 0 |
463 | } | 0 |
464 | | - |
465 | // return true if accepted (consumed) | - |
466 | bool QGestureManager::filterEvent(QWidget *receiver, QEvent *event) | - |
467 | { | - |
468 | QMap<Qt::GestureType, int> types; executed (the execution status of this line is deduced): QMap<Qt::GestureType, int> types; | - |
469 | QMultiMap<QObject *, Qt::GestureType> contexts; executed (the execution status of this line is deduced): QMultiMap<QObject *, Qt::GestureType> contexts; | - |
470 | QWidget *w = receiver; executed (the execution status of this line is deduced): QWidget *w = receiver; | - |
471 | typedef QMap<Qt::GestureType, Qt::GestureFlags>::const_iterator ContextIterator; executed (the execution status of this line is deduced): typedef QMap<Qt::GestureType, Qt::GestureFlags>::const_iterator ContextIterator; | - |
472 | if (!w->d_func()->gestureContext.isEmpty()) { evaluated: !w->d_func()->gestureContext.isEmpty() yes Evaluation Count:45908 | yes Evaluation Count:304808 |
| 45908-304808 |
473 | for(ContextIterator it = w->d_func()->gestureContext.constBegin(), executed (the execution status of this line is deduced): for(ContextIterator it = w->d_func()->gestureContext.constBegin(), | - |
474 | e = w->d_func()->gestureContext.constEnd(); it != e; ++it) { evaluated: it != e yes Evaluation Count:46398 | yes Evaluation Count:45908 |
| 45908-46398 |
475 | types.insert(it.key(), 0); executed (the execution status of this line is deduced): types.insert(it.key(), 0); | - |
476 | contexts.insertMulti(w, it.key()); executed (the execution status of this line is deduced): contexts.insertMulti(w, it.key()); | - |
477 | } executed: } Execution Count:46398 | 46398 |
478 | } executed: } Execution Count:45908 | 45908 |
479 | // find all gesture contexts for the widget tree | - |
480 | w = w->isWindow() ? 0 : w->parentWidget(); evaluated: w->isWindow() yes Evaluation Count:76407 | yes Evaluation Count:274309 |
| 76407-274309 |
481 | while (w) evaluated: w yes Evaluation Count:522561 | yes Evaluation Count:76407 |
| 76407-522561 |
482 | { | - |
483 | for (ContextIterator it = w->d_func()->gestureContext.constBegin(), executed (the execution status of this line is deduced): for (ContextIterator it = w->d_func()->gestureContext.constBegin(), | - |
484 | e = w->d_func()->gestureContext.constEnd(); it != e; ++it) { evaluated: it != e yes Evaluation Count:16381 | yes Evaluation Count:522561 |
| 16381-522561 |
485 | if (!(it.value() & Qt::DontStartGestureOnChildren)) { evaluated: !(it.value() & Qt::DontStartGestureOnChildren) yes Evaluation Count:16358 | yes Evaluation Count:23 |
| 23-16358 |
486 | if (!types.contains(it.key())) { evaluated: !types.contains(it.key()) yes Evaluation Count:14141 | yes Evaluation Count:2217 |
| 2217-14141 |
487 | types.insert(it.key(), 0); executed (the execution status of this line is deduced): types.insert(it.key(), 0); | - |
488 | contexts.insertMulti(w, it.key()); executed (the execution status of this line is deduced): contexts.insertMulti(w, it.key()); | - |
489 | } executed: } Execution Count:14141 | 14141 |
490 | } executed: } Execution Count:16358 | 16358 |
491 | } executed: } Execution Count:16381 | 16381 |
492 | if (w->isWindow()) evaluated: w->isWindow() yes Evaluation Count:274309 | yes Evaluation Count:248252 |
| 248252-274309 |
493 | break; executed: break; Execution Count:274309 | 274309 |
494 | w = w->parentWidget(); executed (the execution status of this line is deduced): w = w->parentWidget(); | - |
495 | } executed: } Execution Count:248252 | 248252 |
496 | return contexts.isEmpty() ? false : filterEventThroughContexts(contexts, event); executed: return contexts.isEmpty() ? false : filterEventThroughContexts(contexts, event); Execution Count:350716 | 350716 |
497 | } | - |
498 | | - |
499 | #ifndef QT_NO_GRAPHICSVIEW | - |
500 | bool QGestureManager::filterEvent(QGraphicsObject *receiver, QEvent *event) | - |
501 | { | - |
502 | QMap<Qt::GestureType, int> types; executed (the execution status of this line is deduced): QMap<Qt::GestureType, int> types; | - |
503 | QMultiMap<QObject *, Qt::GestureType> contexts; executed (the execution status of this line is deduced): QMultiMap<QObject *, Qt::GestureType> contexts; | - |
504 | QGraphicsObject *item = receiver; executed (the execution status of this line is deduced): QGraphicsObject *item = receiver; | - |
505 | if (!item->QGraphicsItem::d_func()->gestureContext.isEmpty()) { evaluated: !item->QGraphicsItem::d_func()->gestureContext.isEmpty() yes Evaluation Count:460 | yes Evaluation Count:245 |
| 245-460 |
506 | typedef QMap<Qt::GestureType, Qt::GestureFlags>::const_iterator ContextIterator; executed (the execution status of this line is deduced): typedef QMap<Qt::GestureType, Qt::GestureFlags>::const_iterator ContextIterator; | - |
507 | for(ContextIterator it = item->QGraphicsItem::d_func()->gestureContext.constBegin(), executed (the execution status of this line is deduced): for(ContextIterator it = item->QGraphicsItem::d_func()->gestureContext.constBegin(), | - |
508 | e = item->QGraphicsItem::d_func()->gestureContext.constEnd(); it != e; ++it) { evaluated: it != e yes Evaluation Count:460 | yes Evaluation Count:460 |
| 460 |
509 | types.insert(it.key(), 0); executed (the execution status of this line is deduced): types.insert(it.key(), 0); | - |
510 | contexts.insertMulti(item, it.key()); executed (the execution status of this line is deduced): contexts.insertMulti(item, it.key()); | - |
511 | } executed: } Execution Count:460 | 460 |
512 | } executed: } Execution Count:460 | 460 |
513 | // find all gesture contexts for the graphics object tree | - |
514 | item = item->parentObject(); executed (the execution status of this line is deduced): item = item->parentObject(); | - |
515 | while (item) evaluated: item yes Evaluation Count:180 | yes Evaluation Count:705 |
| 180-705 |
516 | { | - |
517 | typedef QMap<Qt::GestureType, Qt::GestureFlags>::const_iterator ContextIterator; executed (the execution status of this line is deduced): typedef QMap<Qt::GestureType, Qt::GestureFlags>::const_iterator ContextIterator; | - |
518 | for (ContextIterator it = item->QGraphicsItem::d_func()->gestureContext.constBegin(), executed (the execution status of this line is deduced): for (ContextIterator it = item->QGraphicsItem::d_func()->gestureContext.constBegin(), | - |
519 | e = item->QGraphicsItem::d_func()->gestureContext.constEnd(); it != e; ++it) { evaluated: it != e yes Evaluation Count:85 | yes Evaluation Count:180 |
| 85-180 |
520 | if (!(it.value() & Qt::DontStartGestureOnChildren)) { evaluated: !(it.value() & Qt::DontStartGestureOnChildren) yes Evaluation Count:80 | yes Evaluation Count:5 |
| 5-80 |
521 | if (!types.contains(it.key())) { evaluated: !types.contains(it.key()) yes Evaluation Count:28 | yes Evaluation Count:52 |
| 28-52 |
522 | types.insert(it.key(), 0); executed (the execution status of this line is deduced): types.insert(it.key(), 0); | - |
523 | contexts.insertMulti(item, it.key()); executed (the execution status of this line is deduced): contexts.insertMulti(item, it.key()); | - |
524 | } executed: } Execution Count:28 | 28 |
525 | } executed: } Execution Count:80 | 80 |
526 | } executed: } Execution Count:85 | 85 |
527 | item = item->parentObject(); executed (the execution status of this line is deduced): item = item->parentObject(); | - |
528 | } executed: } Execution Count:180 | 180 |
529 | return contexts.isEmpty() ? false : filterEventThroughContexts(contexts, event); executed: return contexts.isEmpty() ? false : filterEventThroughContexts(contexts, event); Execution Count:705 | 705 |
530 | } | - |
531 | #endif | - |
532 | | - |
533 | bool QGestureManager::filterEvent(QObject *receiver, QEvent *event) | - |
534 | { | - |
535 | // if the receiver is actually a widget, we need to call the correct event | - |
536 | // filter method. | - |
537 | QWidgetWindow *widgetWindow = qobject_cast<QWidgetWindow *>(receiver); executed (the execution status of this line is deduced): QWidgetWindow *widgetWindow = qobject_cast<QWidgetWindow *>(receiver); | - |
538 | | - |
539 | if (widgetWindow) evaluated: widgetWindow yes Evaluation Count:15170 | yes Evaluation Count:23393 |
| 15170-23393 |
540 | return filterEvent(widgetWindow->widget(), event); executed: return filterEvent(widgetWindow->widget(), event); Execution Count:15170 | 15170 |
541 | | - |
542 | if (!m_gestureToRecognizer.contains(static_cast<QGesture *>(receiver))) partially evaluated: !m_gestureToRecognizer.contains(static_cast<QGesture *>(receiver)) yes Evaluation Count:23393 | no Evaluation Count:0 |
| 0-23393 |
543 | return false; executed: return false; Execution Count:23393 | 23393 |
544 | QGesture *state = static_cast<QGesture *>(receiver); never executed (the execution status of this line is deduced): QGesture *state = static_cast<QGesture *>(receiver); | - |
545 | QMultiMap<QObject *, Qt::GestureType> contexts; never executed (the execution status of this line is deduced): QMultiMap<QObject *, Qt::GestureType> contexts; | - |
546 | contexts.insert(state, state->gestureType()); never executed (the execution status of this line is deduced): contexts.insert(state, state->gestureType()); | - |
547 | return filterEventThroughContexts(contexts, event); never executed: return filterEventThroughContexts(contexts, event); | 0 |
548 | } | - |
549 | | - |
550 | void QGestureManager::getGestureTargets(const QSet<QGesture*> &gestures, | - |
551 | QHash<QWidget *, QList<QGesture *> > *conflicts, | - |
552 | QHash<QWidget *, QList<QGesture *> > *normal) | - |
553 | { | - |
554 | typedef QHash<Qt::GestureType, QHash<QWidget *, QGesture *> > GestureByTypes; executed (the execution status of this line is deduced): typedef QHash<Qt::GestureType, QHash<QWidget *, QGesture *> > GestureByTypes; | - |
555 | GestureByTypes gestureByTypes; executed (the execution status of this line is deduced): GestureByTypes gestureByTypes; | - |
556 | | - |
557 | // sort gestures by types | - |
558 | foreach (QGesture *gesture, gestures) { executed (the execution status of this line is deduced): for (QForeachContainer<__typeof__(gestures)> _container_(gestures); !_container_.brk && _container_.i != _container_.e; __extension__ ({ ++_container_.brk; ++_container_.i; })) for (QGesture *gesture = *_container_.i;; __extension__ ({--_container_.brk; break;})) { | - |
559 | QWidget *receiver = m_gestureTargets.value(gesture, 0); executed (the execution status of this line is deduced): QWidget *receiver = m_gestureTargets.value(gesture, 0); | - |
560 | Q_ASSERT(receiver); executed (the execution status of this line is deduced): qt_noop(); | - |
561 | gestureByTypes[gesture->gestureType()].insert(receiver, gesture); executed (the execution status of this line is deduced): gestureByTypes[gesture->gestureType()].insert(receiver, gesture); | - |
562 | } executed: } Execution Count:78 | 78 |
563 | | - |
564 | // for each gesture type | - |
565 | foreach (Qt::GestureType type, gestureByTypes.keys()) { executed (the execution status of this line is deduced): for (QForeachContainer<__typeof__(gestureByTypes.keys())> _container_(gestureByTypes.keys()); !_container_.brk && _container_.i != _container_.e; __extension__ ({ ++_container_.brk; ++_container_.i; })) for (Qt::GestureType type = *_container_.i;; __extension__ ({--_container_.brk; break;})) { | - |
566 | QHash<QWidget *, QGesture *> gestures = gestureByTypes.value(type); executed (the execution status of this line is deduced): QHash<QWidget *, QGesture *> gestures = gestureByTypes.value(type); | - |
567 | foreach (QWidget *widget, gestures.keys()) { executed (the execution status of this line is deduced): for (QForeachContainer<__typeof__(gestures.keys())> _container_(gestures.keys()); !_container_.brk && _container_.i != _container_.e; __extension__ ({ ++_container_.brk; ++_container_.i; })) for (QWidget *widget = *_container_.i;; __extension__ ({--_container_.brk; break;})) { | - |
568 | QWidget *w = widget->parentWidget(); executed (the execution status of this line is deduced): QWidget *w = widget->parentWidget(); | - |
569 | while (w) { evaluated: w yes Evaluation Count:68 | yes Evaluation Count:16 |
| 16-68 |
570 | QMap<Qt::GestureType, Qt::GestureFlags>::const_iterator it executed (the execution status of this line is deduced): QMap<Qt::GestureType, Qt::GestureFlags>::const_iterator it | - |
571 | = w->d_func()->gestureContext.constFind(type); executed (the execution status of this line is deduced): = w->d_func()->gestureContext.constFind(type); | - |
572 | if (it != w->d_func()->gestureContext.constEnd()) { evaluated: it != w->d_func()->gestureContext.constEnd() yes Evaluation Count:14 | yes Evaluation Count:54 |
| 14-54 |
573 | // i.e. 'w' listens to gesture 'type' | - |
574 | if (!(it.value() & Qt::DontStartGestureOnChildren) && w != widget) { evaluated: !(it.value() & Qt::DontStartGestureOnChildren) yes Evaluation Count:12 | yes Evaluation Count:2 |
partially evaluated: w != widget yes Evaluation Count:12 | no Evaluation Count:0 |
| 0-12 |
575 | // conflicting gesture! | - |
576 | (*conflicts)[widget].append(gestures[widget]); executed (the execution status of this line is deduced): (*conflicts)[widget].append(gestures[widget]); | - |
577 | break; executed: break; Execution Count:12 | 12 |
578 | } | - |
579 | } executed: } Execution Count:2 | 2 |
580 | if (w->isWindow()) { evaluated: w->isWindow() yes Evaluation Count:50 | yes Evaluation Count:6 |
| 6-50 |
581 | w = 0; executed (the execution status of this line is deduced): w = 0; | - |
582 | break; executed: break; Execution Count:50 | 50 |
583 | } | - |
584 | w = w->parentWidget(); executed (the execution status of this line is deduced): w = w->parentWidget(); | - |
585 | } executed: } Execution Count:6 | 6 |
586 | if (!w) evaluated: !w yes Evaluation Count:66 | yes Evaluation Count:12 |
| 12-66 |
587 | (*normal)[widget].append(gestures[widget]); executed: (*normal)[widget].append(gestures[widget]); Execution Count:66 | 66 |
588 | } executed: } Execution Count:78 | 78 |
589 | } executed: } Execution Count:78 | 78 |
590 | } executed: } Execution Count:245 | 245 |
591 | | - |
592 | void QGestureManager::deliverEvents(const QSet<QGesture *> &gestures, | - |
593 | QSet<QGesture *> *undeliveredGestures) | - |
594 | { | - |
595 | if (gestures.isEmpty()) evaluated: gestures.isEmpty() yes Evaluation Count:116 | yes Evaluation Count:245 |
| 116-245 |
596 | return; executed: return; Execution Count:116 | 116 |
597 | | - |
598 | typedef QHash<QWidget *, QList<QGesture *> > GesturesPerWidget; executed (the execution status of this line is deduced): typedef QHash<QWidget *, QList<QGesture *> > GesturesPerWidget; | - |
599 | GesturesPerWidget conflictedGestures; executed (the execution status of this line is deduced): GesturesPerWidget conflictedGestures; | - |
600 | GesturesPerWidget normalStartedGestures; executed (the execution status of this line is deduced): GesturesPerWidget normalStartedGestures; | - |
601 | | - |
602 | QSet<QGesture *> startedGestures; executed (the execution status of this line is deduced): QSet<QGesture *> startedGestures; | - |
603 | // first figure out the initial receivers of gestures | - |
604 | for (QSet<QGesture *>::const_iterator it = gestures.begin(), executed (the execution status of this line is deduced): for (QSet<QGesture *>::const_iterator it = gestures.begin(), | - |
605 | e = gestures.end(); it != e; ++it) { evaluated: it != e yes Evaluation Count:289 | yes Evaluation Count:245 |
| 245-289 |
606 | QGesture *gesture = *it; executed (the execution status of this line is deduced): QGesture *gesture = *it; | - |
607 | QWidget *target = m_gestureTargets.value(gesture, 0); executed (the execution status of this line is deduced): QWidget *target = m_gestureTargets.value(gesture, 0); | - |
608 | if (!target) { evaluated: !target yes Evaluation Count:84 | yes Evaluation Count:205 |
| 84-205 |
609 | // the gesture has just started and doesn't have a target yet. | - |
610 | Q_ASSERT(gesture->state() == Qt::GestureStarted); executed (the execution status of this line is deduced): qt_noop(); | - |
611 | if (gesture->hasHotSpot()) { evaluated: gesture->hasHotSpot() yes Evaluation Count:45 | yes Evaluation Count:39 |
| 39-45 |
612 | // guess the target widget using the hotspot of the gesture | - |
613 | QPoint pt = gesture->hotSpot().toPoint(); executed (the execution status of this line is deduced): QPoint pt = gesture->hotSpot().toPoint(); | - |
614 | if (QWidget *topLevel = qApp->topLevelAt(pt)) { evaluated: QWidget *topLevel = (static_cast<QApplication *>(QCoreApplication::instance()))->topLevelAt(pt) yes Evaluation Count:40 | yes Evaluation Count:5 |
| 5-40 |
615 | QWidget *child = topLevel->childAt(topLevel->mapFromGlobal(pt)); executed (the execution status of this line is deduced): QWidget *child = topLevel->childAt(topLevel->mapFromGlobal(pt)); | - |
616 | target = child ? child : topLevel; evaluated: child yes Evaluation Count:38 | yes Evaluation Count:2 |
| 2-38 |
617 | } executed: } Execution Count:40 | 40 |
618 | } else { executed: } Execution Count:45 | 45 |
619 | // or use the context of the gesture | - |
620 | QObject *context = m_gestureOwners.value(gesture, 0); executed (the execution status of this line is deduced): QObject *context = m_gestureOwners.value(gesture, 0); | - |
621 | if (context->isWidgetType()) evaluated: context->isWidgetType() yes Evaluation Count:35 | yes Evaluation Count:4 |
| 4-35 |
622 | target = static_cast<QWidget *>(context); executed: target = static_cast<QWidget *>(context); Execution Count:35 | 35 |
623 | } executed: } Execution Count:39 | 39 |
624 | if (target) evaluated: target yes Evaluation Count:75 | yes Evaluation Count:9 |
| 9-75 |
625 | m_gestureTargets.insert(gesture, target); executed: m_gestureTargets.insert(gesture, target); Execution Count:75 | 75 |
626 | } executed: } Execution Count:84 | 84 |
627 | | - |
628 | Qt::GestureType gestureType = gesture->gestureType(); executed (the execution status of this line is deduced): Qt::GestureType gestureType = gesture->gestureType(); | - |
629 | Q_ASSERT(gestureType != Qt::CustomGesture); executed (the execution status of this line is deduced): qt_noop(); | - |
630 | Q_UNUSED(gestureType); executed (the execution status of this line is deduced): (void)gestureType;; | - |
631 | | - |
632 | if (target) { evaluated: target yes Evaluation Count:280 | yes Evaluation Count:9 |
| 9-280 |
633 | if (gesture->state() == Qt::GestureStarted) { evaluated: gesture->state() == Qt::GestureStarted yes Evaluation Count:78 | yes Evaluation Count:202 |
| 78-202 |
634 | startedGestures.insert(gesture); executed (the execution status of this line is deduced): startedGestures.insert(gesture); | - |
635 | } else { executed: } Execution Count:78 | 78 |
636 | normalStartedGestures[target].append(gesture); executed (the execution status of this line is deduced): normalStartedGestures[target].append(gesture); | - |
637 | } executed: } Execution Count:202 | 202 |
638 | } else { | - |
639 | DEBUG() << "QGestureManager::deliverEvent: could not find the target for gesture" never executed: QMessageLogger("kernel/qgesturemanager.cpp", 639, __PRETTY_FUNCTION__).debug() << "QGestureManager::deliverEvent: could not find the target for gesture" << gesture->gestureType(); partially evaluated: 0 no Evaluation Count:0 | yes Evaluation Count:9 |
| 0-9 |
640 | << gesture->gestureType(); never executed: QMessageLogger("kernel/qgesturemanager.cpp", 639, __PRETTY_FUNCTION__).debug() << "QGestureManager::deliverEvent: could not find the target for gesture" << gesture->gestureType(); | 0 |
641 | qWarning("QGestureManager::deliverEvent: could not find the target for gesture"); executed (the execution status of this line is deduced): QMessageLogger("kernel/qgesturemanager.cpp", 641, __PRETTY_FUNCTION__).warning("QGestureManager::deliverEvent: could not find the target for gesture"); | - |
642 | undeliveredGestures->insert(gesture); executed (the execution status of this line is deduced): undeliveredGestures->insert(gesture); | - |
643 | } executed: } Execution Count:9 | 9 |
644 | } | - |
645 | | - |
646 | getGestureTargets(startedGestures, &conflictedGestures, &normalStartedGestures); executed (the execution status of this line is deduced): getGestureTargets(startedGestures, &conflictedGestures, &normalStartedGestures); | - |
647 | DEBUG() << "QGestureManager::deliverEvents:" never executed: QMessageLogger("kernel/qgesturemanager.cpp", 647, __PRETTY_FUNCTION__).debug() << "QGestureManager::deliverEvents:" << "\nstarted: " << startedGestures << "\nconflicted: " << conflictedGestures << "\nnormal: " << normalStartedGestures << "\n"; partially evaluated: 0 no Evaluation Count:0 | yes Evaluation Count:245 |
| 0-245 |
648 | << "\nstarted: " << startedGestures never executed: QMessageLogger("kernel/qgesturemanager.cpp", 647, __PRETTY_FUNCTION__).debug() << "QGestureManager::deliverEvents:" << "\nstarted: " << startedGestures << "\nconflicted: " << conflictedGestures << "\nnormal: " << normalStartedGestures << "\n"; | 0 |
649 | << "\nconflicted: " << conflictedGestures never executed: QMessageLogger("kernel/qgesturemanager.cpp", 647, __PRETTY_FUNCTION__).debug() << "QGestureManager::deliverEvents:" << "\nstarted: " << startedGestures << "\nconflicted: " << conflictedGestures << "\nnormal: " << normalStartedGestures << "\n"; | 0 |
650 | << "\nnormal: " << normalStartedGestures never executed: QMessageLogger("kernel/qgesturemanager.cpp", 647, __PRETTY_FUNCTION__).debug() << "QGestureManager::deliverEvents:" << "\nstarted: " << startedGestures << "\nconflicted: " << conflictedGestures << "\nnormal: " << normalStartedGestures << "\n"; | 0 |
651 | << "\n"; never executed: QMessageLogger("kernel/qgesturemanager.cpp", 647, __PRETTY_FUNCTION__).debug() << "QGestureManager::deliverEvents:" << "\nstarted: " << startedGestures << "\nconflicted: " << conflictedGestures << "\nnormal: " << normalStartedGestures << "\n"; | 0 |
652 | | - |
653 | // if there are conflicting gestures, send the GestureOverride event | - |
654 | for (GesturesPerWidget::const_iterator it = conflictedGestures.constBegin(), executed (the execution status of this line is deduced): for (GesturesPerWidget::const_iterator it = conflictedGestures.constBegin(), | - |
655 | e = conflictedGestures.constEnd(); it != e; ++it) { evaluated: it != e yes Evaluation Count:10 | yes Evaluation Count:245 |
| 10-245 |
656 | QWidget *receiver = it.key(); executed (the execution status of this line is deduced): QWidget *receiver = it.key(); | - |
657 | QList<QGesture *> gestures = it.value(); executed (the execution status of this line is deduced): QList<QGesture *> gestures = it.value(); | - |
658 | DEBUG() << "QGestureManager::deliverEvents: sending GestureOverride to" never executed: QMessageLogger("kernel/qgesturemanager.cpp", 658, __PRETTY_FUNCTION__).debug() << "QGestureManager::deliverEvents: sending GestureOverride to" << receiver << "gestures:" << gestures; partially evaluated: 0 no Evaluation Count:0 | yes Evaluation Count:10 |
| 0-10 |
659 | << receiver never executed: QMessageLogger("kernel/qgesturemanager.cpp", 658, __PRETTY_FUNCTION__).debug() << "QGestureManager::deliverEvents: sending GestureOverride to" << receiver << "gestures:" << gestures; | 0 |
660 | << "gestures:" << gestures; never executed: QMessageLogger("kernel/qgesturemanager.cpp", 658, __PRETTY_FUNCTION__).debug() << "QGestureManager::deliverEvents: sending GestureOverride to" << receiver << "gestures:" << gestures; | 0 |
661 | QGestureEvent event(gestures); executed (the execution status of this line is deduced): QGestureEvent event(gestures); | - |
662 | event.t = QEvent::GestureOverride; executed (the execution status of this line is deduced): event.t = QEvent::GestureOverride; | - |
663 | // mark event and individual gestures as ignored | - |
664 | event.ignore(); executed (the execution status of this line is deduced): event.ignore(); | - |
665 | foreach(QGesture *g, gestures) executed (the execution status of this line is deduced): for (QForeachContainer<__typeof__(gestures)> _container_(gestures); !_container_.brk && _container_.i != _container_.e; __extension__ ({ ++_container_.brk; ++_container_.i; })) for (QGesture *g = *_container_.i;; __extension__ ({--_container_.brk; break;})) | - |
666 | event.setAccepted(g, false); executed: event.setAccepted(g, false); Execution Count:12 | 12 |
667 | | - |
668 | QApplication::sendEvent(receiver, &event); executed (the execution status of this line is deduced): QApplication::sendEvent(receiver, &event); | - |
669 | bool eventAccepted = event.isAccepted(); executed (the execution status of this line is deduced): bool eventAccepted = event.isAccepted(); | - |
670 | foreach(QGesture *gesture, event.gestures()) { executed (the execution status of this line is deduced): for (QForeachContainer<__typeof__(event.gestures())> _container_(event.gestures()); !_container_.brk && _container_.i != _container_.e; __extension__ ({ ++_container_.brk; ++_container_.i; })) for (QGesture *gesture = *_container_.i;; __extension__ ({--_container_.brk; break;})) { | - |
671 | if (eventAccepted || event.isAccepted(gesture)) { partially evaluated: eventAccepted no Evaluation Count:0 | yes Evaluation Count:12 |
evaluated: event.isAccepted(gesture) yes Evaluation Count:3 | yes Evaluation Count:9 |
| 0-12 |
672 | QWidget *w = event.m_targetWidgets.value(gesture->gestureType(), 0); executed (the execution status of this line is deduced): QWidget *w = event.m_targetWidgets.value(gesture->gestureType(), 0); | - |
673 | Q_ASSERT(w); executed (the execution status of this line is deduced): qt_noop(); | - |
674 | DEBUG() << "override event: gesture was accepted:" << gesture << w; never executed: QMessageLogger("kernel/qgesturemanager.cpp", 674, __PRETTY_FUNCTION__).debug() << "override event: gesture was accepted:" << gesture << w; partially evaluated: 0 no Evaluation Count:0 | yes Evaluation Count:3 |
| 0-3 |
675 | QList<QGesture *> &gestures = normalStartedGestures[w]; executed (the execution status of this line is deduced): QList<QGesture *> &gestures = normalStartedGestures[w]; | - |
676 | gestures.append(gesture); executed (the execution status of this line is deduced): gestures.append(gesture); | - |
677 | // override the target | - |
678 | m_gestureTargets[gesture] = w; executed (the execution status of this line is deduced): m_gestureTargets[gesture] = w; | - |
679 | } else { executed: } Execution Count:3 | 3 |
680 | DEBUG() << "override event: gesture wasn't accepted. putting back:" << gesture; never executed: QMessageLogger("kernel/qgesturemanager.cpp", 680, __PRETTY_FUNCTION__).debug() << "override event: gesture wasn't accepted. putting back:" << gesture; partially evaluated: 0 no Evaluation Count:0 | yes Evaluation Count:9 |
| 0-9 |
681 | QList<QGesture *> &gestures = normalStartedGestures[receiver]; executed (the execution status of this line is deduced): QList<QGesture *> &gestures = normalStartedGestures[receiver]; | - |
682 | gestures.append(gesture); executed (the execution status of this line is deduced): gestures.append(gesture); | - |
683 | } executed: } Execution Count:9 | 9 |
684 | } | - |
685 | } executed: } Execution Count:10 | 10 |
686 | | - |
687 | // delivering gestures that are not in conflicted state | - |
688 | for (GesturesPerWidget::const_iterator it = normalStartedGestures.constBegin(), executed (the execution status of this line is deduced): for (GesturesPerWidget::const_iterator it = normalStartedGestures.constBegin(), | - |
689 | e = normalStartedGestures.constEnd(); it != e; ++it) { evaluated: it != e yes Evaluation Count:258 | yes Evaluation Count:245 |
| 245-258 |
690 | if (!it.value().isEmpty()) { partially evaluated: !it.value().isEmpty() yes Evaluation Count:258 | no Evaluation Count:0 |
| 0-258 |
691 | DEBUG() << "QGestureManager::deliverEvents: sending to" << it.key() never executed: QMessageLogger("kernel/qgesturemanager.cpp", 691, __PRETTY_FUNCTION__).debug() << "QGestureManager::deliverEvents: sending to" << it.key() << "gestures:" << it.value(); partially evaluated: 0 no Evaluation Count:0 | yes Evaluation Count:258 |
| 0-258 |
692 | << "gestures:" << it.value(); never executed: QMessageLogger("kernel/qgesturemanager.cpp", 691, __PRETTY_FUNCTION__).debug() << "QGestureManager::deliverEvents: sending to" << it.key() << "gestures:" << it.value(); | 0 |
693 | QGestureEvent event(it.value()); executed (the execution status of this line is deduced): QGestureEvent event(it.value()); | - |
694 | QApplication::sendEvent(it.key(), &event); executed (the execution status of this line is deduced): QApplication::sendEvent(it.key(), &event); | - |
695 | bool eventAccepted = event.isAccepted(); executed (the execution status of this line is deduced): bool eventAccepted = event.isAccepted(); | - |
696 | foreach (QGesture *gesture, event.gestures()) { executed (the execution status of this line is deduced): for (QForeachContainer<__typeof__(event.gestures())> _container_(event.gestures()); !_container_.brk && _container_.i != _container_.e; __extension__ ({ ++_container_.brk; ++_container_.i; })) for (QGesture *gesture = *_container_.i;; __extension__ ({--_container_.brk; break;})) { | - |
697 | if (gesture->state() == Qt::GestureStarted && evaluated: gesture->state() == Qt::GestureStarted yes Evaluation Count:77 | yes Evaluation Count:203 |
| 77-203 |
698 | (eventAccepted || event.isAccepted(gesture))) { partially evaluated: eventAccepted no Evaluation Count:0 | yes Evaluation Count:77 |
evaluated: event.isAccepted(gesture) yes Evaluation Count:64 | yes Evaluation Count:13 |
| 0-77 |
699 | QWidget *w = event.m_targetWidgets.value(gesture->gestureType(), 0); executed (the execution status of this line is deduced): QWidget *w = event.m_targetWidgets.value(gesture->gestureType(), 0); | - |
700 | Q_ASSERT(w); executed (the execution status of this line is deduced): qt_noop(); | - |
701 | DEBUG() << "started gesture was delivered and accepted by" << w; never executed: QMessageLogger("kernel/qgesturemanager.cpp", 701, __PRETTY_FUNCTION__).debug() << "started gesture was delivered and accepted by" << w; partially evaluated: 0 no Evaluation Count:0 | yes Evaluation Count:64 |
| 0-64 |
702 | m_gestureTargets[gesture] = w; executed (the execution status of this line is deduced): m_gestureTargets[gesture] = w; | - |
703 | } executed: } Execution Count:64 | 64 |
704 | } executed: } Execution Count:280 | 280 |
705 | } executed: } Execution Count:258 | 258 |
706 | } executed: } Execution Count:258 | 258 |
707 | } executed: } Execution Count:245 | 245 |
708 | | - |
709 | void QGestureManager::recycle(QGesture *gesture) | - |
710 | { | - |
711 | QGestureRecognizer *recognizer = m_gestureToRecognizer.value(gesture, 0); executed (the execution status of this line is deduced): QGestureRecognizer *recognizer = m_gestureToRecognizer.value(gesture, 0); | - |
712 | if (recognizer) { partially evaluated: recognizer yes Evaluation Count:87 | no Evaluation Count:0 |
| 0-87 |
713 | gesture->setGestureCancelPolicy(QGesture::CancelNone); executed (the execution status of this line is deduced): gesture->setGestureCancelPolicy(QGesture::CancelNone); | - |
714 | recognizer->reset(gesture); executed (the execution status of this line is deduced): recognizer->reset(gesture); | - |
715 | m_activeGestures.remove(gesture); executed (the execution status of this line is deduced): m_activeGestures.remove(gesture); | - |
716 | } else { executed: } Execution Count:87 | 87 |
717 | cleanupGesturesForRemovedRecognizer(gesture); never executed (the execution status of this line is deduced): cleanupGesturesForRemovedRecognizer(gesture); | - |
718 | } | 0 |
719 | } | - |
720 | | - |
721 | QT_END_NAMESPACE | - |
722 | | - |
723 | #endif // QT_NO_GESTURES | - |
724 | | - |
725 | #include "moc_qgesturemanager_p.cpp" | - |
726 | | - |
| | |