summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@digia.com>2012-11-07 10:04:53 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2012-11-07 12:19:14 +0100
commitf09d4349876d147d5b2ba38dfa5010139c44cf35 (patch)
tree98120d6cd8b5e5db2e9b11ef7fa77674bcb6e086
parentc072ee1277c454a846a6c8cf19cdd2834c151000 (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>
-rw-r--r--tests/manual/widgetgrab/main.cpp51
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);