| 329 | } |
| 330 | |
| 331 | bool EventPropagationListener::eventFilter(QObject *receiver, QEvent *event) |
| 332 | { |
| 333 | if (!s_model) |
| 334 | return false; |
| 335 | |
| 336 | if (!s_model->hasEvents()) |
| 337 | return false; |
| 338 | |
| 339 | EventData &lastEvent = s_model->lastEvent(); |
| 340 | |
| 341 | if (lastEvent.eventPtr == event && lastEvent.receiver == receiver) { |
| 342 | // this is the same event we already recorded in the event callback |
| 343 | return false; |
| 344 | } |
| 345 | if (!lastEvent.propagatedEvents.isEmpty() |
| 346 | && lastEvent.propagatedEvents.last().eventPtr == event) { |
| 347 | // this is an event propagated by QML that is already recorded in the event callback |
| 348 | return false; |
| 349 | } |
| 350 | |
| 351 | if (!shouldBeRecorded(receiver, event)) |
| 352 | return false; |
| 353 | |
| 354 | if (event->type() != lastEvent.type) { |
| 355 | // a new event was created during the propagation |
| 356 | EventData newEvent = createEventData(receiver, event); |
| 357 | s_model->addEvent(newEvent); |
| 358 | s_eventTypeModel->increaseCount(event->type()); |
| 359 | return false; |
| 360 | } |
| 361 | |
| 362 | EventData propagatedEvent = createEventData(receiver, event); |
| 363 | lastEvent.propagatedEvents.append(propagatedEvent); |
| 364 | |
| 365 | return false; |
| 366 | } |
| 367 | |
| 368 | |
| 369 | EventMonitor::EventMonitor(Probe *probe, QObject *parent) |
nothing calls this directly
no test coverage detected