diff options
author | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2012-11-07 10:04:53 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-11-07 12:19:14 +0100 |
commit | f09d4349876d147d5b2ba38dfa5010139c44cf35 (patch) | |
tree | 98120d6cd8b5e5db2e9b11ef7fa77674bcb6e086 /tests/manual/widgetgrab | |
parent | c072ee1277c454a846a6c8cf19cdd2834c151000 (diff) |
Extend widget grab test.
- Add enter/leave logging.
- Add button to enforce native widgets.
- Make mouse event logging more verbose.
Task-number: QTBUG-27800
Change-Id: I23160244bef6cb0b8d505cbf118cf12d91621fe7
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'tests/manual/widgetgrab')
-rw-r--r-- | tests/manual/widgetgrab/main.cpp | 51 |
1 files changed, 47 insertions, 4 deletions
diff --git a/tests/manual/widgetgrab/main.cpp b/tests/manual/widgetgrab/main.cpp index 1feaad7294..e03800ee6d 100644 --- a/tests/manual/widgetgrab/main.cpp +++ b/tests/manual/widgetgrab/main.cpp @@ -73,17 +73,20 @@ private slots: void delayedMouseWindowGrab(); void keyboardGrabToggled(bool); void grabKeyboardWindowToggled(bool); + void forceNativeWidgets(); private: void toggleMouseWidgetGrab(QWidget *w, bool on); void toggleKeyboardWidgetGrab(QWidget *w, bool on); int m_mouseEventCount; + int m_enterLeaveEventCount; QPlainTextEdit *m_logEdit; QCheckBox *m_grabMouseCheckBox; QCheckBox *m_grabMouseWindowCheckBox; QCheckBox *m_grabKeyboardCheckBox; QCheckBox *m_grabKeyboardWindowCheckBox; + QPushButton *m_forceNativeButton; QString m_lastMouseMoveEvent; }; @@ -119,11 +122,13 @@ static const char testCasesC[] = MainWindow::MainWindow() : m_mouseEventCount(0) + , m_enterLeaveEventCount(0) , m_logEdit(new QPlainTextEdit(this)) , m_grabMouseCheckBox(new QCheckBox(QLatin1String("Grab Mouse"))) , m_grabMouseWindowCheckBox(new QCheckBox(QLatin1String("Grab Mouse Window Ctrl+W"))) , m_grabKeyboardCheckBox(new QCheckBox(QLatin1String("Grab Keyboard"))) , m_grabKeyboardWindowCheckBox(new QCheckBox(QLatin1String("Grab Keyboard Window"))) + , m_forceNativeButton(new QPushButton(QLatin1String("Force native widgets"))) { setObjectName(QLatin1String("MainWindow")); setMinimumWidth(800); @@ -141,6 +146,7 @@ MainWindow::MainWindow() connect(clearLog, SIGNAL(triggered()), m_logEdit, SLOT(clear())); QWidget *w = new QWidget(this); + w->setObjectName(QLatin1String("CentralWidget")); QVBoxLayout *layout = new QVBoxLayout(w); QPlainTextEdit *instructions = new QPlainTextEdit(this); instructions->setObjectName(QLatin1String("InstructionsEdit")); @@ -205,6 +211,11 @@ MainWindow::MainWindow() controlLayout->addWidget(popupMenuButton, row, 1); row++; + m_forceNativeButton->setObjectName("ForceNativeWidgetsButton"); + controlLayout->addWidget(m_forceNativeButton, row, 0); + connect(m_forceNativeButton, SIGNAL(clicked()), this, SLOT(forceNativeWidgets())); + + row++; QLineEdit *lineEdit = new QLineEdit(this); lineEdit->setObjectName(QLatin1String("LineEdit")); controlLayout->addWidget(lineEdit, row, 0, 1, 2); @@ -221,13 +232,37 @@ bool MainWindow::eventFilter(QObject *o, QEvent *e) { if (o->isWidgetType()) { switch (e->type()) { + case QEvent::Enter: { + QString message; + QDebug debug(&message); + debug.nospace() << '#' << m_enterLeaveEventCount++ << " Enter for " << o->objectName(); + m_logEdit->appendPlainText(message); + } + break; + case QEvent::Leave: { + QString message; + QDebug debug(&message); + debug.nospace() << '#' << m_enterLeaveEventCount++ << " Leave for " << o->objectName(); + m_logEdit->appendPlainText(message); + } + break; case QEvent::MouseButtonPress: case QEvent::MouseButtonRelease: { + const QMouseEvent *me = static_cast<QMouseEvent *>(e); QString message; - QDebug debug(&message); - debug.nospace() << '#' << m_mouseEventCount++ << " on " << o->objectName() - << " type " << e->type() << " Mousegrabber " - << QWidget::mouseGrabber(); + QDebug debug = QDebug(&message).nospace(); + debug << '#' << m_mouseEventCount++ << ' '; + if (e->type() == QEvent::MouseButtonPress) { + if (me->buttons() & Qt::LeftButton) + debug << "Left button press"; + if (me->buttons() & Qt::MiddleButton) + debug << "Middle button press"; + if (me->buttons() & Qt::RightButton) + debug << "Right button press"; + } else { + debug << "Button release"; + } + debug << " on " << o->objectName() << " Mousegrabber " << QWidget::mouseGrabber(); m_logEdit->appendPlainText(message); } break; @@ -324,6 +359,14 @@ void MainWindow::grabKeyboardWindowToggled(bool g) toggleKeyboardWidgetGrab(this, g); } +void MainWindow::forceNativeWidgets() +{ + m_logEdit->appendPlainText(QString::fromLatin1("Created native widget %1"). + arg(m_forceNativeButton->winId())); + m_forceNativeButton->setEnabled(false); + m_forceNativeButton->setText(QLatin1String("Native widgets created")); +} + int main(int argc, char *argv[]) { QApplication a(argc, argv); |