summaryrefslogtreecommitdiffstats
path: root/tests/manual/diaglib/eventfilter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/manual/diaglib/eventfilter.cpp')
-rw-r--r--tests/manual/diaglib/eventfilter.cpp74
1 files changed, 70 insertions, 4 deletions
diff --git a/tests/manual/diaglib/eventfilter.cpp b/tests/manual/diaglib/eventfilter.cpp
index 23a6d44fef..0a815fd883 100644
--- a/tests/manual/diaglib/eventfilter.cpp
+++ b/tests/manual/diaglib/eventfilter.cpp
@@ -36,6 +36,28 @@
#include <QtCore/QDebug>
#include <QtCore/QTextStream>
+#if QT_VERSION >= 0x050000
+# if defined(QT_WIDGETS_LIB)
+# define HAVE_APPLICATION
+# endif
+# if defined(QT_GUI_LIB)
+# define HAVE_GUI_APPLICATION
+# endif
+#else // Qt 5
+# if defined(QT_GUI_LIB)
+# define HAVE_APPLICATION
+# endif
+#endif
+
+#ifdef HAVE_APPLICATION
+# include <QApplication>
+# include <QWidget>
+#endif
+#ifdef HAVE_GUI_APPLICATION
+# include <QtGui/QGuiApplication>
+# include <QtGui/QWindow>
+#endif
+
namespace QtDiag {
EventFilter::EventFilter(EventCategories eventCategories, QObject *p)
@@ -131,16 +153,60 @@ static inline bool matchesType(const QObject *o, EventFilter::ObjectTypes types)
return types & EventFilter::OtherType;
}
+static void formatObject(const QObject *o, QDebug debug)
+{
+ if (o) {
+ debug << o->metaObject()->className();
+ const QString on = o->objectName();
+ if (!on.isEmpty())
+ debug << '/' << on;
+ } else {
+ debug << "null";
+ }
+}
+
+static void formatApplicationState(QDebug debug)
+{
+#if defined(HAVE_APPLICATION)
+ if (const QWidget *mw = QApplication::activeModalWidget()) {
+ debug << "\n QApplication::activeModalWidget = ";
+ formatObject(mw, debug);
+ }
+ if (const QWidget *pw = QApplication::activePopupWidget()) {
+ debug << "\n QApplication::activePopupWidget = ";
+ formatObject(pw, debug);
+ }
+ debug << "\n QApplication::activeWindow = ";
+ formatObject(QApplication::activeWindow(), debug);
+#endif // HAVE_APPLICATION
+#if defined(HAVE_GUI_APPLICATION)
+ if (const QWindow *mw = QGuiApplication::modalWindow()) {
+ debug << "\n QGuiApplication::modalWindow = ";
+ formatObject(mw, debug);
+ }
+ debug << "\n QGuiApplication::focusWindow = ";
+ formatObject(QGuiApplication::focusWindow(), debug);
+#endif // HAVE_GUI_APPLICATION
+}
+
bool EventFilter::eventFilter(QObject *o, QEvent *e)
{
static int n = 0;
if (matchesType(o, m_objectTypes) && m_eventTypes.contains(e->type())) {
QDebug debug = qDebug().nospace();
- const QString on = o->objectName();
- debug << '#' << n++ << ' ' << o->metaObject()->className();
- if (!on.isEmpty())
- debug << '/' << on;
+ debug << '#' << n++ << ' ';
+ formatObject(o, debug);
debug << ' ' << e;
+ switch (e->type()) {
+#if QT_VERSION >= 0x050000
+ case QEvent::FocusAboutToChange:
+#endif
+ case QEvent::FocusIn:
+ formatApplicationState(debug);
+ break;
+ default:
+ break;
+ }
}
return false;
}