summaryrefslogtreecommitdiffstats
path: root/tests/manual
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@theqtcompany.com>2014-11-21 16:52:06 +0100
committerFriedemann Kleint <Friedemann.Kleint@theqtcompany.com>2014-11-25 22:39:39 +0100
commitf96cd3187df78e121546df2a87432013d0b1a870 (patch)
treeff6a571cabbe6510889c3197a21786ba8de8cc12 /tests/manual
parent6593531a4dccdfb878d2ee3a789f0e937d73e8e7 (diff)
Improve diaglib.
- Fix prototype for glinfo() for Qt 4 - Add more event types and object type flags to event filter. Change-Id: Ia4160b40486d054e860a339e7b5c9c28695330ae Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com> Reviewed-by: Andy Shaw <andy.shaw@digia.com>
Diffstat (limited to 'tests/manual')
-rw-r--r--tests/manual/diaglib/eventfilter.cpp37
-rw-r--r--tests/manual/diaglib/eventfilter.h24
-rw-r--r--tests/manual/diaglib/glinfo.cpp2
3 files changed, 57 insertions, 6 deletions
diff --git a/tests/manual/diaglib/eventfilter.cpp b/tests/manual/diaglib/eventfilter.cpp
index f0573975f6..4968780e82 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 d87ac68b07..8d94c1308a 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 cd30e46b45..a7eff208de 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);
}