From f09d4349876d147d5b2ba38dfa5010139c44cf35 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Wed, 7 Nov 2012 10:04:53 +0100 Subject: [PATCH] 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 --- tests/manual/widgetgrab/main.cpp | 51 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 47 insertions(+), 4 deletions(-) diff --git a/tests/manual/widgetgrab/main.cpp b/tests/manual/widgetgrab/main.cpp index 1feaad7..e03800e 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(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); -- 2.7.4