diff --git a/tests/manual/diaglib/eventfilter.cpp b/tests/manual/diaglib/eventfilter.cpp index f0573975f671d43159050ad625c27c12ce37b61c..4968780e826c8ddb9b4c6e8297155c7a440caa1e 100644 --- a/tests/manual/diaglib/eventfilter.cpp +++ b/tests/manual/diaglib/eventfilter.cpp @@ -52,6 +52,8 @@ EventFilter::EventFilter(QObject *p) void EventFilter::init(EventCategories eventCategories) { + m_objectTypes = OtherType | QWidgetType | QWindowType; + if (eventCategories & MouseEvents) { m_eventTypes << QEvent::MouseButtonPress << QEvent::MouseButtonRelease << QEvent::MouseButtonDblClick << QEvent::NonClientAreaMouseButtonPress @@ -79,6 +81,13 @@ void EventFilter::init(EventCategories eventCategories) m_eventTypes << QEvent::KeyPress << QEvent::KeyRelease << QEvent::ShortcutOverride << QEvent::Shortcut; } + if (eventCategories & FocusEvents) { + m_eventTypes +#if QT_VERSION >= 0x050000 + << QEvent::FocusAboutToChange +#endif + << QEvent::FocusIn << QEvent::FocusOut; + } if (eventCategories & GeometryEvents) m_eventTypes << QEvent::Move << QEvent::Resize; if (eventCategories & PaintEvents) { @@ -88,18 +97,44 @@ void EventFilter::init(EventCategories eventCategories) m_eventTypes << QEvent::Expose; #endif } + if (eventCategories & StateChangeEvents) { + m_eventTypes + << QEvent::WindowStateChange + << QEvent::WindowBlocked << QEvent::WindowUnblocked +#if QT_VERSION >= 0x050000 + << QEvent::ApplicationStateChange +#endif + << QEvent::ApplicationActivate << QEvent::ApplicationDeactivate; + } if (eventCategories & TimerEvents) m_eventTypes << QEvent::Timer << QEvent::ZeroTimerEvent; if (eventCategories & ObjectEvents) { m_eventTypes << QEvent::ChildAdded << QEvent::ChildPolished << QEvent::ChildRemoved << QEvent::Create << QEvent::Destroy; } + if (eventCategories & InputMethodEvents) { + m_eventTypes << QEvent::InputMethod; +#if QT_VERSION >= 0x050000 + m_eventTypes << QEvent::InputMethodQuery; +#endif + } +} + +static inline bool matchesType(const QObject *o, EventFilter::ObjectTypes types) +{ + if (o->isWidgetType()) + return types & EventFilter::QWidgetType; +#if QT_VERSION >= 0x050000 + if (o->isWindowType()) + return types & EventFilter::QWindowType; +#endif + return types & EventFilter::OtherType; } bool EventFilter::eventFilter(QObject *o, QEvent *e) { static int n = 0; - if (m_eventTypes.contains(e->type())) { + if (matchesType(o, m_objectTypes) && m_eventTypes.contains(e->type())) { QDebug debug = qDebug().nospace(); const QString on = o->objectName(); debug << '#' << n++ << ' ' << o->metaObject()->className(); diff --git a/tests/manual/diaglib/eventfilter.h b/tests/manual/diaglib/eventfilter.h index d87ac68b076edc41c68a264caee121cdceee4d0e..8d94c1308a06d6c75925f37b2ead1adacd0f9b94 100644 --- a/tests/manual/diaglib/eventfilter.h +++ b/tests/manual/diaglib/eventfilter.h @@ -52,25 +52,41 @@ public: TabletEvents = 0x00008, DragAndDropEvents = 0x00010, KeyEvents = 0x00020, - GeometryEvents = 0x00040, - PaintEvents = 0x00080, - TimerEvents = 0x00100, - ObjectEvents = 0x00200 + FocusEvents = 0x00040, + GeometryEvents = 0x00080, + PaintEvents = 0x00100, + StateChangeEvents = 0x00200, + InputMethodEvents = 0x00400, + TimerEvents = 0x00800, + ObjectEvents = 0x01000, + AllEvents = 0xFFFFF }; Q_DECLARE_FLAGS(EventCategories, EventCategory) + enum ObjectType { + QWindowType = 0x1, + QWidgetType = 0x2, + OtherType = 0x4 + }; + Q_DECLARE_FLAGS(ObjectTypes, ObjectType) + explicit EventFilter(EventCategories eventCategories, QObject *p = 0); explicit EventFilter(QObject *p = 0); bool eventFilter(QObject *, QEvent *); + ObjectTypes objectTypes() const { return m_objectTypes; } + void setObjectTypes(ObjectTypes objectTypes) { m_objectTypes = objectTypes; } + private: void init(EventCategories eventCategories); QList<QEvent::Type> m_eventTypes; + ObjectTypes m_objectTypes; }; Q_DECLARE_OPERATORS_FOR_FLAGS(EventFilter::EventCategories) +Q_DECLARE_OPERATORS_FOR_FLAGS(EventFilter::ObjectTypes) } // namespace QtDiag diff --git a/tests/manual/diaglib/glinfo.cpp b/tests/manual/diaglib/glinfo.cpp index cd30e46b451a3de2bb72b1829825d5b3c97ece01..a7eff208dec7a17be762d2c32c20fef7581e76cf 100644 --- a/tests/manual/diaglib/glinfo.cpp +++ b/tests/manual/diaglib/glinfo.cpp @@ -102,7 +102,7 @@ static QString getGlString(GLenum name) return QString(); } -QString glInfo(const QWidget *) +QString glInfo(const QObject *) { return getGlString(GL_VENDOR) + QLatin1Char('\n') + getGlString(GL_RENDERER); }