summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@theqtcompany.com>2016-01-21 08:17:21 +0100
committerLiang Qi <liang.qi@theqtcompany.com>2016-01-21 08:17:21 +0100
commit158a3a4159bdc5a49caecd63e021dacbc06cf23c (patch)
treec3ed9aee6cabd46e5e8615b3815b92d32857c4da /tests/auto/widgets
parent26ece94a68fb5ae680c5639716b06c4e1ae979a8 (diff)
parent7b2fb038ae4b8b9231ae989ad309b6eca107a858 (diff)
Merge remote-tracking branch 'origin/5.6' into dev
Conflicts: src/corelib/io/qiodevice_p.h src/corelib/kernel/qvariant_p.h src/corelib/tools/qsimd.cpp src/gui/kernel/qguiapplication.cpp tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp Change-Id: I742a093cbb231b282b43e463ec67173e0d29f57a
Diffstat (limited to 'tests/auto/widgets')
-rw-r--r--tests/auto/widgets/dialogs/qdialog/tst_qdialog.cpp23
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp8
-rw-r--r--tests/auto/widgets/kernel/qshortcut/tst_qshortcut.cpp23
-rw-r--r--tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp31
4 files changed, 71 insertions, 14 deletions
diff --git a/tests/auto/widgets/dialogs/qdialog/tst_qdialog.cpp b/tests/auto/widgets/dialogs/qdialog/tst_qdialog.cpp
index d5769554be..37afa7f0a5 100644
--- a/tests/auto/widgets/dialogs/qdialog/tst_qdialog.cpp
+++ b/tests/auto/widgets/dialogs/qdialog/tst_qdialog.cpp
@@ -51,6 +51,14 @@
QT_FORWARD_DECLARE_CLASS(QDialog)
+// work around function being protected
+class DummyDialog : public QDialog
+{
+public:
+ DummyDialog(): QDialog(0, Qt::X11BypassWindowManagerHint) {}
+ using QDialog::showExtension;
+};
+
class tst_QDialog : public QObject
{
Q_OBJECT
@@ -85,7 +93,7 @@ private slots:
void dialogInGraphicsView();
private:
- QDialog *testWidget;
+ DummyDialog *testWidget;
};
// Testing get/set functions
@@ -111,13 +119,6 @@ void tst_QDialog::getSetCheck()
QCOMPARE(INT_MAX, obj1.result());
}
-// work around function being protected
-class DummyDialog : public QDialog {
-public:
- DummyDialog(): QDialog(0) {}
- void showExtension( bool b ) { QDialog::showExtension( b ); }
-};
-
class ToolDialog : public QDialog
{
public:
@@ -155,7 +156,7 @@ tst_QDialog::tst_QDialog()
void tst_QDialog::initTestCase()
{
// Create the test class
- testWidget = new QDialog(0, Qt::X11BypassWindowManagerHint);
+ testWidget = new DummyDialog;
testWidget->resize(200,200);
testWidget->show();
qApp->setActiveWindow(testWidget);
@@ -200,7 +201,7 @@ void tst_QDialog::showExtension()
QPoint oldPosition = testWidget->pos();
// show
- ((DummyDialog*)testWidget)->showExtension( true );
+ testWidget->showExtension( true );
// while ( testWidget->size() == dlgSize )
// qApp->processEvents();
@@ -209,7 +210,7 @@ void tst_QDialog::showExtension()
QCOMPARE(testWidget->pos(), oldPosition);
// hide extension. back to old size ?
- ((DummyDialog*)testWidget)->showExtension( false );
+ testWidget->showExtension( false );
QCOMPARE( testWidget->size(), dlgSize );
testWidget->setExtension( 0 );
diff --git a/tests/auto/widgets/graphicsview/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp b/tests/auto/widgets/graphicsview/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp
index d8746906e9..349b160c2b 100644
--- a/tests/auto/widgets/graphicsview/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp
@@ -3680,6 +3680,7 @@ void tst_QGraphicsProxyWidget::mapToGlobal() // QTBUG-41135
const QSize size = availableGeometry.size() / 5;
QGraphicsScene scene;
QGraphicsView view(&scene);
+ view.setTransform(QTransform::fromScale(2, 2)); // QTBUG-50136, use transform.
view.setWindowTitle(QTest::currentTestFunction());
view.resize(size);
view.move(availableGeometry.bottomRight() - QPoint(size.width(), size.height()) - QPoint(100, 100));
@@ -3702,10 +3703,15 @@ void tst_QGraphicsProxyWidget::mapToGlobal() // QTBUG-41135
QVERIFY2((viewCenter - embeddedCenterGlobal).manhattanLength() <= 2,
msgPointMismatch(embeddedCenterGlobal, viewCenter).constData());
- // Same test with child centered on embeddedWidget
+ // Same test with child centered on embeddedWidget. The correct
+ // mapping is not implemented yet, but at least make sure
+ // the roundtrip maptoGlobal()/mapFromGlobal() returns the same
+ // point since that is important for mouse event handling (QTBUG-50030,
+ // QTBUG-50136).
const QPoint childCenter = childWidget->rect().center();
const QPoint childCenterGlobal = childWidget->mapToGlobal(childCenter);
QCOMPARE(childWidget->mapFromGlobal(childCenterGlobal), childCenter);
+ QEXPECT_FAIL("", "Not implemented for child widgets of embedded widgets", Continue);
QVERIFY2((viewCenter - childCenterGlobal).manhattanLength() <= 4,
msgPointMismatch(childCenterGlobal, viewCenter).constData());
}
diff --git a/tests/auto/widgets/kernel/qshortcut/tst_qshortcut.cpp b/tests/auto/widgets/kernel/qshortcut/tst_qshortcut.cpp
index 5641e60078..0782a02352 100644
--- a/tests/auto/widgets/kernel/qshortcut/tst_qshortcut.cpp
+++ b/tests/auto/widgets/kernel/qshortcut/tst_qshortcut.cpp
@@ -72,7 +72,8 @@ public:
TriggerSlot4,
TriggerSlot5,
TriggerSlot6,
- TriggerSlot7
+ TriggerSlot7,
+ SendKeyEvent
};
enum Result {
@@ -84,6 +85,7 @@ public:
Slot5Triggered,
Slot6Triggered,
Slot7Triggered,
+ SentKeyEvent,
Ambiguous
} currentResult;
@@ -104,6 +106,7 @@ public slots:
void ambigSlot7() { currentResult = Ambiguous; ambigResult = Slot7Triggered; }
void statusMessage( const QString& message ) { sbText = message; }
void shortcutDestroyed(QObject* obj);
+ void sendKeyEvent() { sendKeyEvents(edit, Qt::CTRL + Qt::Key_B, 0); currentResult = SentKeyEvent; }
public slots:
void initTestCase();
@@ -982,6 +985,19 @@ void tst_QShortcut::keypressConsumption()
QVERIFY(edit->toPlainText().endsWith("<Ctrl+I>a"));
clearAllShortcuts();
+ edit->clear();
+ QCOMPARE(edit->toPlainText().size(), 0);
+
+ setupShortcut(edit, "first", SendKeyEvent, "Ctrl+A");
+
+ // Verify reentrancy when a non-shortcut is triggered as part
+ // of shortcut processing.
+ currentResult = NoResult;
+ ambigResult = NoResult;
+ sendKeyEvents(edit, Qt::CTRL + Qt::Key_A, 0);
+ QCOMPARE(currentResult, SentKeyEvent);
+ QCOMPARE(ambigResult, NoResult);
+ QCOMPARE(edit->toPlainText(), QString(QString("<Ctrl+B>")));
}
// ------------------------------------------------------------------
@@ -1183,9 +1199,12 @@ QShortcut *tst_QShortcut::setupShortcut(QWidget *parent, const char *name, int t
normal = SLOT(slotTrig7());
ambig = SLOT(ambigSlot7());
break;
+ case SendKeyEvent:
+ normal = SLOT(sendKeyEvent());
}
connect(cut, SIGNAL(activated()), this, normal);
- connect(cut, SIGNAL(activatedAmbiguously()), this, ambig);
+ if (ambig)
+ connect(cut, SIGNAL(activatedAmbiguously()), this, ambig);
connect(cut, SIGNAL(destroyed(QObject*)), this, SLOT(shortcutDestroyed(QObject*)));
shortcuts.append(cut);
return cut;
diff --git a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp
index 25fc37487d..5b52f87d2f 100644
--- a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp
+++ b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp
@@ -166,6 +166,7 @@ private slots:
void updateDelegateOnEditableChange();
void respectChangedOwnershipOfItemView();
void task_QTBUG_39088_inputMethodHints();
+ void task_QTBUG_49831_scrollerNotActivated();
};
class MyAbstractItemDelegate : public QAbstractItemDelegate
@@ -3208,6 +3209,36 @@ void tst_QComboBox::respectChangedOwnershipOfItemView()
QCOMPARE(spy2.count(), 1);
}
+void tst_QComboBox::task_QTBUG_49831_scrollerNotActivated()
+{
+ QStringList modelData;
+ for (int i = 0; i < 1000; i++)
+ modelData << QStringLiteral("Item %1").arg(i);
+ QStringListModel model(modelData);
+
+ QComboBox box;
+ box.setModel(&model);
+ box.setCurrentIndex(500);
+ box.show();
+ QTest::qWaitForWindowShown(&box);
+ QTest::mouseMove(&box, QPoint(5, 5), 100);
+ box.showPopup();
+ QFrame *container = box.findChild<QComboBoxPrivateContainer *>();
+ QVERIFY(container);
+ QTest::qWaitForWindowShown(container);
+
+ QList<QComboBoxPrivateScroller *> scrollers = container->findChildren<QComboBoxPrivateScroller *>();
+ // Not all styles support scrollers. We rely only on those platforms that do to catch any regression.
+ if (!scrollers.isEmpty()) {
+ Q_FOREACH (QComboBoxPrivateScroller *scroller, scrollers) {
+ if (scroller->isVisible()) {
+ QSignalSpy doScrollSpy(scroller, SIGNAL(doScroll(int)));
+ QTest::mouseMove(scroller, QPoint(5, 5), 500);
+ QTRY_VERIFY(doScrollSpy.count() > 0);
+ }
+ }
+ }
+}
QTEST_MAIN(tst_QComboBox)
#include "tst_qcombobox.moc"