summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/widgets')
-rw-r--r--tests/auto/widgets/dialogs/qcolordialog/tst_qcolordialog.cpp10
-rw-r--r--tests/auto/widgets/dialogs/qfiledialog/tst_qfiledialog.cpp3
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp39
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp29
-rw-r--r--tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp3
-rw-r--r--tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp11
-rw-r--r--tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp95
-rw-r--r--tests/auto/widgets/util/qcompleter/tst_qcompleter.cpp6
-rw-r--r--tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp11
-rw-r--r--tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp35
-rw-r--r--tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp33
-rw-r--r--tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp7
12 files changed, 216 insertions, 66 deletions
diff --git a/tests/auto/widgets/dialogs/qcolordialog/tst_qcolordialog.cpp b/tests/auto/widgets/dialogs/qcolordialog/tst_qcolordialog.cpp
index fa50d10488..e4e4fda1ca 100644
--- a/tests/auto/widgets/dialogs/qcolordialog/tst_qcolordialog.cpp
+++ b/tests/auto/widgets/dialogs/qcolordialog/tst_qcolordialog.cpp
@@ -60,6 +60,7 @@ private slots:
void defaultOkButton();
void native_activeModalWidget();
void task247349_alpha();
+ void QTBUG_43548_initialColor();
};
class TestNativeDialog : public QColorDialog
@@ -162,5 +163,14 @@ void tst_QColorDialog::task247349_alpha()
QCOMPARE(alpha, qAlpha(dialog.currentColor().rgba()));
}
+void tst_QColorDialog::QTBUG_43548_initialColor()
+{
+ QColorDialog dialog;
+ dialog.setOption(QColorDialog::DontUseNativeDialog);
+ dialog.setCurrentColor(QColor(Qt::red));
+ QColor a(Qt::red);
+ QCOMPARE(a, dialog.currentColor());
+}
+
QTEST_MAIN(tst_QColorDialog)
#include "tst_qcolordialog.moc"
diff --git a/tests/auto/widgets/dialogs/qfiledialog/tst_qfiledialog.cpp b/tests/auto/widgets/dialogs/qfiledialog/tst_qfiledialog.cpp
index 92200618d6..92f768586a 100644
--- a/tests/auto/widgets/dialogs/qfiledialog/tst_qfiledialog.cpp
+++ b/tests/auto/widgets/dialogs/qfiledialog/tst_qfiledialog.cpp
@@ -1299,9 +1299,6 @@ void tst_QFiledialog::clearLineEdit()
#endif
QTest::qWait(2000);
-#ifdef Q_OS_MAC
- QEXPECT_FAIL("", "QTBUG-23703", Abort);
-#endif
QVERIFY(fd.directory().absolutePath() != QDir::home().absolutePath());
QVERIFY(!lineEdit->text().isEmpty());
diff --git a/tests/auto/widgets/graphicsview/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp b/tests/auto/widgets/graphicsview/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp
index 07c9369771..c2ec7be9e7 100644
--- a/tests/auto/widgets/graphicsview/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp
@@ -175,6 +175,7 @@ private slots:
void windowFrameMargins();
void QTBUG_6986_sendMouseEventToAlienWidget();
void mapToGlobal();
+ void QTBUG_43780_visibility();
};
// Subclass that exposes the protected functions.
@@ -278,6 +279,8 @@ void tst_QGraphicsProxyWidget::initTestCase()
// Disable menu animations to prevent the alpha widget from getting in the way
// in actionsContextMenu().
QApplication::setEffectEnabled(Qt::UI_AnimateMenu, false);
+ // Disable combo for QTBUG_43780_visibility()/Windows Vista.
+ QApplication::setEffectEnabled(Qt::UI_AnimateCombo, false);
}
// This will be called after the last test function is executed.
@@ -3687,5 +3690,41 @@ void tst_QGraphicsProxyWidget::mapToGlobal() // QTBUG-41135
.arg(embeddedCenterGlobal.x()).arg(embeddedCenterGlobal.y())));
}
+// QTBUG_43780: Embedded widgets have isWindow()==true but showing them should not
+// trigger the top-level widget code path of show() that closes all popups
+// (for example combo popups).
+void tst_QGraphicsProxyWidget::QTBUG_43780_visibility()
+{
+ const QRect availableGeometry = QGuiApplication::primaryScreen()->availableGeometry();
+ const QSize size = availableGeometry.size() / 4;
+ QWidget mainWindow;
+ QVBoxLayout *layout = new QVBoxLayout(&mainWindow);
+ QComboBox *combo = new QComboBox(&mainWindow);
+ combo->addItems(QStringList() << "i1" << "i2" << "i3");
+ layout->addWidget(combo);
+ QGraphicsScene *scene = new QGraphicsScene(&mainWindow);
+ QGraphicsView *view = new QGraphicsView(scene, &mainWindow);
+ layout->addWidget(view);
+ mainWindow.setWindowTitle(QTest::currentTestFunction());
+ mainWindow.resize(size);
+ mainWindow.move(availableGeometry.topLeft()
+ + QPoint(availableGeometry.width() - size.width(),
+ availableGeometry.height() - size.height()) / 2);
+ QLabel *label = new QLabel(QTest::currentTestFunction());
+ scene->addWidget(label);
+ label->hide();
+ mainWindow.show();
+ combo->setFocus();
+ mainWindow.activateWindow();
+ QVERIFY(QTest::qWaitForWindowActive(&mainWindow));
+ combo->showPopup();
+ QWidget *comboPopup = combo->view()->window();
+ QVERIFY(comboPopup);
+ QVERIFY(QTest::qWaitForWindowExposed(comboPopup));
+ label->show();
+ QTRY_VERIFY(label->isVisible());
+ QVERIFY(comboPopup->isVisible());
+}
+
QTEST_MAIN(tst_QGraphicsProxyWidget)
#include "tst_qgraphicsproxywidget.moc"
diff --git a/tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp b/tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp
index 6fde8321f9..e817157c79 100644
--- a/tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp
@@ -171,6 +171,7 @@ private slots:
void fontPropagatesResolveViaNonWidget();
void fontPropagatesResolveFromScene();
void tabFocus();
+ void windowFrameSectionAt();
// Task fixes
void task236127_bspTreeIndexFails();
@@ -243,6 +244,9 @@ public:
void call_updateGeometry()
{ return QGraphicsWidget::updateGeometry(); }
+ Qt::WindowFrameSection call_windowFrameSectionAt(const QPointF &pos) const
+ { return QGraphicsWidget::windowFrameSectionAt(pos); }
+
int eventCount;
Qt::LayoutDirection m_painterLayoutDirection;
@@ -3411,6 +3415,31 @@ void tst_QGraphicsWidget::tabFocus()
delete widget6;
}
+void tst_QGraphicsWidget::windowFrameSectionAt()
+{
+ SubQGraphicsWidget widget;
+ widget.setWindowFrameMargins(5, 5, 5, 5);
+ widget.setGeometry(0, 0, 200, 200);
+
+ QCOMPARE(widget.call_windowFrameSectionAt(QPointF(50, 50)), Qt::NoSection);
+ QCOMPARE(widget.call_windowFrameSectionAt(QPointF(-2, -2)), Qt::TopLeftSection);
+ QCOMPARE(widget.call_windowFrameSectionAt(QPointF(-2, 10)), Qt::TopLeftSection);
+ QCOMPARE(widget.call_windowFrameSectionAt(QPointF(-2, 30)), Qt::LeftSection);
+ QCOMPARE(widget.call_windowFrameSectionAt(QPointF(-2, 170)), Qt::LeftSection);
+ QCOMPARE(widget.call_windowFrameSectionAt(QPointF(-2, 198)), Qt::BottomLeftSection);
+ QCOMPARE(widget.call_windowFrameSectionAt(QPointF(-2, 202)), Qt::BottomLeftSection);
+
+ QCOMPARE(widget.call_windowFrameSectionAt(QPointF(202, -2)), Qt::TopRightSection);
+ QCOMPARE(widget.call_windowFrameSectionAt(QPointF(202, 10)), Qt::TopRightSection);
+ QCOMPARE(widget.call_windowFrameSectionAt(QPointF(202, 30)), Qt::RightSection);
+ QCOMPARE(widget.call_windowFrameSectionAt(QPointF(202, 170)), Qt::RightSection);
+ QCOMPARE(widget.call_windowFrameSectionAt(QPointF(202, 198)), Qt::BottomRightSection);
+ QCOMPARE(widget.call_windowFrameSectionAt(QPointF(202, 202)), Qt::BottomRightSection);
+
+ QCOMPARE(widget.call_windowFrameSectionAt(QPointF(50, -2)), Qt::TopSection);
+ QCOMPARE(widget.call_windowFrameSectionAt(QPointF(50, 202)), Qt::BottomSection);
+}
+
void tst_QGraphicsWidget::QT_BUG_6544_tabFocusFirstUnsetWhenRemovingItems()
{
QGraphicsScene scene;
diff --git a/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp b/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp
index 6ab93ba6db..0ca836d946 100644
--- a/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp
+++ b/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp
@@ -861,9 +861,6 @@ void tst_QTreeView::editTriggers()
}
// Check if we got an editor
-#ifdef Q_OS_MAC
- QEXPECT_FAIL("EditKeyPressed 4", "QTBUG-23696", Continue);
-#endif
QTRY_COMPARE(view.findChild<QLineEdit *>(QString()) != 0, editorOpened);
}
diff --git a/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp b/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp
index 8bcd03c760..6f7a6c2491 100644
--- a/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp
+++ b/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp
@@ -49,6 +49,9 @@ class CustomTreeWidget : public QTreeWidget
public:
QModelIndex indexFromItem(QTreeWidgetItem *item, int column = 0) const
{ return QTreeWidget::indexFromItem(item, column); }
+
+ QMimeData * mimeData(const QList<QTreeWidgetItem*> items) const
+ { return QTreeWidget::mimeData(items); }
};
class tst_QTreeWidget : public QObject
@@ -159,6 +162,7 @@ private slots:
void setChildIndicatorPolicy();
void task20345_sortChildren();
+ void getMimeDataWithInvalidItem();
public slots:
void itemSelectionChanged();
@@ -3410,6 +3414,13 @@ void tst_QTreeWidget::task20345_sortChildren()
QVERIFY(1);
}
+void tst_QTreeWidget::getMimeDataWithInvalidItem()
+{
+ CustomTreeWidget w;
+ QTest::ignoreMessage(QtWarningMsg, "QTreeWidget::mimeData: Null-item passed");
+ QMimeData *md = w.mimeData(QList<QTreeWidgetItem*>() << Q_NULLPTR);
+ QVERIFY(!md);
+}
QTEST_MAIN(tst_QTreeWidget)
#include "tst_qtreewidget.moc"
diff --git a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp
index 8f3f12e7ff..8dacab7c3b 100644
--- a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp
+++ b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp
@@ -185,6 +185,14 @@ inline void setWindowsAnimationsEnabled(bool) {}
static inline bool windowsAnimationsEnabled() { return false; }
#endif // !Q_OS_WIN || Q_OS_WINCE || Q_OS_WINRT
+template <class T>
+static QByteArray msgComparisonFailed(T v1, const char *op, T v2)
+{
+ QString s;
+ QDebug(&s) << v1 << op << v2;
+ return s.toLocal8Bit();
+}
+
class tst_QWidget : public QObject
{
Q_OBJECT
@@ -1396,11 +1404,13 @@ void tst_QWidget::fonts()
newFont = newFont.resolve( testWidget->font() );
QVERIFY( cleanTestWidget->testAttribute(Qt::WA_SetFont) );
- QVERIFY( cleanTestWidget->font() == newFont );
+ QVERIFY2( cleanTestWidget->font() == newFont,
+ msgComparisonFailed(cleanTestWidget->font(), "==", newFont));
cleanTestWidget->setFont(QFont());
QVERIFY( !cleanTestWidget->testAttribute(Qt::WA_SetFont) );
- QVERIFY( cleanTestWidget->font() == originalFont );
+ QVERIFY2( cleanTestWidget->font() == originalFont,
+ msgComparisonFailed(cleanTestWidget->font(), "==", originalFont));
}
void tst_QWidget::mapFromAndTo_data()
@@ -1823,17 +1833,17 @@ void tst_QWidget::activation()
widget2.show();
QTest::qWait(waitTime);
- QVERIFY(qApp->activeWindow() == &widget2);
+ QCOMPARE(QApplication::activeWindow(), &widget2);
widget2.showMinimized();
QTest::qWait(waitTime);
- QVERIFY(qApp->activeWindow() == &widget1);
+ QCOMPARE(QApplication::activeWindow(), &widget1);
widget2.showMaximized();
QTest::qWait(waitTime);
- QVERIFY(qApp->activeWindow() == &widget2);
+ QCOMPARE(QApplication::activeWindow(), &widget2);
widget2.showMinimized();
QTest::qWait(waitTime);
- QVERIFY(qApp->activeWindow() == &widget1);
+ QCOMPARE(QApplication::activeWindow(), &widget1);
widget2.showNormal();
QTest::qWait(waitTime);
#ifndef Q_OS_WINCE
@@ -1841,10 +1851,10 @@ void tst_QWidget::activation()
QEXPECT_FAIL("", "MS introduced new behavior after XP", Continue);
#endif
QTest::qWait(waitTime);
- QVERIFY(qApp->activeWindow() == &widget2);
+ QCOMPARE(QApplication::activeWindow(), &widget2);
widget2.hide();
QTest::qWait(waitTime);
- QVERIFY(qApp->activeWindow() == &widget1);
+ QCOMPARE(QApplication::activeWindow(), &widget1);
}
#endif // Q_OS_WIN
@@ -2745,13 +2755,13 @@ void tst_QWidget::raise()
QList<QObject *> list1;
list1 << child1 << child2 << child3 << child4;
- QVERIFY(parentPtr->children() == list1);
+ QCOMPARE(parentPtr->children(), list1);
QCOMPARE(allChildren.count(), list1.count());
foreach (UpdateWidget *child, allChildren) {
int expectedPaintEvents = child == child4 ? 1 : 0;
if (expectedPaintEvents == 0) {
- QVERIFY(child->numPaintEvents == 0);
+ QCOMPARE(child->numPaintEvents, 0);
} else {
// show() issues multiple paint events on some window managers
QTRY_VERIFY(child->numPaintEvents >= expectedPaintEvents);
@@ -2774,7 +2784,7 @@ void tst_QWidget::raise()
QList<QObject *> list2;
list2 << child1 << child3 << child4 << child2;
- QVERIFY(parentPtr->children() == list2);
+ QCOMPARE(parentPtr->children(), list2);
// Creates a widget on top of all the children and checks that raising one of
// the children underneath doesn't trigger a repaint on the covering widget.
@@ -2807,7 +2817,7 @@ void tst_QWidget::raise()
QList<QObject *> list3;
list3 << child1 << child4 << child2 << child3;
- QVERIFY(parent->children() == list3);
+ QCOMPARE(parent->children(), list3);
foreach (UpdateWidget *child, allChildren) {
int expectedPaintEvents = 0;
@@ -2849,13 +2859,13 @@ void tst_QWidget::lower()
QList<QObject *> list1;
list1 << child1 << child2 << child3 << child4;
- QVERIFY(parent->children() == list1);
+ QCOMPARE(parent->children(), list1);
QCOMPARE(allChildren.count(), list1.count());
foreach (UpdateWidget *child, allChildren) {
int expectedPaintEvents = child == child4 ? 1 : 0;
if (expectedPaintEvents == 0) {
- QVERIFY(child->numPaintEvents == 0);
+ QCOMPARE(child->numPaintEvents, 0);
} else {
// show() issues multiple paint events on some window managers
QTRY_VERIFY(child->numPaintEvents >= expectedPaintEvents);
@@ -2879,7 +2889,7 @@ void tst_QWidget::lower()
QList<QObject *> list2;
list2 << child4 << child1 << child2 << child3;
- QVERIFY(parent->children() == list2);
+ QCOMPARE(parent->children(), list2);
}
#endif
@@ -2913,7 +2923,7 @@ void tst_QWidget::stackUnder()
QVERIFY(QTest::qWaitForWindowExposed(parent.data()));
QList<QObject *> list1;
list1 << child1 << child2 << child3 << child4;
- QVERIFY(parent->children() == list1);
+ QCOMPARE(parent->children(), list1);
foreach (UpdateWidget *child, allChildren) {
int expectedPaintEvents = child == child4 ? 1 : 0;
@@ -2932,7 +2942,7 @@ void tst_QWidget::stackUnder()
QList<QObject *> list2;
list2 << child1 << child4 << child2 << child3;
- QVERIFY(parent->children() == list2);
+ QCOMPARE(parent->children(), list2);
foreach (UpdateWidget *child, allChildren) {
int expectedPaintEvents = child == child3 ? 1 : 0;
@@ -2948,7 +2958,7 @@ void tst_QWidget::stackUnder()
QList<QObject *> list3;
list3 << child4 << child2 << child1 << child3;
- QVERIFY(parent->children() == list3);
+ QCOMPARE(parent->children(), list3);
foreach (UpdateWidget *child, allChildren) {
int expectedZOrderChangeEvents = child == child1 ? 1 : 0;
@@ -3760,8 +3770,10 @@ void tst_QWidget::setMinimumSize()
w.setMinimumSize(nonDefaultSize);
w.showNormal();
QTest::qWait(50);
- QVERIFY(w.height() >= nonDefaultSize.height());
- QVERIFY(w.width() >= nonDefaultSize.width());
+ QVERIFY2(w.height() >= nonDefaultSize.height(),
+ msgComparisonFailed(w.height(), ">=", nonDefaultSize.height()));
+ QVERIFY2(w.width() >= nonDefaultSize.width(),
+ msgComparisonFailed(w.width(), ">=", nonDefaultSize.width()));
#endif
}
@@ -3813,7 +3825,7 @@ void tst_QWidget::setFixedSize()
QTest::qWait(50);
if (m_platform == QStringLiteral("xcb"))
QSKIP("QTBUG-26424");
- QVERIFY(w.size() == defaultSize + QSize(150,150));
+ QCOMPARE(w.size(), defaultSize + QSize(150,150));
}
void tst_QWidget::ensureCreated()
@@ -4687,8 +4699,9 @@ void tst_QWidget::setWindowGeometry()
void tst_QWidget::setGeometry_win()
{
QWidget widget;
+
setFrameless(&widget);
- widget.setGeometry(0, 600, 100,100);
+ widget.setGeometry(QRect(m_availableTopLeft + QPoint(0, 600), QSize(100, 100)));
widget.show();
widget.setWindowState(widget.windowState() | Qt::WindowMaximized);
QRect geom = widget.normalGeometry();
@@ -4698,8 +4711,10 @@ void tst_QWidget::setGeometry_win()
widget.show();
RECT rt;
::GetWindowRect(winHandleOf(&widget), &rt);
- QVERIFY(rt.left <= 0);
- QVERIFY(rt.top <= 0);
+ QVERIFY2(rt.left <= m_availableTopLeft.x(),
+ msgComparisonFailed(int(rt.left), "<=", m_availableTopLeft.x()));
+ QVERIFY2(rt.top <= m_availableTopLeft.y(),
+ msgComparisonFailed(int(rt.top), "<=", m_availableTopLeft.y()));
}
#endif // defined (Q_OS_WIN) && !defined(Q_OS_WINCE) && !defined(Q_OS_WINRT)
@@ -6547,7 +6562,8 @@ void tst_QWidget::renderInvisible()
QPixmap pixmap(topLevel.sizeHint());
topLevel.render(&pixmap); // triggers adjustSize()
const QSize finalSize = topLevel.size();
- QVERIFY(finalSize != initialSize);
+ QVERIFY2(finalSize != initialSize,
+ msgComparisonFailed(finalSize, "!=", initialSize));
topLevel.layout()->removeWidget(widget);
QCOMPARE(topLevel.size(), finalSize);
@@ -7188,7 +7204,7 @@ void tst_QWidget::setContentsMargins()
QSize oldSize = label.sizeHint();
label.setFrameStyle(QFrame::Sunken | QFrame::Box);
QSize newSize = label.sizeHint();
- QVERIFY(oldSize != newSize);
+ QVERIFY2(oldSize != newSize, msgComparisonFailed(oldSize, "!=", newSize));
QLabel label2("why does it always rain on me?");
label2.show();
@@ -7721,8 +7737,10 @@ void tst_QWidget::adjustSize()
child->resize(123, 456);
child->adjustSize();
if (expectedSize == QSize(100000, 100000)) {
- QVERIFY(child->size().width() < sizeHint.width());
- QVERIFY(child->size().height() < sizeHint.height());
+ QVERIFY2(child->size().width() < sizeHint.width(),
+ msgComparisonFailed(child->size().width(), "<", sizeHint.width()));
+ QVERIFY2(child->size().height() < sizeHint.height(),
+ msgComparisonFailed(child->size().height(), "<", sizeHint.height()));
} else {
#if defined (Q_OS_WINCE)
if (!haveParent) {
@@ -9511,8 +9529,10 @@ void tst_QWidget::childAt_unifiedToolBar()
// we use mapToGlobal/mapFromGlobal to re-calculate the corners.
QPoint oldToolBarTopLeft = toolBarTopLeft;
toolBarTopLeft = mainWindow.mapFromGlobal(toolBar->mapToGlobal(QPoint()));
- QVERIFY(toolBarTopLeft != oldToolBarTopLeft);
- QVERIFY(toolBarTopLeft.y() < 0);
+ QVERIFY2(toolBarTopLeft != oldToolBarTopLeft,
+ msgComparisonFailed(toolBarTopLeft, "!=", oldToolBarTopLeft));
+ QVERIFY2(toolBarTopLeft.y() < 0,
+ msgComparisonFailed(toolBarTopLeft.y(), "<", 0));
labelTopLeft = mainWindow.mapFromGlobal(label->mapToGlobal(QPoint()));
QCOMPARE(mainWindow.childAt(toolBarTopLeft), static_cast<QWidget *>(toolBar));
@@ -9743,7 +9763,7 @@ void tst_QWidget::grabKeyboard()
QTest::keyClick(w.windowHandle(), Qt::Key_A);
grabber->releaseKeyboard();
QCOMPARE(grabber->text().toLower(), QStringLiteral("a"));
- QVERIFY(nonGrabber->text().isEmpty());
+ QVERIFY2(nonGrabber->text().isEmpty(), qPrintable(nonGrabber->text()));
}
class TouchMouseWidget : public QWidget {
@@ -10095,7 +10115,7 @@ void tst_QWidget::underMouse()
QVERIFY(QTest::qWaitForWindowExposed(&popupWidget));
QWindow *popupWindow = popupWidget.windowHandle();
QVERIFY(popupWindow);
- QVERIFY(QApplication::activePopupWidget() == &popupWidget);
+ QCOMPARE(QApplication::activePopupWidget(), &popupWidget);
// Send an artificial leave event for window, as it won't get generated automatically
// due to cursor not actually being over the window.
@@ -10368,13 +10388,15 @@ void tst_QWidget::largerThanScreen_QTBUG30142()
widget.resize(200, 4000);
widget.show();
QVERIFY(QTest::qWaitForWindowExposed(&widget));
- QVERIFY(widget.frameGeometry().y() >= 0);
+ QVERIFY2(widget.frameGeometry().y() >= 0,
+ msgComparisonFailed(widget.frameGeometry().y(), " >=", 0));
QWidget widget2;
widget2.resize(10000, 400);
widget2.show();
QVERIFY(QTest::qWaitForWindowExposed(&widget2));
- QVERIFY(widget2.frameGeometry().x() >= 0);
+ QVERIFY2(widget2.frameGeometry().x() >= 0,
+ msgComparisonFailed(widget.frameGeometry().x(), " >=", 0));
}
void tst_QWidget::resizeStaticContentsChildWidget_QTBUG35282()
@@ -10389,13 +10411,14 @@ void tst_QWidget::resizeStaticContentsChildWidget_QTBUG35282()
widget.showNormal();
QVERIFY(QTest::qWaitForWindowExposed(&widget));
- QVERIFY(childWidget.numPaintEvents == 0);
+ QCOMPARE(childWidget.numPaintEvents, 0);
childWidget.reset();
widget.resize(1000,1000);
QVERIFY(QTest::qWaitForWindowExposed(&widget));
QGuiApplication::sync();
- QVERIFY(childWidget.numPaintEvents >= 1);
+ QVERIFY2(childWidget.numPaintEvents >= 1,
+ msgComparisonFailed(childWidget.numPaintEvents, ">=", 1));
}
void tst_QWidget::qmlSetParentHelper()
diff --git a/tests/auto/widgets/util/qcompleter/tst_qcompleter.cpp b/tests/auto/widgets/util/qcompleter/tst_qcompleter.cpp
index 1d6e75e76e..f8f3900372 100644
--- a/tests/auto/widgets/util/qcompleter/tst_qcompleter.cpp
+++ b/tests/auto/widgets/util/qcompleter/tst_qcompleter.cpp
@@ -601,6 +601,9 @@ void tst_QCompleter::directoryModel_data()
QTest::newRow("()") << "" << "" << "/" << "/";
QTest::newRow("(/a)") << "/a" << "" << "Applications" << "/Applications";
QTest::newRow("(/u)") << "/u" << "" << "Users" << "/Users";
+#elif defined(Q_OS_ANDROID)
+ QTest::newRow("()") << "" << "" << "/" << "/";
+ QTest::newRow("(/et)") << "/et" << "" << "etc" << "/etc";
#else
QTest::newRow("()") << "" << "" << "/" << "/";
#if !defined(Q_OS_IRIX) && !defined(Q_OS_AIX) && !defined(Q_OS_HPUX) && !defined(Q_OS_QNX)
@@ -647,6 +650,9 @@ void tst_QCompleter::fileSystemModel_data()
QTest::newRow("()") << "" << "" << "/" << "/";
QTest::newRow("(/a)") << "/a" << "" << "Applications" << "/Applications";
// QTest::newRow("(/d)") << "/d" << "" << "Developer" << "/Developer";
+#elif defined(Q_OS_ANDROID)
+ QTest::newRow("()") << "" << "" << "/" << "/";
+ QTest::newRow("(/et)") << "/et" << "" << "etc" << "/etc";
#else
QTest::newRow("()") << "" << "" << "/" << "/";
#if !defined(Q_OS_IRIX) && !defined(Q_OS_AIX) && !defined(Q_OS_HPUX) && !defined(Q_OS_QNX)
diff --git a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp
index 5007983aa6..0873c6bbb1 100644
--- a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp
+++ b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp
@@ -124,7 +124,7 @@ private slots:
void pixmapIcon();
void mouseWheel_data();
void mouseWheel();
- void wheelClosingPopup();
+ void popupWheelHandling();
void layoutDirection();
void itemListPosition();
void separatorItem_data();
@@ -2066,9 +2066,9 @@ void tst_QComboBox::mouseWheel()
}
}
-void tst_QComboBox::wheelClosingPopup()
+void tst_QComboBox::popupWheelHandling()
{
- // QTBUG-40656, combo and other popups should close when the main window gets a wheel event.
+ // QTBUG-40656, QTBUG-42731 combo and other popups should not be affected by wheel events.
QScrollArea scrollArea;
scrollArea.move(300, 300);
QWidget *widget = new QWidget;
@@ -2087,9 +2087,12 @@ void tst_QComboBox::wheelClosingPopup()
QVERIFY(QTest::qWaitForWindowExposed(&scrollArea));
comboBox->showPopup();
QTRY_VERIFY(comboBox->view() && comboBox->view()->isVisible());
+ const QPoint popupPos = comboBox->view()->pos();
QWheelEvent event(QPointF(10, 10), WHEEL_DELTA, Qt::NoButton, Qt::NoModifier);
QVERIFY(QCoreApplication::sendEvent(scrollArea.windowHandle(), &event));
- QTRY_VERIFY(!comboBox->view()->isVisible());
+ QCoreApplication::processEvents();
+ QVERIFY(comboBox->view()->isVisible());
+ QCOMPARE(comboBox->view()->pos(), popupPos);
}
void tst_QComboBox::layoutDirection()
diff --git a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp
index fec79326c8..5b467f4f17 100644
--- a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp
+++ b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp
@@ -249,6 +249,7 @@ private slots:
void editInvalidText();
+ void charWithAltOrCtrlModifier_data();
void charWithAltOrCtrlModifier();
void inlineCompletion();
@@ -3224,19 +3225,35 @@ void tst_QLineEdit::editInvalidText()
testWidget->setValidator(0);
}
+Q_DECLARE_METATYPE(Qt::KeyboardModifiers)
+
+void tst_QLineEdit::charWithAltOrCtrlModifier_data()
+{
+ QTest::addColumn<Qt::KeyboardModifiers>("modifiers");
+ QTest::addColumn<bool>("textExpected");
+ QTest::newRow("no-modifiers") << Qt::KeyboardModifiers() << true;
+ // Ctrl, Ctrl+Shift: No text (QTBUG-35734)
+ QTest::newRow("ctrl") << Qt::KeyboardModifiers(Qt::ControlModifier)
+ << false;
+ QTest::newRow("ctrl-shift") << Qt::KeyboardModifiers(Qt::ShiftModifier | Qt::ControlModifier)
+ << false;
+ QTest::newRow("alt") << Qt::KeyboardModifiers(Qt::AltModifier) << true;
+ // Alt-Ctrl (Alt-Gr on German keyboards, Task 129098): Expect text
+ QTest::newRow("alt-ctrl") << (Qt::AltModifier | Qt::ControlModifier) << true;
+}
+
void tst_QLineEdit::charWithAltOrCtrlModifier()
{
+ QFETCH(Qt::KeyboardModifiers, modifiers);
+ QFETCH(bool, textExpected);
+
QLineEdit *testWidget = ensureTestWidget();
testWidget->clear();
- QCOMPARE(testWidget->text(), QString(""));
- QTest::keyPress(testWidget, Qt::Key_Plus);
- QCOMPARE(testWidget->text(), QString("+"));
- QTest::keyPress(testWidget, Qt::Key_Plus, Qt::ControlModifier);
- QCOMPARE(testWidget->text(), QString("++"));
- QTest::keyPress(testWidget, Qt::Key_Plus, Qt::AltModifier);
- QCOMPARE(testWidget->text(), QString("+++"));
- QTest::keyPress(testWidget, Qt::Key_Plus, Qt::AltModifier | Qt::ControlModifier);
- QCOMPARE(testWidget->text(), QString("++++"));
+ QVERIFY(testWidget->text().isEmpty());
+
+ QTest::keyPress(testWidget, Qt::Key_Plus, modifiers);
+ const QString expectedText = textExpected ? QLatin1String("+") : QString();
+ QCOMPARE(testWidget->text(), expectedText);
}
void tst_QLineEdit::leftKeyOnSelectedText()
diff --git a/tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp b/tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp
index cf495e2238..390b99c6e7 100644
--- a/tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp
+++ b/tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp
@@ -99,7 +99,8 @@ private slots:
#ifndef QT_NO_CLIPBOARD
void copyAndSelectAllInReadonly();
#endif
- void ctrlAltInput();
+ void charWithAltOrCtrlModifier_data();
+ void charWithAltOrCtrlModifier();
void noPropertiesOnDefaultTextEditCharFormat();
void setPlainTextShouldEmitTextChangedOnce();
void overwriteMode();
@@ -691,10 +692,34 @@ void tst_QPlainTextEdit::copyAndSelectAllInReadonly()
}
#endif
-void tst_QPlainTextEdit::ctrlAltInput()
+Q_DECLARE_METATYPE(Qt::KeyboardModifiers)
+
+// Test how QWidgetTextControlPrivate (used in QPlainTextEdit, QTextEdit)
+// handles input with modifiers.
+void tst_QPlainTextEdit::charWithAltOrCtrlModifier_data()
+{
+ QTest::addColumn<Qt::KeyboardModifiers>("modifiers");
+ QTest::addColumn<bool>("textExpected");
+
+ QTest::newRow("no-modifiers") << Qt::KeyboardModifiers() << true;
+ // Ctrl, Ctrl+Shift: No text (QTBUG-35734)
+ QTest::newRow("ctrl") << Qt::KeyboardModifiers(Qt::ControlModifier)
+ << false;
+ QTest::newRow("ctrl-shift") << Qt::KeyboardModifiers(Qt::ShiftModifier | Qt::ControlModifier)
+ << false;
+ QTest::newRow("alt") << Qt::KeyboardModifiers(Qt::AltModifier) << true;
+ // Alt-Ctrl (Alt-Gr on German keyboards, Task 129098): Expect text
+ QTest::newRow("alt-ctrl") << (Qt::AltModifier | Qt::ControlModifier) << true;
+}
+
+void tst_QPlainTextEdit::charWithAltOrCtrlModifier()
{
- QTest::keyClick(ed, Qt::Key_At, Qt::ControlModifier | Qt::AltModifier);
- QCOMPARE(ed->toPlainText(), QString("@"));
+ QFETCH(Qt::KeyboardModifiers, modifiers);
+ QFETCH(bool, textExpected);
+
+ QTest::keyClick(ed, Qt::Key_At, modifiers);
+ const QString expectedText = textExpected ? QLatin1String("@") : QString();
+ QCOMPARE(ed->toPlainText(), expectedText);
}
void tst_QPlainTextEdit::noPropertiesOnDefaultTextEditCharFormat()
diff --git a/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp b/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp
index 8a82ee433d..220185c04f 100644
--- a/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp
+++ b/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp
@@ -122,7 +122,6 @@ private slots:
#ifndef QT_NO_CLIPBOARD
void copyAndSelectAllInReadonly();
#endif
- void ctrlAltInput();
void noPropertiesOnDefaultTextEditCharFormat();
void setPlainTextShouldUseCurrentCharFormat();
void setPlainTextShouldEmitTextChangedOnce();
@@ -1042,12 +1041,6 @@ void tst_QTextEdit::copyAndSelectAllInReadonly()
}
#endif
-void tst_QTextEdit::ctrlAltInput()
-{
- QTest::keyClick(ed, Qt::Key_At, Qt::ControlModifier | Qt::AltModifier);
- QCOMPARE(ed->toPlainText(), QString("@"));
-}
-
void tst_QTextEdit::noPropertiesOnDefaultTextEditCharFormat()
{
// there should be no properties set on the default/initial char format