| Absolute File Name: | /home/qt/qt5_coco/qt5/qtbase/src/widgets/kernel/qgesturemanager.cpp | 
| Switch to Source code | Preprocessed file | 
| Line | Source | Count | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | - | |||||||||||||
| 2 | - | |||||||||||||
| 3 | - | |||||||||||||
| 4 | - | |||||||||||||
| 5 | - | |||||||||||||
| 6 | const QLoggingCategory &lcGestureManager() { static const QLoggingCategory category("qt.widgets.gestures"); return never executed: category; return category;never executed: } return category; | 0 | ||||||||||||
| 7 | - | |||||||||||||
| 8 | - | |||||||||||||
| 9 | static inline int panTouchPoints() | - | ||||||||||||
| 10 | { | - | ||||||||||||
| 11 | - | |||||||||||||
| 12 | static const char panTouchPointVariable[] = "QT_PAN_TOUCHPOINTS"; | - | ||||||||||||
| 13 | if (qEnvironmentVariableIsSet(panTouchPointVariable) 
 | 0 | ||||||||||||
| 14 | bool ok; | - | ||||||||||||
| 15 | const int result = qEnvironmentVariableIntValue(panTouchPointVariable, &ok); | - | ||||||||||||
| 16 | if (ok 
 
 | 0 | ||||||||||||
| 17 | return never executed: result; return result;never executed:  return result; | 0 | ||||||||||||
| 18 | QMessageLogger(__FILE__, 78, __PRETTY_FUNCTION__).warning() << "Ignoring invalid value of " << panTouchPointVariable; | - | ||||||||||||
| 19 | } never executed:  end of block | 0 | ||||||||||||
| 20 | - | |||||||||||||
| 21 | - | |||||||||||||
| 22 | - | |||||||||||||
| 23 | - | |||||||||||||
| 24 | return never executed: 2; return 2;never executed:  return 2; | 0 | ||||||||||||
| 25 | } | - | ||||||||||||
| 26 | - | |||||||||||||
| 27 | - | |||||||||||||
| 28 | QGestureManager::QGestureManager(QObject *parent) | - | ||||||||||||
| 29 | : QObject(parent), state(NotGesture), m_lastCustomGestureId(Qt::CustomGesture) | - | ||||||||||||
| 30 | { | - | ||||||||||||
| 31 | qRegisterMetaType<Qt::GestureState>(); | - | ||||||||||||
| 32 | - | |||||||||||||
| 33 | - | |||||||||||||
| 34 | - | |||||||||||||
| 35 | - | |||||||||||||
| 36 | - | |||||||||||||
| 37 | - | |||||||||||||
| 38 | registerGestureRecognizer(new QPanGestureRecognizer(panTouchPoints())); | - | ||||||||||||
| 39 | registerGestureRecognizer(new QPinchGestureRecognizer); | - | ||||||||||||
| 40 | registerGestureRecognizer(new QSwipeGestureRecognizer); | - | ||||||||||||
| 41 | registerGestureRecognizer(new QTapGestureRecognizer); | - | ||||||||||||
| 42 | - | |||||||||||||
| 43 | - | |||||||||||||
| 44 | - | |||||||||||||
| 45 | - | |||||||||||||
| 46 | - | |||||||||||||
| 47 | - | |||||||||||||
| 48 | - | |||||||||||||
| 49 | registerGestureRecognizer(new QTapAndHoldGestureRecognizer); | - | ||||||||||||
| 50 | - | |||||||||||||
| 51 | } never executed:  end of block | 0 | ||||||||||||
| 52 | - | |||||||||||||
| 53 | QGestureManager::~QGestureManager() | - | ||||||||||||
| 54 | { | - | ||||||||||||
| 55 | qDeleteAll(m_recognizers); | - | ||||||||||||
| 56 | for (QForeachContainer<typename QtPrivate::remove_reference<decltype(m_obsoleteGestures.keys())>::type> _container_((m_obsoleteGestures.keys())); _container_.control && _container_.i != _container_.e; ++_container_.i, _container_.control ^= 1) for (QGestureRecognizer *recognizer = *_container_.i; _container_.control; _container_.control = 0) { | - | ||||||||||||
| 57 | qDeleteAll(m_obsoleteGestures.value(recognizer)); | - | ||||||||||||
| 58 | delete recognizer; | - | ||||||||||||
| 59 | } never executed:  end of block | 0 | ||||||||||||
| 60 | m_obsoleteGestures.clear(); | - | ||||||||||||
| 61 | } never executed:  end of block | 0 | ||||||||||||
| 62 | - | |||||||||||||
| 63 | Qt::GestureType QGestureManager::registerGestureRecognizer(QGestureRecognizer *recognizer) | - | ||||||||||||
| 64 | { | - | ||||||||||||
| 65 | QGesture *dummy = recognizer->create(0); | - | ||||||||||||
| 66 | if (__builtin_expect(!!(!dummy), false) 
 | 0 | ||||||||||||
| 67 | QMessageLogger(__FILE__, 127, __PRETTY_FUNCTION__).warning("QGestureManager::registerGestureRecognizer: " | - | ||||||||||||
| 68 | "the recognizer fails to create a gesture object, skipping registration."); | - | ||||||||||||
| 69 | return never executed: Qt::GestureType(0); return Qt::GestureType(0);never executed:  return Qt::GestureType(0); | 0 | ||||||||||||
| 70 | } | - | ||||||||||||
| 71 | Qt::GestureType type = dummy->gestureType(); | - | ||||||||||||
| 72 | if (type == Qt::CustomGesture 
 | 0 | ||||||||||||
| 73 | - | |||||||||||||
| 74 | ++m_lastCustomGestureId; | - | ||||||||||||
| 75 | type = Qt::GestureType(m_lastCustomGestureId); | - | ||||||||||||
| 76 | } never executed:  end of block | 0 | ||||||||||||
| 77 | m_recognizers.insertMulti(type, recognizer); | - | ||||||||||||
| 78 | delete dummy; | - | ||||||||||||
| 79 | return never executed: type; return type;never executed:  return type; | 0 | ||||||||||||
| 80 | } | - | ||||||||||||
| 81 | - | |||||||||||||
| 82 | void QGestureManager::unregisterGestureRecognizer(Qt::GestureType type) | - | ||||||||||||
| 83 | { | - | ||||||||||||
| 84 | QList<QGestureRecognizer *> list = m_recognizers.values(type); | - | ||||||||||||
| 85 | while (QGestureRecognizer *recognizer = m_recognizers.take(type) 
 | 0 | ||||||||||||
| 86 | if (!m_obsoleteGestures.contains(recognizer) 
 | 0 | ||||||||||||
| 87 | - | |||||||||||||
| 88 | m_obsoleteGestures.insert(recognizer, QSet<QGesture *>()); | - | ||||||||||||
| 89 | } never executed:  end of block | 0 | ||||||||||||
| 90 | } never executed:  end of block | 0 | ||||||||||||
| 91 | for (QForeachContainer<typename QtPrivate::remove_reference<decltype(m_gestureToRecognizer.keys())>::type> _container_((m_gestureToRecognizer.keys())); _container_.control && _container_.i != _container_.e; ++_container_.i, _container_.control ^= 1) for (QGesture *g = *_container_.i; _container_.control; _container_.control = 0) { | - | ||||||||||||
| 92 | QGestureRecognizer *recognizer = m_gestureToRecognizer.value(g); | - | ||||||||||||
| 93 | if (list.contains(recognizer) 
 | 0 | ||||||||||||
| 94 | m_deletedRecognizers.insert(g, recognizer); | - | ||||||||||||
| 95 | } never executed:  end of block | 0 | ||||||||||||
| 96 | } never executed:  end of block | 0 | ||||||||||||
| 97 | - | |||||||||||||
| 98 | QMap<ObjectGesture, QList<QGesture *> >::const_iterator iter = m_objectGestures.constBegin(); | - | ||||||||||||
| 99 | while (iter != m_objectGestures.constEnd() 
 | 0 | ||||||||||||
| 100 | ObjectGesture objectGesture = iter.key(); | - | ||||||||||||
| 101 | if (objectGesture.gesture == type 
 | 0 | ||||||||||||
| 102 | for (QForeachContainer<typename QtPrivate::remove_reference<decltype(iter.value())>::type> _container_((iter.value())); _container_.control && _container_.i != _container_.e; ++_container_.i, _container_.control ^= 1) for (QGesture *g = *_container_.i; _container_.control; _container_.control = 0) { | - | ||||||||||||
| 103 | if (QGestureRecognizer *recognizer = m_gestureToRecognizer.value(g) 
 | 0 | ||||||||||||
| 104 | m_gestureToRecognizer.remove(g); | - | ||||||||||||
| 105 | m_obsoleteGestures[recognizer].insert(g); | - | ||||||||||||
| 106 | } never executed:  end of block | 0 | ||||||||||||
| 107 | } never executed:  end of block | 0 | ||||||||||||
| 108 | } never executed:  end of block | 0 | ||||||||||||
| 109 | ++iter; | - | ||||||||||||
| 110 | } never executed:  end of block | 0 | ||||||||||||
| 111 | } never executed:  end of block | 0 | ||||||||||||
| 112 | - | |||||||||||||
| 113 | void QGestureManager::cleanupCachedGestures(QObject *target, Qt::GestureType type) | - | ||||||||||||
| 114 | { | - | ||||||||||||
| 115 | QMap<ObjectGesture, QList<QGesture *> >::Iterator iter = m_objectGestures.begin(); | - | ||||||||||||
| 116 | while (iter != m_objectGestures.end() 
 | 0 | ||||||||||||
| 117 | ObjectGesture objectGesture = iter.key(); | - | ||||||||||||
| 118 | if (objectGesture.gesture == type 
 
 | 0 | ||||||||||||
| 119 | QSet<QGesture *> gestures = iter.value().toSet(); | - | ||||||||||||
| 120 | for (QHash<QGestureRecognizer *, QSet<QGesture *> >::iterator | - | ||||||||||||
| 121 | it = m_obsoleteGestures.begin(), e = m_obsoleteGestures.end(); it != e 
 | 0 | ||||||||||||
| 122 | it.value() -= gestures; | - | ||||||||||||
| 123 | } never executed:  end of block | 0 | ||||||||||||
| 124 | for (QForeachContainer<typename QtPrivate::remove_reference<decltype(gestures)>::type> _container_((gestures)); _container_.control && _container_.i != _container_.e; ++_container_.i, _container_.control ^= 1) for (QGesture *g = *_container_.i; _container_.control; _container_.control = 0) { | - | ||||||||||||
| 125 | m_deletedRecognizers.remove(g); | - | ||||||||||||
| 126 | m_gestureToRecognizer.remove(g); | - | ||||||||||||
| 127 | m_maybeGestures.remove(g); | - | ||||||||||||
| 128 | m_activeGestures.remove(g); | - | ||||||||||||
| 129 | m_gestureOwners.remove(g); | - | ||||||||||||
| 130 | m_gestureTargets.remove(g); | - | ||||||||||||
| 131 | m_gesturesToDelete.insert(g); | - | ||||||||||||
| 132 | } never executed:  end of block | 0 | ||||||||||||
| 133 | - | |||||||||||||
| 134 | iter = m_objectGestures.erase(iter); | - | ||||||||||||
| 135 | } never executed: else { end of block | 0 | ||||||||||||
| 136 | ++iter; | - | ||||||||||||
| 137 | } never executed:  end of block | 0 | ||||||||||||
| 138 | } | - | ||||||||||||
| 139 | } never executed:  end of block | 0 | ||||||||||||
| 140 | - | |||||||||||||
| 141 | - | |||||||||||||
| 142 | QGesture *QGestureManager::getState(QObject *object, QGestureRecognizer *recognizer, Qt::GestureType type) | - | ||||||||||||
| 143 | { | - | ||||||||||||
| 144 | - | |||||||||||||
| 145 | - | |||||||||||||
| 146 | - | |||||||||||||
| 147 | if (object->isWidgetType() 
 | 0 | ||||||||||||
| 148 | if (static_cast< 
 
 | 0 | ||||||||||||
| 149 | return never executed: 0; return 0;never executed:  return 0; | 0 | ||||||||||||
| 150 | } never executed: else if (QGesture *g = qobject_cast<QGesture *>(object) end of block
 | 0 | ||||||||||||
| 151 | return never executed: g; return g;never executed:  return g; | 0 | ||||||||||||
| 152 | - | |||||||||||||
| 153 | } else { | - | ||||||||||||
| 154 | ((!(qobject_cast<QGraphicsObject *>(object))) ? qt_assert("qobject_cast<QGraphicsObject *>(object)",__FILE__,214) : qt_noop()); | - | ||||||||||||
| 155 | QGraphicsObject *graphicsObject = static_cast<QGraphicsObject *>(object); | - | ||||||||||||
| 156 | if (graphicsObject->QGraphicsItem::d_func()->inDestructor 
 | 0 | ||||||||||||
| 157 | return never executed: 0; return 0;never executed:  return 0; | 0 | ||||||||||||
| 158 | - | |||||||||||||
| 159 | } never executed:  end of block | 0 | ||||||||||||
| 160 | - | |||||||||||||
| 161 | - | |||||||||||||
| 162 | const auto states = m_objectGestures.value(QGestureManager::ObjectGesture(object, type)); | - | ||||||||||||
| 163 | for (QGesture *state : states) { | - | ||||||||||||
| 164 | if (m_gestureToRecognizer.value(state) == recognizer 
 | 0 | ||||||||||||
| 165 | return never executed: state; return state;never executed:  return state; | 0 | ||||||||||||
| 166 | } never executed:  end of block | 0 | ||||||||||||
| 167 | - | |||||||||||||
| 168 | ((!(recognizer)) ? qt_assert("recognizer",__FILE__,228) : qt_noop()); | - | ||||||||||||
| 169 | QGesture *state = recognizer->create(object); | - | ||||||||||||
| 170 | if (!state 
 | 0 | ||||||||||||
| 171 | return never executed: 0; return 0;never executed:  return 0; | 0 | ||||||||||||
| 172 | state->setParent(this); | - | ||||||||||||
| 173 | if (state->gestureType() == Qt::CustomGesture 
 | 0 | ||||||||||||
| 174 | - | |||||||||||||
| 175 | - | |||||||||||||
| 176 | state->d_func()->gestureType = type; | - | ||||||||||||
| 177 | if (lcGestureManager().isDebugEnabled() 
 | 0 | ||||||||||||
| 178 | state->setObjectName(QString::number((int)type)); never executed:  state->setObjectName(QString::number((int)type)); | 0 | ||||||||||||
| 179 | } never executed:  end of block | 0 | ||||||||||||
| 180 | m_objectGestures[QGestureManager::ObjectGesture(object, type)].append(state); | - | ||||||||||||
| 181 | m_gestureToRecognizer[state] = recognizer; | - | ||||||||||||
| 182 | m_gestureOwners[state] = object; | - | ||||||||||||
| 183 | - | |||||||||||||
| 184 | return never executed: state; return state;never executed:  return state; | 0 | ||||||||||||
| 185 | } | - | ||||||||||||
| 186 | - | |||||||||||||
| 187 | bool QGestureManager::filterEventThroughContexts(const QMultiMap<QObject *, | - | ||||||||||||
| 188 | Qt::GestureType> &contexts, | - | ||||||||||||
| 189 | QEvent *event) | - | ||||||||||||
| 190 | { | - | ||||||||||||
| 191 | QSet<QGesture *> triggeredGestures; | - | ||||||||||||
| 192 | QSet<QGesture *> finishedGestures; | - | ||||||||||||
| 193 | QSet<QGesture *> newMaybeGestures; | - | ||||||||||||
| 194 | QSet<QGesture *> notGestures; | - | ||||||||||||
| 195 | - | |||||||||||||
| 196 | - | |||||||||||||
| 197 | - | |||||||||||||
| 198 | - | |||||||||||||
| 199 | bool consumeEventHint = false; | - | ||||||||||||
| 200 | - | |||||||||||||
| 201 | - | |||||||||||||
| 202 | typedef QMultiMap<QObject *, Qt::GestureType>::const_iterator ContextIterator; | - | ||||||||||||
| 203 | ContextIterator contextEnd = contexts.end(); | - | ||||||||||||
| 204 | for (ContextIterator context = contexts.begin(); context != contextEnd 
 | 0 | ||||||||||||
| 205 | Qt::GestureType gestureType = context.value(); | - | ||||||||||||
| 206 | const QMap<Qt::GestureType, QGestureRecognizer *> &const_recognizers = m_recognizers; | - | ||||||||||||
| 207 | QMap<Qt::GestureType, QGestureRecognizer *>::const_iterator | - | ||||||||||||
| 208 | typeToRecognizerIterator = const_recognizers.lowerBound(gestureType), | - | ||||||||||||
| 209 | typeToRecognizerEnd = const_recognizers.upperBound(gestureType); | - | ||||||||||||
| 210 | for (; typeToRecognizerIterator != typeToRecognizerEnd 
 | 0 | ||||||||||||
| 211 | QGestureRecognizer *recognizer = typeToRecognizerIterator.value(); | - | ||||||||||||
| 212 | QObject *target = context.key(); | - | ||||||||||||
| 213 | QGesture *state = getState(target, recognizer, gestureType); | - | ||||||||||||
| 214 | if (!state 
 | 0 | ||||||||||||
| 215 | continue; never executed:  continue; | 0 | ||||||||||||
| 216 | QGestureRecognizer::Result recognizerResult = recognizer->recognize(state, target, event); | - | ||||||||||||
| 217 | QGestureRecognizer::Result recognizerState = recognizerResult & QGestureRecognizer::ResultState_Mask; | - | ||||||||||||
| 218 | QGestureRecognizer::Result resultHint = recognizerResult & QGestureRecognizer::ResultHint_Mask; | - | ||||||||||||
| 219 | if (recognizerState == QGestureRecognizer::TriggerGesture 
 | 0 | ||||||||||||
| 220 | for (bool qt_category_enabled = lcGestureManager().isDebugEnabled(); qt_category_enabled 
 never executed:  QMessageLogger(__FILE__, 280, __PRETTY_FUNCTION__, lcGestureManager().categoryName()).debug() << "QGestureManager:Recognizer: gesture triggered: " << state << event; | 0 | ||||||||||||
| 221 | triggeredGestures << state; | - | ||||||||||||
| 222 | } never executed: else if (recognizerState == QGestureRecognizer::FinishGesture end of block
 | 0 | ||||||||||||
| 223 | for (bool qt_category_enabled = lcGestureManager().isDebugEnabled(); qt_category_enabled 
 never executed:  QMessageLogger(__FILE__, 283, __PRETTY_FUNCTION__, lcGestureManager().categoryName()).debug() << "QGestureManager:Recognizer: gesture finished: " << state << event; | 0 | ||||||||||||
| 224 | finishedGestures << state; | - | ||||||||||||
| 225 | } never executed: else if (recognizerState == QGestureRecognizer::MayBeGesture end of block
 | 0 | ||||||||||||
| 226 | for (bool qt_category_enabled = lcGestureManager().isDebugEnabled(); qt_category_enabled 
 never executed:  QMessageLogger(__FILE__, 286, __PRETTY_FUNCTION__, lcGestureManager().categoryName()).debug() << "QGestureManager:Recognizer: maybe gesture: " << state << event; | 0 | ||||||||||||
| 227 | newMaybeGestures << state; | - | ||||||||||||
| 228 | } never executed: else if (recognizerState == QGestureRecognizer::CancelGesture end of block
 | 0 | ||||||||||||
| 229 | for (bool qt_category_enabled = lcGestureManager().isDebugEnabled(); qt_category_enabled 
 never executed:  QMessageLogger(__FILE__, 289, __PRETTY_FUNCTION__, lcGestureManager().categoryName()).debug() << "QGestureManager:Recognizer: not gesture: " << state << event; | 0 | ||||||||||||
| 230 | notGestures << state; | - | ||||||||||||
| 231 | } never executed: else if (recognizerState == QGestureRecognizer::Ignore end of block
 | 0 | ||||||||||||
| 232 | for (bool qt_category_enabled = lcGestureManager().isDebugEnabled(); qt_category_enabled 
 never executed:  QMessageLogger(__FILE__, 292, __PRETTY_FUNCTION__, lcGestureManager().categoryName()).debug() << "QGestureManager:Recognizer: ignored the event: " << state << event; | 0 | ||||||||||||
| 233 | } never executed: else { end of block | 0 | ||||||||||||
| 234 | for (bool qt_category_enabled = lcGestureManager().isDebugEnabled(); qt_category_enabled 
 never executed:  QMessageLogger(__FILE__, 294, __PRETTY_FUNCTION__, lcGestureManager().categoryName()).debug() << "QGestureManager:Recognizer: hm, lets assume the recognizer" << "ignored the event: " << state << event; | 0 | ||||||||||||
| 235 | << "ignored the event: " << state << event; never executed:  QMessageLogger(__FILE__, 294, __PRETTY_FUNCTION__, lcGestureManager().categoryName()).debug() << "QGestureManager:Recognizer: hm, lets assume the recognizer" << "ignored the event: " << state << event; | 0 | ||||||||||||
| 236 | } never executed:  end of block | 0 | ||||||||||||
| 237 | if (resultHint & QGestureRecognizer::ConsumeEventHint 
 | 0 | ||||||||||||
| 238 | for (bool qt_category_enabled = lcGestureManager().isDebugEnabled(); qt_category_enabled 
 never executed:  QMessageLogger(__FILE__, 298, __PRETTY_FUNCTION__, lcGestureManager().categoryName()).debug() << "QGestureManager: we were asked to consume the event: " << state << event; | 0 | ||||||||||||
| 239 | << state << event; never executed:  QMessageLogger(__FILE__, 298, __PRETTY_FUNCTION__, lcGestureManager().categoryName()).debug() << "QGestureManager: we were asked to consume the event: " << state << event; | 0 | ||||||||||||
| 240 | consumeEventHint = true; | - | ||||||||||||
| 241 | } never executed:  end of block | 0 | ||||||||||||
| 242 | } never executed:  end of block | 0 | ||||||||||||
| 243 | } never executed:  end of block | 0 | ||||||||||||
| 244 | if (!triggeredGestures.isEmpty() 
 
 | 0 | ||||||||||||
| 245 | || !newMaybeGestures.isEmpty() 
 
 | 0 | ||||||||||||
| 246 | QSet<QGesture *> startedGestures = triggeredGestures - m_activeGestures; | - | ||||||||||||
| 247 | triggeredGestures &= m_activeGestures; | - | ||||||||||||
| 248 | - | |||||||||||||
| 249 | - | |||||||||||||
| 250 | QSet<QGesture *> activeToMaybeGestures = m_activeGestures & newMaybeGestures; | - | ||||||||||||
| 251 | - | |||||||||||||
| 252 | - | |||||||||||||
| 253 | QSet<QGesture *> maybeToCanceledGestures = m_maybeGestures & notGestures; | - | ||||||||||||
| 254 | - | |||||||||||||
| 255 | - | |||||||||||||
| 256 | - | |||||||||||||
| 257 | QSet<QGesture *> canceledGestures = m_activeGestures & notGestures; | - | ||||||||||||
| 258 | - | |||||||||||||
| 259 | - | |||||||||||||
| 260 | m_maybeGestures += newMaybeGestures; | - | ||||||||||||
| 261 | - | |||||||||||||
| 262 | - | |||||||||||||
| 263 | QSet<QGesture *> notMaybeGestures = (startedGestures | triggeredGestures | - | ||||||||||||
| 264 | | finishedGestures | canceledGestures | - | ||||||||||||
| 265 | | notGestures); | - | ||||||||||||
| 266 | m_maybeGestures -= notMaybeGestures; | - | ||||||||||||
| 267 | - | |||||||||||||
| 268 | ((!((startedGestures & finishedGestures).isEmpty())) ? qt_assert("(startedGestures & finishedGestures).isEmpty()",__FILE__,328) : qt_noop()); | - | ||||||||||||
| 269 | ((!((startedGestures & newMaybeGestures).isEmpty())) ? qt_assert("(startedGestures & newMaybeGestures).isEmpty()",__FILE__,329) : qt_noop()); | - | ||||||||||||
| 270 | ((!((startedGestures & canceledGestures).isEmpty())) ? qt_assert("(startedGestures & canceledGestures).isEmpty()",__FILE__,330) : qt_noop()); | - | ||||||||||||
| 271 | ((!((finishedGestures & newMaybeGestures).isEmpty())) ? qt_assert("(finishedGestures & newMaybeGestures).isEmpty()",__FILE__,331) : qt_noop()); | - | ||||||||||||
| 272 | ((!((finishedGestures & canceledGestures).isEmpty())) ? qt_assert("(finishedGestures & canceledGestures).isEmpty()",__FILE__,332) : qt_noop()); | - | ||||||||||||
| 273 | ((!((canceledGestures & newMaybeGestures).isEmpty())) ? qt_assert("(canceledGestures & newMaybeGestures).isEmpty()",__FILE__,333) : qt_noop()); | - | ||||||||||||
| 274 | - | |||||||||||||
| 275 | QSet<QGesture *> notStarted = finishedGestures - m_activeGestures; | - | ||||||||||||
| 276 | if (!notStarted.isEmpty() 
 | 0 | ||||||||||||
| 277 | - | |||||||||||||
| 278 | - | |||||||||||||
| 279 | for (QForeachContainer<typename QtPrivate::remove_reference<decltype(notStarted)>::type> _container_((notStarted)); _container_.control && _container_.i != _container_.e; ++_container_.i, _container_.control ^= 1) for (QGesture *gesture = *_container_.i; _container_.control; _container_.control = 0) | - | ||||||||||||
| 280 | gesture->d_func()->state = Qt::GestureStarted; never executed:  gesture->d_func()->state = Qt::GestureStarted; | 0 | ||||||||||||
| 281 | QSet<QGesture *> undeliveredGestures; | - | ||||||||||||
| 282 | deliverEvents(notStarted, &undeliveredGestures); | - | ||||||||||||
| 283 | finishedGestures -= undeliveredGestures; | - | ||||||||||||
| 284 | } never executed:  end of block | 0 | ||||||||||||
| 285 | - | |||||||||||||
| 286 | m_activeGestures += startedGestures; | - | ||||||||||||
| 287 | - | |||||||||||||
| 288 | ((!((m_activeGestures & triggeredGestures).size() == triggeredGestures.size())) ? qt_assert("(m_activeGestures & triggeredGestures).size() == triggeredGestures.size()",__FILE__,348) : qt_noop()); | - | ||||||||||||
| 289 | m_activeGestures -= finishedGestures; | - | ||||||||||||
| 290 | m_activeGestures -= activeToMaybeGestures; | - | ||||||||||||
| 291 | m_activeGestures -= canceledGestures; | - | ||||||||||||
| 292 | - | |||||||||||||
| 293 | - | |||||||||||||
| 294 | for (QForeachContainer<typename QtPrivate::remove_reference<decltype(startedGestures)>::type> _container_((startedGestures)); _container_.control && _container_.i != _container_.e; ++_container_.i, _container_.control ^= 1) for (QGesture *gesture = *_container_.i; _container_.control; _container_.control = 0) | - | ||||||||||||
| 295 | gesture->d_func()->state = Qt::GestureStarted; never executed:  gesture->d_func()->state = Qt::GestureStarted; | 0 | ||||||||||||
| 296 | for (QForeachContainer<typename QtPrivate::remove_reference<decltype(triggeredGestures)>::type> _container_((triggeredGestures)); _container_.control && _container_.i != _container_.e; ++_container_.i, _container_.control ^= 1) for (QGesture *gesture = *_container_.i; _container_.control; _container_.control = 0) | - | ||||||||||||
| 297 | gesture->d_func()->state = Qt::GestureUpdated; never executed:  gesture->d_func()->state = Qt::GestureUpdated; | 0 | ||||||||||||
| 298 | for (QForeachContainer<typename QtPrivate::remove_reference<decltype(finishedGestures)>::type> _container_((finishedGestures)); _container_.control && _container_.i != _container_.e; ++_container_.i, _container_.control ^= 1) for (QGesture *gesture = *_container_.i; _container_.control; _container_.control = 0) | - | ||||||||||||
| 299 | gesture->d_func()->state = Qt::GestureFinished; never executed:  gesture->d_func()->state = Qt::GestureFinished; | 0 | ||||||||||||
| 300 | for (QForeachContainer<typename QtPrivate::remove_reference<decltype(canceledGestures)>::type> _container_((canceledGestures)); _container_.control && _container_.i != _container_.e; ++_container_.i, _container_.control ^= 1) for (QGesture *gesture = *_container_.i; _container_.control; _container_.control = 0) | - | ||||||||||||
| 301 | gesture->d_func()->state = Qt::GestureCanceled; never executed:  gesture->d_func()->state = Qt::GestureCanceled; | 0 | ||||||||||||
| 302 | for (QForeachContainer<typename QtPrivate::remove_reference<decltype(activeToMaybeGestures)>::type> _container_((activeToMaybeGestures)); _container_.control && _container_.i != _container_.e; ++_container_.i, _container_.control ^= 1) for (QGesture *gesture = *_container_.i; _container_.control; _container_.control = 0) | - | ||||||||||||
| 303 | gesture->d_func()->state = Qt::GestureFinished; never executed:  gesture->d_func()->state = Qt::GestureFinished; | 0 | ||||||||||||
| 304 | - | |||||||||||||
| 305 | if (!m_activeGestures.isEmpty() 
 
 | 0 | ||||||||||||
| 306 | !startedGestures.isEmpty() 
 
 | 0 | ||||||||||||
| 307 | !finishedGestures.isEmpty() 
 
 | 0 | ||||||||||||
| 308 | for (bool qt_category_enabled = lcGestureManager().isDebugEnabled(); qt_category_enabled 
 never executed:  QMessageLogger(__FILE__, 368, __PRETTY_FUNCTION__, lcGestureManager().categoryName()).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 | ||||||||||||
| 309 | << "\n\tactiveGestures:" << m_activeGestures never executed:  QMessageLogger(__FILE__, 368, __PRETTY_FUNCTION__, lcGestureManager().categoryName()).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 | ||||||||||||
| 310 | << "\n\tmaybeGestures:" << m_maybeGestures never executed:  QMessageLogger(__FILE__, 368, __PRETTY_FUNCTION__, lcGestureManager().categoryName()).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 | ||||||||||||
| 311 | << "\n\tstarted:" << startedGestures never executed:  QMessageLogger(__FILE__, 368, __PRETTY_FUNCTION__, lcGestureManager().categoryName()).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 | ||||||||||||
| 312 | << "\n\ttriggered:" << triggeredGestures never executed:  QMessageLogger(__FILE__, 368, __PRETTY_FUNCTION__, lcGestureManager().categoryName()).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 | ||||||||||||
| 313 | << "\n\tfinished:" << finishedGestures never executed:  QMessageLogger(__FILE__, 368, __PRETTY_FUNCTION__, lcGestureManager().categoryName()).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 | ||||||||||||
| 314 | << "\n\tcanceled:" << canceledGestures never executed:  QMessageLogger(__FILE__, 368, __PRETTY_FUNCTION__, lcGestureManager().categoryName()).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 | ||||||||||||
| 315 | << "\n\tmaybe-canceled:" << maybeToCanceledGestures; never executed:  QMessageLogger(__FILE__, 368, __PRETTY_FUNCTION__, lcGestureManager().categoryName()).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 | ||||||||||||
| 316 | } never executed:  end of block | 0 | ||||||||||||
| 317 | - | |||||||||||||
| 318 | QSet<QGesture *> undeliveredGestures; | - | ||||||||||||
| 319 | deliverEvents(startedGestures+triggeredGestures+finishedGestures+canceledGestures, | - | ||||||||||||
| 320 | &undeliveredGestures); | - | ||||||||||||
| 321 | - | |||||||||||||
| 322 | for (QForeachContainer<typename QtPrivate::remove_reference<decltype(startedGestures)>::type> _container_((startedGestures)); _container_.control && _container_.i != _container_.e; ++_container_.i, _container_.control ^= 1) for (QGesture *g = *_container_.i; _container_.control; _container_.control = 0) { | - | ||||||||||||
| 323 | if (undeliveredGestures.contains(g) 
 | 0 | ||||||||||||
| 324 | continue; never executed:  continue; | 0 | ||||||||||||
| 325 | if (g->gestureCancelPolicy() == QGesture::CancelAllInContext 
 | 0 | ||||||||||||
| 326 | for (bool qt_category_enabled = lcGestureManager().isDebugEnabled(); qt_category_enabled 
 never executed:  QMessageLogger(__FILE__, 386, __PRETTY_FUNCTION__, lcGestureManager().categoryName()).debug() << "lets try to cancel some"; | 0 | ||||||||||||
| 327 | - | |||||||||||||
| 328 | cancelGesturesForChildren(g); | - | ||||||||||||
| 329 | } never executed:  end of block | 0 | ||||||||||||
| 330 | } never executed:  end of block | 0 | ||||||||||||
| 331 | - | |||||||||||||
| 332 | m_activeGestures -= undeliveredGestures; | - | ||||||||||||
| 333 | - | |||||||||||||
| 334 | - | |||||||||||||
| 335 | QSet<QGesture *> endedGestures = | - | ||||||||||||
| 336 | finishedGestures + canceledGestures + undeliveredGestures + maybeToCanceledGestures; | - | ||||||||||||
| 337 | for (QForeachContainer<typename QtPrivate::remove_reference<decltype(endedGestures)>::type> _container_((endedGestures)); _container_.control && _container_.i != _container_.e; ++_container_.i, _container_.control ^= 1) for (QGesture *gesture = *_container_.i; _container_.control; _container_.control = 0) { | - | ||||||||||||
| 338 | recycle(gesture); | - | ||||||||||||
| 339 | m_gestureTargets.remove(gesture); | - | ||||||||||||
| 340 | } never executed:  end of block | 0 | ||||||||||||
| 341 | } never executed:  end of block | 0 | ||||||||||||
| 342 | - | |||||||||||||
| 343 | qDeleteAll(m_gesturesToDelete); | - | ||||||||||||
| 344 | m_gesturesToDelete.clear(); | - | ||||||||||||
| 345 | - | |||||||||||||
| 346 | return never executed: consumeEventHint; return consumeEventHint;never executed:  return consumeEventHint; | 0 | ||||||||||||
| 347 | } | - | ||||||||||||
| 348 | - | |||||||||||||
| 349 | - | |||||||||||||
| 350 | void QGestureManager::cancelGesturesForChildren(QGesture *original) | - | ||||||||||||
| 351 | { | - | ||||||||||||
| 352 | ((!(original)) ? qt_assert("original",__FILE__,412) : qt_noop()); | - | ||||||||||||
| 353 | QWidget *originatingWidget = m_gestureTargets.value(original); | - | ||||||||||||
| 354 | ((!(originatingWidget)) ? qt_assert("originatingWidget",__FILE__,414) : qt_noop()); | - | ||||||||||||
| 355 | if (!originatingWidget 
 | 0 | ||||||||||||
| 356 | return; never executed:  return; | 0 | ||||||||||||
| 357 | - | |||||||||||||
| 358 | - | |||||||||||||
| 359 | - | |||||||||||||
| 360 | - | |||||||||||||
| 361 | - | |||||||||||||
| 362 | QSet<QGesture*> cancelledGestures; | - | ||||||||||||
| 363 | QSet<QGesture*>::Iterator iter = m_activeGestures.begin(); | - | ||||||||||||
| 364 | while (iter != m_activeGestures.end() 
 | 0 | ||||||||||||
| 365 | QWidget *widget = m_gestureTargets.value(*iter); | - | ||||||||||||
| 366 | - | |||||||||||||
| 367 | if (widget != originatingWidget 
 
 | 0 | ||||||||||||
| 368 | for (bool qt_category_enabled = lcGestureManager().isDebugEnabled(); qt_category_enabled 
 never executed:  QMessageLogger(__FILE__, 428, __PRETTY_FUNCTION__, lcGestureManager().categoryName()).debug() << " found a gesture to cancel" << (*iter); | 0 | ||||||||||||
| 369 | (*iter)->d_func()->state = Qt::GestureCanceled; | - | ||||||||||||
| 370 | cancelledGestures << *iter; | - | ||||||||||||
| 371 | iter = m_activeGestures.erase(iter); | - | ||||||||||||
| 372 | } never executed: else { end of block | 0 | ||||||||||||
| 373 | ++iter; | - | ||||||||||||
| 374 | } never executed:  end of block | 0 | ||||||||||||
| 375 | } | - | ||||||||||||
| 376 | - | |||||||||||||
| 377 | - | |||||||||||||
| 378 | - | |||||||||||||
| 379 | - | |||||||||||||
| 380 | QSet<QGesture *> almostCanceledGestures = cancelledGestures; | - | ||||||||||||
| 381 | while (!almostCanceledGestures.isEmpty() 
 | 0 | ||||||||||||
| 382 | QWidget *target = 0; | - | ||||||||||||
| 383 | QSet<QGesture*> gestures; | - | ||||||||||||
| 384 | iter = almostCanceledGestures.begin(); | - | ||||||||||||
| 385 | - | |||||||||||||
| 386 | while (iter != almostCanceledGestures.end() 
 | 0 | ||||||||||||
| 387 | QWidget *widget = m_gestureTargets.value(*iter); | - | ||||||||||||
| 388 | if (target == 0 
 | 0 | ||||||||||||
| 389 | target = widget; never executed:  target = widget; | 0 | ||||||||||||
| 390 | if (target == widget 
 | 0 | ||||||||||||
| 391 | gestures << *iter; | - | ||||||||||||
| 392 | iter = almostCanceledGestures.erase(iter); | - | ||||||||||||
| 393 | } never executed: else { end of block | 0 | ||||||||||||
| 394 | ++iter; | - | ||||||||||||
| 395 | } never executed:  end of block | 0 | ||||||||||||
| 396 | } | - | ||||||||||||
| 397 | ((!(target)) ? qt_assert("target",__FILE__,457) : qt_noop()); | - | ||||||||||||
| 398 | - | |||||||||||||
| 399 | QSet<QGesture*> undeliveredGestures; | - | ||||||||||||
| 400 | deliverEvents(gestures, &undeliveredGestures); | - | ||||||||||||
| 401 | } never executed:  end of block | 0 | ||||||||||||
| 402 | - | |||||||||||||
| 403 | for (iter = cancelledGestures.begin(); iter != cancelledGestures.end() 
 | 0 | ||||||||||||
| 404 | recycle(*iter); never executed:  recycle(*iter); | 0 | ||||||||||||
| 405 | } never executed:  end of block | 0 | ||||||||||||
| 406 | - | |||||||||||||
| 407 | void QGestureManager::cleanupGesturesForRemovedRecognizer(QGesture *gesture) | - | ||||||||||||
| 408 | { | - | ||||||||||||
| 409 | QGestureRecognizer *recognizer = m_deletedRecognizers.value(gesture); | - | ||||||||||||
| 410 | if(!recognizer 
 | 0 | ||||||||||||
| 411 | return; never executed:  return; | 0 | ||||||||||||
| 412 | m_deletedRecognizers.remove(gesture); | - | ||||||||||||
| 413 | if (m_deletedRecognizers.keys(recognizer).isEmpty() 
 | 0 | ||||||||||||
| 414 | - | |||||||||||||
| 415 | qDeleteAll(m_obsoleteGestures.value(recognizer)); | - | ||||||||||||
| 416 | m_obsoleteGestures.remove(recognizer); | - | ||||||||||||
| 417 | delete recognizer; | - | ||||||||||||
| 418 | } never executed:  end of block | 0 | ||||||||||||
| 419 | } never executed:  end of block | 0 | ||||||||||||
| 420 | - | |||||||||||||
| 421 | - | |||||||||||||
| 422 | bool QGestureManager::filterEvent(QWidget *receiver, QEvent *event) | - | ||||||||||||
| 423 | { | - | ||||||||||||
| 424 | QMap<Qt::GestureType, int> types; | - | ||||||||||||
| 425 | QMultiMap<QObject *, Qt::GestureType> contexts; | - | ||||||||||||
| 426 | QWidget *w = receiver; | - | ||||||||||||
| 427 | typedef QMap<Qt::GestureType, Qt::GestureFlags>::const_iterator ContextIterator; | - | ||||||||||||
| 428 | if (!w->d_func()->gestureContext.isEmpty() 
 | 0 | ||||||||||||
| 429 | for(ContextIterator it = w->d_func()->gestureContext.constBegin(), | - | ||||||||||||
| 430 | e = w->d_func()->gestureContext.constEnd(); it != e 
 | 0 | ||||||||||||
| 431 | types.insert(it.key(), 0); | - | ||||||||||||
| 432 | contexts.insertMulti(w, it.key()); | - | ||||||||||||
| 433 | } never executed:  end of block | 0 | ||||||||||||
| 434 | } never executed:  end of block | 0 | ||||||||||||
| 435 | - | |||||||||||||
| 436 | w = w->isWindow() 
 | 0 | ||||||||||||
| 437 | while (w 
 | 0 | ||||||||||||
| 438 | { | - | ||||||||||||
| 439 | for (ContextIterator it = w->d_func()->gestureContext.constBegin(), | - | ||||||||||||
| 440 | e = w->d_func()->gestureContext.constEnd(); it != e 
 | 0 | ||||||||||||
| 441 | if (!(it.value() & Qt::DontStartGestureOnChildren) 
 | 0 | ||||||||||||
| 442 | if (!types.contains(it.key()) 
 | 0 | ||||||||||||
| 443 | types.insert(it.key(), 0); | - | ||||||||||||
| 444 | contexts.insertMulti(w, it.key()); | - | ||||||||||||
| 445 | } never executed:  end of block | 0 | ||||||||||||
| 446 | } never executed:  end of block | 0 | ||||||||||||
| 447 | } never executed:  end of block | 0 | ||||||||||||
| 448 | if (w->isWindow() 
 | 0 | ||||||||||||
| 449 | break; never executed:  break; | 0 | ||||||||||||
| 450 | w = w->parentWidget(); | - | ||||||||||||
| 451 | } never executed:  end of block | 0 | ||||||||||||
| 452 | return never executed: contexts.isEmpty() ? false : filterEventThroughContexts(contexts, event); return contexts.isEmpty() ? false : filterEventThroughContexts(contexts, event);never executed:  return contexts.isEmpty() ? false : filterEventThroughContexts(contexts, event); | 0 | ||||||||||||
| 453 | } | - | ||||||||||||
| 454 | - | |||||||||||||
| 455 | - | |||||||||||||
| 456 | bool QGestureManager::filterEvent(QGraphicsObject *receiver, QEvent *event) | - | ||||||||||||
| 457 | { | - | ||||||||||||
| 458 | QMap<Qt::GestureType, int> types; | - | ||||||||||||
| 459 | QMultiMap<QObject *, Qt::GestureType> contexts; | - | ||||||||||||
| 460 | QGraphicsObject *item = receiver; | - | ||||||||||||
| 461 | if (!item->QGraphicsItem::d_func()->gestureContext.isEmpty() 
 | 0 | ||||||||||||
| 462 | typedef QMap<Qt::GestureType, Qt::GestureFlags>::const_iterator ContextIterator; | - | ||||||||||||
| 463 | for(ContextIterator it = item->QGraphicsItem::d_func()->gestureContext.constBegin(), | - | ||||||||||||
| 464 | e = item->QGraphicsItem::d_func()->gestureContext.constEnd(); it != e 
 | 0 | ||||||||||||
| 465 | types.insert(it.key(), 0); | - | ||||||||||||
| 466 | contexts.insertMulti(item, it.key()); | - | ||||||||||||
| 467 | } never executed:  end of block | 0 | ||||||||||||
| 468 | } never executed:  end of block | 0 | ||||||||||||
| 469 | - | |||||||||||||
| 470 | item = item->parentObject(); | - | ||||||||||||
| 471 | while (item 
 | 0 | ||||||||||||
| 472 | { | - | ||||||||||||
| 473 | typedef QMap<Qt::GestureType, Qt::GestureFlags>::const_iterator ContextIterator; | - | ||||||||||||
| 474 | for (ContextIterator it = item->QGraphicsItem::d_func()->gestureContext.constBegin(), | - | ||||||||||||
| 475 | e = item->QGraphicsItem::d_func()->gestureContext.constEnd(); it != e 
 | 0 | ||||||||||||
| 476 | if (!(it.value() & Qt::DontStartGestureOnChildren) 
 | 0 | ||||||||||||
| 477 | if (!types.contains(it.key()) 
 | 0 | ||||||||||||
| 478 | types.insert(it.key(), 0); | - | ||||||||||||
| 479 | contexts.insertMulti(item, it.key()); | - | ||||||||||||
| 480 | } never executed:  end of block | 0 | ||||||||||||
| 481 | } never executed:  end of block | 0 | ||||||||||||
| 482 | } never executed:  end of block | 0 | ||||||||||||
| 483 | item = item->parentObject(); | - | ||||||||||||
| 484 | } never executed:  end of block | 0 | ||||||||||||
| 485 | return never executed: contexts.isEmpty() ? false : filterEventThroughContexts(contexts, event); return contexts.isEmpty() ? false : filterEventThroughContexts(contexts, event);never executed:  return contexts.isEmpty() ? false : filterEventThroughContexts(contexts, event); | 0 | ||||||||||||
| 486 | } | - | ||||||||||||
| 487 | - | |||||||||||||
| 488 | - | |||||||||||||
| 489 | bool QGestureManager::filterEvent(QObject *receiver, QEvent *event) | - | ||||||||||||
| 490 | { | - | ||||||||||||
| 491 | - | |||||||||||||
| 492 | - | |||||||||||||
| 493 | QWidgetWindow *widgetWindow = qobject_cast<QWidgetWindow *>(receiver); | - | ||||||||||||
| 494 | - | |||||||||||||
| 495 | if (widgetWindow 
 
 | 0 | ||||||||||||
| 496 | return never executed: filterEvent(widgetWindow->widget(), event); return filterEvent(widgetWindow->widget(), event);never executed:  return filterEvent(widgetWindow->widget(), event); | 0 | ||||||||||||
| 497 | - | |||||||||||||
| 498 | QGesture *state = qobject_cast<QGesture *>(receiver); | - | ||||||||||||
| 499 | if (!state 
 
 | 0 | ||||||||||||
| 500 | return never executed: false; return false;never executed:  return false; | 0 | ||||||||||||
| 501 | QMultiMap<QObject *, Qt::GestureType> contexts; | - | ||||||||||||
| 502 | contexts.insert(state, state->gestureType()); | - | ||||||||||||
| 503 | return never executed: filterEventThroughContexts(contexts, event); return filterEventThroughContexts(contexts, event);never executed:  return filterEventThroughContexts(contexts, event); | 0 | ||||||||||||
| 504 | } | - | ||||||||||||
| 505 | - | |||||||||||||
| 506 | void QGestureManager::getGestureTargets(const QSet<QGesture*> &gestures, | - | ||||||||||||
| 507 | QHash<QWidget *, QList<QGesture *> > *conflicts, | - | ||||||||||||
| 508 | QHash<QWidget *, QList<QGesture *> > *normal) | - | ||||||||||||
| 509 | { | - | ||||||||||||
| 510 | typedef QHash<Qt::GestureType, QHash<QWidget *, QGesture *> > GestureByTypes; | - | ||||||||||||
| 511 | GestureByTypes gestureByTypes; | - | ||||||||||||
| 512 | - | |||||||||||||
| 513 | - | |||||||||||||
| 514 | for (QForeachContainer<typename QtPrivate::remove_reference<decltype(gestures)>::type> _container_((gestures)); _container_.control && _container_.i != _container_.e; ++_container_.i, _container_.control ^= 1) for (QGesture *gesture = *_container_.i; _container_.control; _container_.control = 0) { | - | ||||||||||||
| 515 | QWidget *receiver = m_gestureTargets.value(gesture, 0); | - | ||||||||||||
| 516 | ((!(receiver)) ? qt_assert("receiver",__FILE__,576) : qt_noop()); | - | ||||||||||||
| 517 | if (receiver 
 | 0 | ||||||||||||
| 518 | gestureByTypes[gesture->gestureType()].insert(receiver, gesture); never executed:  gestureByTypes[gesture->gestureType()].insert(receiver, gesture); | 0 | ||||||||||||
| 519 | } never executed:  end of block | 0 | ||||||||||||
| 520 | - | |||||||||||||
| 521 | - | |||||||||||||
| 522 | for (GestureByTypes::const_iterator git = gestureByTypes.cbegin(), gend = gestureByTypes.cend(); git != gend 
 | 0 | ||||||||||||
| 523 | const QHash<QWidget *, QGesture *> &gestures = git.value(); | - | ||||||||||||
| 524 | for (QHash<QWidget *, QGesture *>::const_iterator wit = gestures.cbegin(), wend = gestures.cend(); wit != wend 
 | 0 | ||||||||||||
| 525 | QWidget *widget = wit.key(); | - | ||||||||||||
| 526 | QWidget *w = widget->parentWidget(); | - | ||||||||||||
| 527 | while (w 
 | 0 | ||||||||||||
| 528 | QMap<Qt::GestureType, Qt::GestureFlags>::const_iterator it | - | ||||||||||||
| 529 | = w->d_func()->gestureContext.constFind(git.key()); | - | ||||||||||||
| 530 | if (it != w->d_func()->gestureContext.constEnd() 
 | 0 | ||||||||||||
| 531 | - | |||||||||||||
| 532 | if (!(it.value() & Qt::DontStartGestureOnChildren) 
 
 | 0 | ||||||||||||
| 533 | - | |||||||||||||
| 534 | (*conflicts)[widget].append(wit.value()); | - | ||||||||||||
| 535 | break; never executed:  break; | 0 | ||||||||||||
| 536 | } | - | ||||||||||||
| 537 | } never executed:  end of block | 0 | ||||||||||||
| 538 | if (w->isWindow() 
 | 0 | ||||||||||||
| 539 | w = 0; | - | ||||||||||||
| 540 | break; never executed:  break; | 0 | ||||||||||||
| 541 | } | - | ||||||||||||
| 542 | w = w->parentWidget(); | - | ||||||||||||
| 543 | } never executed:  end of block | 0 | ||||||||||||
| 544 | if (!w 
 | 0 | ||||||||||||
| 545 | (* never executed: normal)[widget].append(wit.value()); (*normal)[widget].append(wit.value());never executed:  (*normal)[widget].append(wit.value()); | 0 | ||||||||||||
| 546 | } never executed:  end of block | 0 | ||||||||||||
| 547 | } never executed:  end of block | 0 | ||||||||||||
| 548 | } never executed:  end of block | 0 | ||||||||||||
| 549 | - | |||||||||||||
| 550 | void QGestureManager::deliverEvents(const QSet<QGesture *> &gestures, | - | ||||||||||||
| 551 | QSet<QGesture *> *undeliveredGestures) | - | ||||||||||||
| 552 | { | - | ||||||||||||
| 553 | if (gestures.isEmpty() 
 | 0 | ||||||||||||
| 554 | return; never executed:  return; | 0 | ||||||||||||
| 555 | - | |||||||||||||
| 556 | typedef QHash<QWidget *, QList<QGesture *> > GesturesPerWidget; | - | ||||||||||||
| 557 | GesturesPerWidget conflictedGestures; | - | ||||||||||||
| 558 | GesturesPerWidget normalStartedGestures; | - | ||||||||||||
| 559 | - | |||||||||||||
| 560 | QSet<QGesture *> startedGestures; | - | ||||||||||||
| 561 | - | |||||||||||||
| 562 | for (QSet<QGesture *>::const_iterator it = gestures.begin(), | - | ||||||||||||
| 563 | e = gestures.end(); it != e 
 | 0 | ||||||||||||
| 564 | QGesture *gesture = *it; | - | ||||||||||||
| 565 | QWidget *target = m_gestureTargets.value(gesture, 0); | - | ||||||||||||
| 566 | if (!target 
 | 0 | ||||||||||||
| 567 | - | |||||||||||||
| 568 | ((!(gesture->state() == Qt::GestureStarted)) ? qt_assert("gesture->state() == Qt::GestureStarted",__FILE__,628) : qt_noop()); | - | ||||||||||||
| 569 | if (gesture->hasHotSpot() 
 | 0 | ||||||||||||
| 570 | - | |||||||||||||
| 571 | QPoint pt = gesture->hotSpot().toPoint(); | - | ||||||||||||
| 572 | if (QWidget *topLevel = QApplication::topLevelAt(pt) 
 | 0 | ||||||||||||
| 573 | QWidget *child = topLevel->childAt(topLevel->mapFromGlobal(pt)); | - | ||||||||||||
| 574 | target = child 
 | 0 | ||||||||||||
| 575 | } never executed:  end of block | 0 | ||||||||||||
| 576 | } never executed: else { end of block | 0 | ||||||||||||
| 577 | - | |||||||||||||
| 578 | QObject *context = m_gestureOwners.value(gesture, 0); | - | ||||||||||||
| 579 | if (context->isWidgetType() 
 | 0 | ||||||||||||
| 580 | target = static_cast<QWidget *>(context); never executed:  target = static_cast<QWidget *>(context); | 0 | ||||||||||||
| 581 | } never executed:  end of block | 0 | ||||||||||||
| 582 | if (target 
 | 0 | ||||||||||||
| 583 | m_gestureTargets.insert(gesture, target); never executed:  m_gestureTargets.insert(gesture, target); | 0 | ||||||||||||
| 584 | } never executed:  end of block | 0 | ||||||||||||
| 585 | - | |||||||||||||
| 586 | Qt::GestureType gestureType = gesture->gestureType(); | - | ||||||||||||
| 587 | ((!(gestureType != Qt::CustomGesture)) ? qt_assert("gestureType != Qt::CustomGesture",__FILE__,647) : qt_noop()); | - | ||||||||||||
| 588 | (void)gestureType;; | - | ||||||||||||
| 589 | - | |||||||||||||
| 590 | if (__builtin_expect(!!(!target), false) 
 | 0 | ||||||||||||
| 591 | for (bool qt_category_enabled = lcGestureManager().isDebugEnabled(); qt_category_enabled 
 never executed:  QMessageLogger(__FILE__, 651, __PRETTY_FUNCTION__, lcGestureManager().categoryName()).debug() << "QGestureManager::deliverEvent: could not find the target for gesture" << gesture->gestureType(); | 0 | ||||||||||||
| 592 | << gesture->gestureType(); never executed:  QMessageLogger(__FILE__, 651, __PRETTY_FUNCTION__, lcGestureManager().categoryName()).debug() << "QGestureManager::deliverEvent: could not find the target for gesture" << gesture->gestureType(); | 0 | ||||||||||||
| 593 | QMessageLogger(__FILE__, 653, __PRETTY_FUNCTION__).warning("QGestureManager::deliverEvent: could not find the target for gesture"); | - | ||||||||||||
| 594 | undeliveredGestures->insert(gesture); | - | ||||||||||||
| 595 | } never executed: else { end of block | 0 | ||||||||||||
| 596 | if (gesture->state() == Qt::GestureStarted 
 | 0 | ||||||||||||
| 597 | startedGestures.insert(gesture); | - | ||||||||||||
| 598 | } never executed: else { end of block | 0 | ||||||||||||
| 599 | normalStartedGestures[target].append(gesture); | - | ||||||||||||
| 600 | } never executed:  end of block | 0 | ||||||||||||
| 601 | } | - | ||||||||||||
| 602 | } | - | ||||||||||||
| 603 | - | |||||||||||||
| 604 | getGestureTargets(startedGestures, &conflictedGestures, &normalStartedGestures); | - | ||||||||||||
| 605 | for (bool qt_category_enabled = lcGestureManager().isDebugEnabled(); qt_category_enabled 
 never executed:  QMessageLogger(__FILE__, 665, __PRETTY_FUNCTION__, lcGestureManager().categoryName()).debug() << "QGestureManager::deliverEvents:" << "\nstarted: " << startedGestures << "\nconflicted: " << conflictedGestures << "\nnormal: " << normalStartedGestures << "\n"; | 0 | ||||||||||||
| 606 | << "\nstarted: " << startedGestures never executed:  QMessageLogger(__FILE__, 665, __PRETTY_FUNCTION__, lcGestureManager().categoryName()).debug() << "QGestureManager::deliverEvents:" << "\nstarted: " << startedGestures << "\nconflicted: " << conflictedGestures << "\nnormal: " << normalStartedGestures << "\n"; | 0 | ||||||||||||
| 607 | << "\nconflicted: " << conflictedGestures never executed:  QMessageLogger(__FILE__, 665, __PRETTY_FUNCTION__, lcGestureManager().categoryName()).debug() << "QGestureManager::deliverEvents:" << "\nstarted: " << startedGestures << "\nconflicted: " << conflictedGestures << "\nnormal: " << normalStartedGestures << "\n"; | 0 | ||||||||||||
| 608 | << "\nnormal: " << normalStartedGestures never executed:  QMessageLogger(__FILE__, 665, __PRETTY_FUNCTION__, lcGestureManager().categoryName()).debug() << "QGestureManager::deliverEvents:" << "\nstarted: " << startedGestures << "\nconflicted: " << conflictedGestures << "\nnormal: " << normalStartedGestures << "\n"; | 0 | ||||||||||||
| 609 | << "\n"; never executed:  QMessageLogger(__FILE__, 665, __PRETTY_FUNCTION__, lcGestureManager().categoryName()).debug() << "QGestureManager::deliverEvents:" << "\nstarted: " << startedGestures << "\nconflicted: " << conflictedGestures << "\nnormal: " << normalStartedGestures << "\n"; | 0 | ||||||||||||
| 610 | - | |||||||||||||
| 611 | - | |||||||||||||
| 612 | for (GesturesPerWidget::const_iterator it = conflictedGestures.constBegin(), | - | ||||||||||||
| 613 | e = conflictedGestures.constEnd(); it != e 
 | 0 | ||||||||||||
| 614 | QWidget *receiver = it.key(); | - | ||||||||||||
| 615 | QList<QGesture *> gestures = it.value(); | - | ||||||||||||
| 616 | for (bool qt_category_enabled = lcGestureManager().isDebugEnabled(); qt_category_enabled 
 never executed:  QMessageLogger(__FILE__, 676, __PRETTY_FUNCTION__, lcGestureManager().categoryName()).debug() << "QGestureManager::deliverEvents: sending GestureOverride to" << receiver << "gestures:" << gestures; | 0 | ||||||||||||
| 617 | << receiver never executed:  QMessageLogger(__FILE__, 676, __PRETTY_FUNCTION__, lcGestureManager().categoryName()).debug() << "QGestureManager::deliverEvents: sending GestureOverride to" << receiver << "gestures:" << gestures; | 0 | ||||||||||||
| 618 | << "gestures:" << gestures; never executed:  QMessageLogger(__FILE__, 676, __PRETTY_FUNCTION__, lcGestureManager().categoryName()).debug() << "QGestureManager::deliverEvents: sending GestureOverride to" << receiver << "gestures:" << gestures; | 0 | ||||||||||||
| 619 | QGestureEvent event(gestures); | - | ||||||||||||
| 620 | event.t = QEvent::GestureOverride; | - | ||||||||||||
| 621 | - | |||||||||||||
| 622 | event.ignore(); | - | ||||||||||||
| 623 | for (QForeachContainer<typename QtPrivate::remove_reference<decltype(gestures)>::type> _container_((gestures)); _container_.control && _container_.i != _container_.e; ++_container_.i, _container_.control ^= 1) for (QGesture *g = *_container_.i; _container_.control; _container_.control = 0) | - | ||||||||||||
| 624 | event.setAccepted(g, false); never executed:  event.setAccepted(g, false); | 0 | ||||||||||||
| 625 | - | |||||||||||||
| 626 | QApplication::sendEvent(receiver, &event); | - | ||||||||||||
| 627 | bool eventAccepted = event.isAccepted(); | - | ||||||||||||
| 628 | const auto eventGestures = event.gestures(); | - | ||||||||||||
| 629 | for (QGesture *gesture : eventGestures) { | - | ||||||||||||
| 630 | if (eventAccepted 
 
 | 0 | ||||||||||||
| 631 | QWidget *w = event.m_targetWidgets.value(gesture->gestureType(), 0); | - | ||||||||||||
| 632 | ((!(w)) ? qt_assert("w",__FILE__,692) : qt_noop()); | - | ||||||||||||
| 633 | for (bool qt_category_enabled = lcGestureManager().isDebugEnabled(); qt_category_enabled 
 never executed:  QMessageLogger(__FILE__, 693, __PRETTY_FUNCTION__, lcGestureManager().categoryName()).debug() << "override event: gesture was accepted:" << gesture << w; | 0 | ||||||||||||
| 634 | QList<QGesture *> &gestures = normalStartedGestures[w]; | - | ||||||||||||
| 635 | gestures.append(gesture); | - | ||||||||||||
| 636 | - | |||||||||||||
| 637 | m_gestureTargets[gesture] = w; | - | ||||||||||||
| 638 | } never executed: else { end of block | 0 | ||||||||||||
| 639 | for (bool qt_category_enabled = lcGestureManager().isDebugEnabled(); qt_category_enabled 
 never executed:  QMessageLogger(__FILE__, 699, __PRETTY_FUNCTION__, lcGestureManager().categoryName()).debug() << "override event: gesture wasn't accepted. putting back:" << gesture; | 0 | ||||||||||||
| 640 | QList<QGesture *> &gestures = normalStartedGestures[receiver]; | - | ||||||||||||
| 641 | gestures.append(gesture); | - | ||||||||||||
| 642 | } never executed:  end of block | 0 | ||||||||||||
| 643 | } | - | ||||||||||||
| 644 | } never executed:  end of block | 0 | ||||||||||||
| 645 | - | |||||||||||||
| 646 | - | |||||||||||||
| 647 | for (GesturesPerWidget::const_iterator it = normalStartedGestures.constBegin(), | - | ||||||||||||
| 648 | e = normalStartedGestures.constEnd(); it != e 
 | 0 | ||||||||||||
| 649 | if (!it.value().isEmpty() 
 | 0 | ||||||||||||
| 650 | for (bool qt_category_enabled = lcGestureManager().isDebugEnabled(); qt_category_enabled 
 never executed:  QMessageLogger(__FILE__, 710, __PRETTY_FUNCTION__, lcGestureManager().categoryName()).debug() << "QGestureManager::deliverEvents: sending to" << it.key() << "gestures:" << it.value(); | 0 | ||||||||||||
| 651 | << "gestures:" << it.value(); never executed:  QMessageLogger(__FILE__, 710, __PRETTY_FUNCTION__, lcGestureManager().categoryName()).debug() << "QGestureManager::deliverEvents: sending to" << it.key() << "gestures:" << it.value(); | 0 | ||||||||||||
| 652 | QGestureEvent event(it.value()); | - | ||||||||||||
| 653 | QApplication::sendEvent(it.key(), &event); | - | ||||||||||||
| 654 | bool eventAccepted = event.isAccepted(); | - | ||||||||||||
| 655 | const auto eventGestures = event.gestures(); | - | ||||||||||||
| 656 | for (QGesture *gesture : eventGestures) { | - | ||||||||||||
| 657 | if (gesture->state() == Qt::GestureStarted 
 | 0 | ||||||||||||
| 658 | (eventAccepted 
 
 | 0 | ||||||||||||
| 659 | QWidget *w = event.m_targetWidgets.value(gesture->gestureType(), 0); | - | ||||||||||||
| 660 | ((!(w)) ? qt_assert("w",__FILE__,720) : qt_noop()); | - | ||||||||||||
| 661 | for (bool qt_category_enabled = lcGestureManager().isDebugEnabled(); qt_category_enabled 
 never executed:  QMessageLogger(__FILE__, 721, __PRETTY_FUNCTION__, lcGestureManager().categoryName()).debug() << "started gesture was delivered and accepted by" << w; | 0 | ||||||||||||
| 662 | m_gestureTargets[gesture] = w; | - | ||||||||||||
| 663 | } never executed:  end of block | 0 | ||||||||||||
| 664 | } never executed:  end of block | 0 | ||||||||||||
| 665 | } never executed:  end of block | 0 | ||||||||||||
| 666 | } never executed:  end of block | 0 | ||||||||||||
| 667 | } never executed:  end of block | 0 | ||||||||||||
| 668 | - | |||||||||||||
| 669 | void QGestureManager::recycle(QGesture *gesture) | - | ||||||||||||
| 670 | { | - | ||||||||||||
| 671 | QGestureRecognizer *recognizer = m_gestureToRecognizer.value(gesture, 0); | - | ||||||||||||
| 672 | if (recognizer 
 | 0 | ||||||||||||
| 673 | gesture->setGestureCancelPolicy(QGesture::CancelNone); | - | ||||||||||||
| 674 | recognizer->reset(gesture); | - | ||||||||||||
| 675 | m_activeGestures.remove(gesture); | - | ||||||||||||
| 676 | } never executed: else { end of block | 0 | ||||||||||||
| 677 | cleanupGesturesForRemovedRecognizer(gesture); | - | ||||||||||||
| 678 | } never executed:  end of block | 0 | ||||||||||||
| 679 | } | - | ||||||||||||
| 680 | - | |||||||||||||
| 681 | bool QGestureManager::gesturePending(QObject *o) | - | ||||||||||||
| 682 | { | - | ||||||||||||
| 683 | const QGestureManager *gm = QGestureManager::instance(); | - | ||||||||||||
| 684 | return never executed: gm && gm->m_gestureOwners.key(o); return gm && gm->m_gestureOwners.key(o);never executed:  return gm && gm->m_gestureOwners.key(o); | 0 | ||||||||||||
| 685 | } | - | ||||||||||||
| 686 | - | |||||||||||||
| 687 | - | |||||||||||||
| 688 | - | |||||||||||||
| 689 | - | |||||||||||||
| 690 | - | |||||||||||||
| Switch to Source code | Preprocessed file |