summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/widgets')
-rw-r--r--tests/auto/widgets/dialogs/qfiledialog/tst_qfiledialog.cpp1
-rw-r--r--tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp16
-rw-r--r--tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp16
-rw-r--r--tests/auto/widgets/dialogs/qfontdialog/tst_qfontdialog.cpp1
-rw-r--r--tests/auto/widgets/dialogs/qsidebar/tst_qsidebar.cpp3
-rw-r--r--tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp2
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp19
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp22
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp4
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsview/qgraphicsview.pro1
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp100
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp8
-rw-r--r--tests/auto/widgets/itemviews/qdirmodel/tst_qdirmodel.cpp6
-rw-r--r--tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp40
-rw-r--r--tests/auto/widgets/itemviews/qtableview/BLACKLIST2
-rw-r--r--tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp2
-rw-r--r--tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp25
-rw-r--r--tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp84
-rw-r--r--tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp14
-rw-r--r--tests/auto/widgets/kernel/qboxlayout/tst_qboxlayout.cpp2
-rw-r--r--tests/auto/widgets/kernel/qlayout/tst_qlayout.cpp2
-rw-r--r--tests/auto/widgets/kernel/qshortcut/tst_qshortcut.cpp40
-rw-r--r--tests/auto/widgets/kernel/qwidget/BLACKLIST9
-rw-r--r--tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp128
-rw-r--r--tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp6
-rw-r--r--tests/auto/widgets/styles/qstylesheetstyle/BLACKLIST2
-rw-r--r--tests/auto/widgets/widgets/qabstractslider/tst_qabstractslider.cpp5
-rw-r--r--tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp35
-rw-r--r--tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp61
-rw-r--r--tests/auto/widgets/widgets/qdial/tst_qdial.cpp8
-rw-r--r--tests/auto/widgets/widgets/qdialogbuttonbox/tst_qdialogbuttonbox.cpp4
-rw-r--r--tests/auto/widgets/widgets/qgroupbox/tst_qgroupbox.cpp24
-rw-r--r--tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp50
-rw-r--r--tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp18
-rw-r--r--tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp26
-rw-r--r--tests/auto/widgets/widgets/qmenu/BLACKLIST2
-rw-r--r--tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp22
-rw-r--r--tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp24
-rw-r--r--tests/auto/widgets/widgets/qopenglwidget/qopenglwidget.pro2
-rw-r--r--tests/auto/widgets/widgets/qopenglwidget/tst_qopenglwidget.cpp2
-rw-r--r--tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp46
-rw-r--r--tests/auto/widgets/widgets/qscrollbar/tst_qscrollbar.cpp8
-rw-r--r--tests/auto/widgets/widgets/qspinbox/tst_qspinbox.cpp15
-rw-r--r--tests/auto/widgets/widgets/qtabbar/tst_qtabbar.cpp81
-rw-r--r--tests/auto/widgets/widgets/qtabwidget/tst_qtabwidget.cpp33
-rw-r--r--tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp2
-rw-r--r--tests/auto/widgets/widgets/qtoolbar/tst_qtoolbar.cpp12
-rw-r--r--tests/auto/widgets/widgets/qtoolbutton/tst_qtoolbutton.cpp6
48 files changed, 743 insertions, 298 deletions
diff --git a/tests/auto/widgets/dialogs/qfiledialog/tst_qfiledialog.cpp b/tests/auto/widgets/dialogs/qfiledialog/tst_qfiledialog.cpp
index 029738652e..afb24bc528 100644
--- a/tests/auto/widgets/dialogs/qfiledialog/tst_qfiledialog.cpp
+++ b/tests/auto/widgets/dialogs/qfiledialog/tst_qfiledialog.cpp
@@ -1380,6 +1380,7 @@ void tst_QFiledialog::clearLineEdit()
fd.setFileMode(QFileDialog::AnyFile);
fd.show();
+ QVERIFY(QTest::qWaitForWindowExposed(&fd));
QLineEdit *lineEdit = fd.findChild<QLineEdit*>("fileNameEdit");
QVERIFY(lineEdit);
QCOMPARE(lineEdit->text(), QLatin1String("foo"));
diff --git a/tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp b/tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp
index 52354eda42..a947954a4e 100644
--- a/tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp
+++ b/tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp
@@ -571,14 +571,15 @@ void tst_QFileDialog2::task227304_proxyOnFileDialog()
dialog->close();
fd.close();
- QFileDialog fd2(0, "I should not crash with a proxy", tempDir.path(), 0);
+ QFileDialog fd2(0, "I should not crash with a proxy", tempDir.path(), {});
QSortFilterProxyModel *pm = new QSortFilterProxyModel;
fd2.setProxyModel(pm);
fd2.show();
QSidebar *sidebar = fd2.findChild<QSidebar*>("sidebar");
sidebar->setFocus();
sidebar->selectUrl(QUrl::fromLocalFile(QDir::homePath()));
- QTest::mouseClick(sidebar->viewport(), Qt::LeftButton, 0, sidebar->visualRect(sidebar->model()->index(1, 0)).center());
+ QTest::mouseClick(sidebar->viewport(), Qt::LeftButton, {},
+ sidebar->visualRect(sidebar->model()->index(1, 0)).center());
QTest::qWait(250);
//We shouldn't crash
}
@@ -613,7 +614,7 @@ void tst_QFileDialog2::task227930_correctNavigationKeyboardBehavior()
QVERIFY(list);
QTest::keyClick(list, Qt::Key_Down);
QTest::keyClick(list, Qt::Key_Return);
- QTest::mouseClick(list->viewport(), Qt::LeftButton,0);
+ QTest::mouseClick(list->viewport(), Qt::LeftButton, {});
QTest::keyClick(list, Qt::Key_Down);
QTest::keyClick(list, Qt::Key_Backspace);
QTest::keyClick(list, Qt::Key_Down);
@@ -972,7 +973,8 @@ void tst_QFileDialog2::task251321_sideBarHiddenEntries()
QVERIFY(sidebar);
sidebar->setFocus();
sidebar->selectUrl(QUrl::fromLocalFile(hiddenSubDir.absolutePath()));
- QTest::mouseClick(sidebar->viewport(), Qt::LeftButton, 0, sidebar->visualRect(sidebar->model()->index(0, 0)).center());
+ QTest::mouseClick(sidebar->viewport(), Qt::LeftButton, {},
+ sidebar->visualRect(sidebar->model()->index(0, 0)).center());
// give the background processes more time on windows mobile
QTest::qWait(250);
@@ -1027,7 +1029,8 @@ void tst_QFileDialog2::task251341_sideBarRemoveEntries()
sidebar->setFocus();
//We enter in the first bookmark
sidebar->selectUrl(QUrl::fromLocalFile(testSubDir.absolutePath()));
- QTest::mouseClick(sidebar->viewport(), Qt::LeftButton, 0, sidebar->visualRect(sidebar->model()->index(0, 0)).center());
+ QTest::mouseClick(sidebar->viewport(), Qt::LeftButton, {},
+ sidebar->visualRect(sidebar->model()->index(0, 0)).center());
QFileSystemModel *model = fd.findChild<QFileSystemModel*>("qt_filesystem_model");
QVERIFY(model);
@@ -1040,7 +1043,8 @@ void tst_QFileDialog2::task251341_sideBarRemoveEntries()
sidebar->setFocus();
//We enter in the second bookmark which is invalid
sidebar->selectUrl(QUrl::fromLocalFile("NotFound"));
- QTest::mouseClick(sidebar->viewport(), Qt::LeftButton, 0, sidebar->visualRect(sidebar->model()->index(1, 0)).center());
+ QTest::mouseClick(sidebar->viewport(), Qt::LeftButton, {},
+ sidebar->visualRect(sidebar->model()->index(1, 0)).center());
//We fallback to root because the entry in the bookmark is invalid
QCOMPARE(model->rowCount(model->index("NotFound")), model->rowCount(model->index(model->rootPath())));
diff --git a/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp b/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp
index f910b12cc6..7398cc103e 100644
--- a/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp
+++ b/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp
@@ -1030,15 +1030,13 @@ void tst_QFileSystemModel::dirsBeforeFiles()
// Wait for model to be notified by the file system watcher
QTRY_COMPARE(model->rowCount(root), 2 * itemCount);
- // ensure that no file occurs before a directory
- for (int i = 0; i < model->rowCount(root); ++i) {
+ // Ensure that no file occurs before any directory:
+ for (int i = 1; i < model->rowCount(root); ++i) {
#ifndef Q_OS_MAC
- QVERIFY(i == 0 ||
- !(model->fileInfo(model->index(i - 1, 0, root)).isFile()
+ QVERIFY(!(model->fileInfo(model->index(i - 1, 0, root)).isFile()
&& model->fileInfo(model->index(i, 0, root)).isDir()));
#else
- QVERIFY(i == 0 ||
- model->fileInfo(model->index(i - 1, 0, root)).fileName() <
+ QVERIFY(model->fileInfo(model->index(i - 1, 0, root)).fileName() <
model->fileInfo(model->index(i, 0, root)).fileName());
#endif
}
@@ -1048,7 +1046,7 @@ void tst_QFileSystemModel::roleNames_data()
{
QTest::addColumn<int>("role");
QTest::addColumn<QByteArray>("roleName");
- QTest::newRow("decoration") << int(Qt::DecorationRole) << QByteArray("decoration");
+ QTest::newRow("decoration") << int(Qt::DecorationRole) << QByteArray("fileIcon");
QTest::newRow("display") << int(Qt::DisplayRole) << QByteArray("display");
QTest::newRow("fileIcon") << int(QFileSystemModel::FileIconRole) << QByteArray("fileIcon");
QTest::newRow("filePath") << int(QFileSystemModel::FilePathRole) << QByteArray("filePath");
@@ -1065,8 +1063,8 @@ void tst_QFileSystemModel::roleNames()
QVERIFY(roles.contains(role));
QFETCH(QByteArray, roleName);
- QList<QByteArray> values = roles.values(role);
- QVERIFY(values.contains(roleName));
+ QCOMPARE(roles.values(role).count(), 1);
+ QCOMPARE(roles.value(role), roleName);
}
static inline QByteArray permissionRowName(bool readOnly, int permission)
diff --git a/tests/auto/widgets/dialogs/qfontdialog/tst_qfontdialog.cpp b/tests/auto/widgets/dialogs/qfontdialog/tst_qfontdialog.cpp
index 83bb4dc08f..f5358ceb93 100644
--- a/tests/auto/widgets/dialogs/qfontdialog/tst_qfontdialog.cpp
+++ b/tests/auto/widgets/dialogs/qfontdialog/tst_qfontdialog.cpp
@@ -228,6 +228,7 @@ void tst_QFontDialog::qtbug_41513_stylesheetStyle()
// The fontdialog sets the styleName, when the fontdatabase knows the style name.
resultFont.setStyleName(testFont.styleName());
+ testFont.setFamilies(QStringList(testFont.family()));
QCOMPARE(resultFont, testFont);
// reset stylesheet
diff --git a/tests/auto/widgets/dialogs/qsidebar/tst_qsidebar.cpp b/tests/auto/widgets/dialogs/qsidebar/tst_qsidebar.cpp
index 9c5e226731..8276d3ea9d 100644
--- a/tests/auto/widgets/dialogs/qsidebar/tst_qsidebar.cpp
+++ b/tests/auto/widgets/dialogs/qsidebar/tst_qsidebar.cpp
@@ -190,7 +190,8 @@ void tst_QSidebar::goToUrl()
qsidebar.show();
QSignalSpy spy(&qsidebar, SIGNAL(goToUrl(QUrl)));
- QTest::mousePress(qsidebar.viewport(), Qt::LeftButton, 0, qsidebar.visualRect(qsidebar.model()->index(0, 0)).center());
+ QTest::mousePress(qsidebar.viewport(), Qt::LeftButton, {},
+ qsidebar.visualRect(qsidebar.model()->index(0, 0)).center());
#ifdef Q_OS_WINRT
QEXPECT_FAIL("", "Fails on WinRT - QTBUG-68297", Abort);
#endif
diff --git a/tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp b/tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp
index 7fda59a29b..dae274a8b6 100644
--- a/tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp
+++ b/tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp
@@ -238,7 +238,7 @@ void tst_QWizard::setButtonLayout()
QWizard wizard;
wizard.setWizardStyle(QWizard::ClassicStyle);
- wizard.setOptions(0);
+ wizard.setOptions({});
wizard.setButtonLayout(layout);
wizard.show();
qApp->processEvents();
diff --git a/tests/auto/widgets/graphicsview/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp b/tests/auto/widgets/graphicsview/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp
index ad17c2a557..4d5857c3c8 100644
--- a/tests/auto/widgets/graphicsview/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp
@@ -159,12 +159,7 @@ public:
struct ItemDesc
{
ItemDesc(int row, int col)
- : m_pos(qMakePair(row, col)),
- m_rowSpan(1),
- m_colSpan(1),
- m_sizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred)),
- m_align(0),
- m_fnConstraint(0)
+ : m_pos(qMakePair(row, col))
{
}
@@ -278,17 +273,17 @@ struct ItemDesc
//private:
QPair<int,int> m_pos; // row,col
- int m_rowSpan;
- int m_colSpan;
- QSizePolicy m_sizePolicy;
+ int m_rowSpan = 1;
+ int m_colSpan = 1;
+ QSizePolicy m_sizePolicy{QSizePolicy::Preferred, QSizePolicy::Preferred};
// Initializer {} is a workaround for gcc bug 68949
QSizeF m_sizeHints[Qt::NSizeHints] {};
QSizeF m_sizes[Qt::NSizeHints] {};
Qt::Alignment m_align;
- Qt::Orientation m_constraintOrientation;
- QSizeF (*m_fnConstraint)(Qt::SizeHint, const QSizeF &);
+ Qt::Orientation m_constraintOrientation = Qt::Horizontal;
+ QSizeF (*m_fnConstraint)(Qt::SizeHint, const QSizeF &) = nullptr;
};
typedef QList<ItemDesc> ItemList;
@@ -340,7 +335,7 @@ void tst_QGraphicsGridLayout::qgraphicsgridlayout()
layout.setColumnStretchFactor(0, 0);
layout.setGeometry(QRectF());
layout.setHorizontalSpacing(0);
- layout.setRowAlignment(0, 0);
+ layout.setRowAlignment(0, { });
layout.setRowFixedHeight(0, 0);
layout.setRowMaximumHeight(0, 0);
layout.setRowMinimumHeight(0, 0);
diff --git a/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp
index 0fb95b9f34..0010718d3e 100644
--- a/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp
@@ -1914,7 +1914,7 @@ void tst_QGraphicsItem::acceptedMouseButtons()
event.setScenePos(QPointF(0, 0));
QCoreApplication::sendEvent(&scene, &event);
QCOMPARE(scene.mouseGrabberItem(), item2);
- item2->setAcceptedMouseButtons(nullptr);
+ item2->setAcceptedMouseButtons({ });
QCOMPARE(scene.mouseGrabberItem(), nullptr);
QCoreApplication::sendEvent(&scene, &event);
QCOMPARE(scene.mouseGrabberItem(), item1);
@@ -8071,7 +8071,7 @@ void tst_QGraphicsItem::itemUsesExtendedStyleOption()
void tst_QGraphicsItem::itemSendsGeometryChanges()
{
ItemChangeTester item;
- item.setFlags(nullptr);
+ item.setFlags({ });
item.clear();
QTransform x = QTransform().rotate(45);
@@ -8299,20 +8299,14 @@ void tst_QGraphicsItem::sorting()
_paintedItems.clear();
- view.viewport()->repaint();
-#if defined(Q_OS_MAC)
- // There's no difference between repaint and update on the Mac,
- // so we have to process events here to make sure we get the event.
- QTest::qWait(100);
-#endif
-
+ view.viewport()->update();
const GraphicsItems expected{grid[0][0], grid[0][1], grid[0][2], grid[0][3],
grid[1][0], grid[1][1], grid[1][2], grid[1][3],
grid[2][0], grid[2][1], grid[2][2], grid[2][3],
grid[3][0], grid[3][1], grid[3][2], grid[3][3],
grid[4][0], grid[4][1], grid[4][2], grid[4][3],
item1, item2};
- QCOMPARE(_paintedItems, expected);
+ QTRY_COMPARE(_paintedItems, expected);
}
void tst_QGraphicsItem::itemHasNoContents()
@@ -8339,13 +8333,7 @@ void tst_QGraphicsItem::itemHasNoContents()
_paintedItems.clear();
- view.viewport()->repaint();
-#ifdef Q_OS_MAC
- // There's no difference between update() and repaint() on the Mac,
- // so we have to process events here to make sure we get the event.
- QTest::qWait(10);
-#endif
-
+ view.viewport()->update();
QTRY_COMPARE(_paintedItems, GraphicsItems{item2});
}
diff --git a/tests/auto/widgets/graphicsview/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp b/tests/auto/widgets/graphicsview/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp
index 1c8faa6b38..817f67540e 100644
--- a/tests/auto/widgets/graphicsview/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp
@@ -245,7 +245,7 @@ void tst_QGraphicsLinearLayout::alignment()
widget->setLayout(&layout);
static const Qt::Alignment alignmentsToTest[] = {
- (Qt::Alignment)0,
+ Qt::Alignment{},
Qt::AlignLeft,
Qt::AlignRight,
Qt::AlignHCenter,
@@ -253,7 +253,7 @@ void tst_QGraphicsLinearLayout::alignment()
Qt::AlignBottom,
Qt::AlignVCenter,
Qt::AlignCenter,
- (Qt::Alignment)0,
+ Qt::Alignment{},
Qt::AlignLeft,
Qt::AlignRight,
Qt::AlignHCenter,
diff --git a/tests/auto/widgets/graphicsview/qgraphicsview/qgraphicsview.pro b/tests/auto/widgets/graphicsview/qgraphicsview/qgraphicsview.pro
index 8ed19697a4..e95cdcf7d8 100644
--- a/tests/auto/widgets/graphicsview/qgraphicsview/qgraphicsview.pro
+++ b/tests/auto/widgets/graphicsview/qgraphicsview/qgraphicsview.pro
@@ -4,6 +4,7 @@ TARGET = tst_qgraphicsview
QT += widgets widgets-private testlib
QT += core-private gui-private testlib-private
+qtConfig(opengl): QT += opengl
SOURCES += tst_qgraphicsview.cpp tst_qgraphicsview_2.cpp
HEADERS += tst_qgraphicsview.h
diff --git a/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp b/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp
index cf8066c7a3..d521c6f11c 100644
--- a/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp
@@ -48,8 +48,8 @@
#include <QtWidgets/QBoxLayout>
#include <QtWidgets/QStyle>
#include <QtWidgets/QPushButton>
-#ifndef QT_NO_OPENGL
-#include <QtWidgets/QOpenGLWidget>
+#if QT_CONFIG(opengl)
+#include <QtOpenGL/QOpenGLWidget>
#endif
#include <private/qgraphicsscene_p.h>
#include <private/qgraphicsview_p.h>
@@ -81,21 +81,21 @@ Q_DECLARE_METATYPE(ScrollBarCount)
static void sendMousePress(QWidget *widget, const QPoint &point, Qt::MouseButton button = Qt::LeftButton)
{
- QMouseEvent event(QEvent::MouseButtonPress, point, widget->mapToGlobal(point), button, 0, 0);
+ QMouseEvent event(QEvent::MouseButtonPress, point, widget->mapToGlobal(point), button, {}, {});
QApplication::sendEvent(widget, &event);
}
-static void sendMouseMove(QWidget *widget, const QPoint &point, Qt::MouseButton button = Qt::NoButton, Qt::MouseButtons buttons = 0)
+static void sendMouseMove(QWidget *widget, const QPoint &point, Qt::MouseButton button = Qt::NoButton, Qt::MouseButtons buttons = {})
{
QTest::mouseMove(widget, point);
- QMouseEvent event(QEvent::MouseMove, point, widget->mapToGlobal(point), button, buttons, 0);
+ QMouseEvent event(QEvent::MouseMove, point, widget->mapToGlobal(point), button, buttons, {});
QApplication::sendEvent(widget, &event);
QApplication::processEvents();
}
static void sendMouseRelease(QWidget *widget, const QPoint &point, Qt::MouseButton button = Qt::LeftButton)
{
- QMouseEvent event(QEvent::MouseButtonRelease, point, widget->mapToGlobal(point), button, 0, 0);
+ QMouseEvent event(QEvent::MouseButtonRelease, point, widget->mapToGlobal(point), button, {}, {});
QApplication::sendEvent(widget, &event);
}
@@ -154,7 +154,7 @@ private slots:
void sceneRect_growing();
void setSceneRect();
void viewport();
-#ifndef QT_NO_OPENGL
+#if QT_CONFIG(opengl)
void openGLViewport();
#endif
void dragMode_scrollHand();
@@ -343,7 +343,7 @@ void tst_QGraphicsView::renderHints()
QCOMPARE(view.renderHints(), QPainter::TextAntialiasing);
view.setRenderHint(QPainter::Antialiasing);
QCOMPARE(view.renderHints(), QPainter::TextAntialiasing | QPainter::Antialiasing);
- view.setRenderHints(0);
+ view.setRenderHints({});
QCOMPARE(view.renderHints(), 0);
TestItem *item = new TestItem;
@@ -358,13 +358,13 @@ void tst_QGraphicsView::renderHints()
QCOMPARE(item->hints, 0);
view.show();
QVERIFY(QTest::qWaitForWindowExposed(&view));
- view.repaint();
+ view.update();
QTRY_COMPARE(item->hints, view.renderHints());
view.setRenderHints(QPainter::Antialiasing);
QCOMPARE(view.renderHints(), QPainter::Antialiasing);
- view.repaint();
+ view.update();
QTRY_COMPARE(item->hints, view.renderHints());
}
@@ -380,7 +380,7 @@ void tst_QGraphicsView::alignment()
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 3; ++j) {
- Qt::Alignment alignment = 0;
+ Qt::Alignment alignment;
switch (i) {
case 0:
alignment |= Qt::AlignLeft;
@@ -659,7 +659,7 @@ void tst_QGraphicsView::viewport()
QVERIFY(QTest::qWaitForWindowExposed(&view));
}
-#ifndef QT_NO_OPENGL
+#if QT_CONFIG(opengl)
void tst_QGraphicsView::openGLViewport()
{
if (!QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::OpenGL))
@@ -740,7 +740,7 @@ void tst_QGraphicsView::dragMode_scrollHand()
// Press
QMouseEvent event(QEvent::MouseButtonPress,
view.viewport()->rect().center(),
- Qt::LeftButton, Qt::LeftButton, 0);
+ Qt::LeftButton, Qt::LeftButton, {});
event.setAccepted(true);
QApplication::sendEvent(view.viewport(), &event);
QVERIFY(event.isAccepted());
@@ -757,7 +757,7 @@ void tst_QGraphicsView::dragMode_scrollHand()
// Move
QMouseEvent event(QEvent::MouseMove,
view.viewport()->rect().center() + QPoint(10, 0),
- Qt::LeftButton, Qt::LeftButton, 0);
+ Qt::LeftButton, Qt::LeftButton, {});
event.setAccepted(true);
QApplication::sendEvent(view.viewport(), &event);
QVERIFY(event.isAccepted());
@@ -769,7 +769,7 @@ void tst_QGraphicsView::dragMode_scrollHand()
// Move
QMouseEvent event(QEvent::MouseMove,
view.viewport()->rect().center() + QPoint(10, 10),
- Qt::LeftButton, Qt::LeftButton, 0);
+ Qt::LeftButton, Qt::LeftButton, {});
event.setAccepted(true);
QApplication::sendEvent(view.viewport(), &event);
QVERIFY(event.isAccepted());
@@ -783,7 +783,7 @@ void tst_QGraphicsView::dragMode_scrollHand()
// Release
QMouseEvent event(QEvent::MouseButtonRelease,
view.viewport()->rect().center() + QPoint(10, 10),
- Qt::LeftButton, Qt::LeftButton, 0);
+ Qt::LeftButton, Qt::LeftButton, {});
event.setAccepted(true);
QApplication::sendEvent(view.viewport(), &event);
QVERIFY(event.isAccepted());
@@ -805,14 +805,14 @@ void tst_QGraphicsView::dragMode_scrollHand()
// Press
QMouseEvent event(QEvent::MouseButtonPress,
view.viewport()->rect().center() + QPoint(10, 10),
- Qt::LeftButton, Qt::LeftButton, 0);
+ Qt::LeftButton, Qt::LeftButton, {});
QApplication::sendEvent(view.viewport(), &event);
}
{
// Release
QMouseEvent event(QEvent::MouseButtonRelease,
view.viewport()->rect().center() + QPoint(10, 10),
- Qt::LeftButton, Qt::LeftButton, 0);
+ Qt::LeftButton, Qt::LeftButton, {});
QApplication::sendEvent(view.viewport(), &event);
}
@@ -862,7 +862,7 @@ void tst_QGraphicsView::dragMode_rubberBand()
// Press
QMouseEvent event(QEvent::MouseButtonPress,
view.viewport()->rect().center(),
- Qt::LeftButton, Qt::LeftButton, 0);
+ Qt::LeftButton, Qt::LeftButton, {});
event.setAccepted(true);
QApplication::sendEvent(view.viewport(), &event);
QVERIFY(event.isAccepted());
@@ -877,7 +877,7 @@ void tst_QGraphicsView::dragMode_rubberBand()
// Move
QMouseEvent event(QEvent::MouseMove,
view.viewport()->rect().center() + QPoint(100, 0),
- Qt::LeftButton, Qt::LeftButton, 0);
+ Qt::LeftButton, Qt::LeftButton, {});
event.setAccepted(true);
QApplication::sendEvent(view.viewport(), &event);
QVERIFY(event.isAccepted());
@@ -892,7 +892,7 @@ void tst_QGraphicsView::dragMode_rubberBand()
// Move
QMouseEvent event(QEvent::MouseMove,
view.viewport()->rect().center() + QPoint(100, 100),
- Qt::LeftButton, Qt::LeftButton, 0);
+ Qt::LeftButton, Qt::LeftButton, {});
event.setAccepted(true);
QApplication::sendEvent(view.viewport(), &event);
QVERIFY(event.isAccepted());
@@ -904,7 +904,7 @@ void tst_QGraphicsView::dragMode_rubberBand()
// Release
QMouseEvent event(QEvent::MouseButtonRelease,
view.viewport()->rect().center() + QPoint(100, 100),
- Qt::LeftButton, Qt::LeftButton, 0);
+ Qt::LeftButton, Qt::LeftButton, {});
event.setAccepted(true);
QApplication::sendEvent(view.viewport(), &event);
QVERIFY(event.isAccepted());
@@ -1009,7 +1009,8 @@ void tst_QGraphicsView::rubberBandExtendSelection()
// now rubberband with modifier key
{
QPoint clickPoint = view.mapFromScene(20, 115);
- QMouseEvent event(QEvent::MouseButtonPress, clickPoint, view.viewport()->mapToGlobal(clickPoint), Qt::LeftButton, 0, Qt::ControlModifier);
+ QMouseEvent event(QEvent::MouseButtonPress, clickPoint, view.viewport()->mapToGlobal(clickPoint),
+ Qt::LeftButton, {}, Qt::ControlModifier);
QApplication::sendEvent(view.viewport(), &event);
}
sendMouseMove(view.viewport(), view.mapFromScene(20, 300), Qt::LeftButton, Qt::LeftButton);
@@ -2162,14 +2163,14 @@ void tst_QGraphicsView::sendEvent()
QCOMPARE(item->events.at(item->events.size() - 1), QEvent::GraphicsSceneMousePress);
QMouseEvent mouseMoveEvent(QEvent::MouseMove, itemPoint, view.viewport()->mapToGlobal(itemPoint),
- Qt::LeftButton, Qt::LeftButton, 0);
+ Qt::LeftButton, Qt::LeftButton, {});
QApplication::sendEvent(view.viewport(), &mouseMoveEvent);
QCOMPARE(item->events.size(), 5);
QCOMPARE(item->events.last(), QEvent::GraphicsSceneMouseMove);
QMouseEvent mouseReleaseEvent(QEvent::MouseButtonRelease, itemPoint,
view.viewport()->mapToGlobal(itemPoint),
- Qt::LeftButton, 0, 0);
+ Qt::LeftButton, {}, {});
QApplication::sendEvent(view.viewport(), &mouseReleaseEvent);
QCOMPARE(item->events.size(), 7);
QCOMPARE(item->events.at(item->events.size() - 2), QEvent::GraphicsSceneMouseRelease);
@@ -2630,13 +2631,12 @@ void tst_QGraphicsView::optimizationFlags()
class MessUpPainterItem : public QGraphicsRectItem
{
public:
- MessUpPainterItem(const QRectF &rect) : QGraphicsRectItem(rect), dirtyPainter(false)
- { }
-
- bool dirtyPainter;
-
+ using QGraphicsRectItem::QGraphicsRectItem;
+ bool dirtyPainter = false;
+ bool receivedPaintEvent = false;
void paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *w)
{
+ receivedPaintEvent = true;
dirtyPainter = (painter->pen().color() != w->palette().color(w->foregroundRole()));
painter->setPen(Qt::red);
}
@@ -2674,18 +2674,22 @@ void tst_QGraphicsView::optimizationFlags_dontSavePainterState()
QGraphicsView view(&scene);
view.show();
QVERIFY(QTest::qWaitForWindowExposed(&view));
- view.viewport()->repaint();
+ parent->receivedPaintEvent = false;
+ child->receivedPaintEvent = false;
+ view.viewport()->update();
+ QTRY_VERIFY(parent->receivedPaintEvent);
+ QTRY_VERIFY(child->receivedPaintEvent);
QVERIFY(!parent->dirtyPainter);
QVERIFY(!child->dirtyPainter);
view.setOptimizationFlags(QGraphicsView::DontSavePainterState);
- view.viewport()->repaint();
+ parent->receivedPaintEvent = false;
+ child->receivedPaintEvent = false;
+ view.viewport()->update();
-#ifdef Q_OS_MAC
- // Repaint on OS X actually does require spinning the event loop.
- QTest::qWait(100);
-#endif
+ QTRY_VERIFY(parent->receivedPaintEvent);
+ QTRY_VERIFY(child->receivedPaintEvent);
QVERIFY(!parent->dirtyPainter);
QVERIFY(child->dirtyPainter);
@@ -2752,7 +2756,7 @@ void tst_QGraphicsView::optimizationFlags_dontSavePainterState2()
QVERIFY(QTest::qWaitForWindowExposed(&view));
// Make sure the view is repainted; otherwise the tests below will fail.
- view.viewport()->repaint();
+ view.viewport()->update();
QTRY_VERIFY(view.painted);
// Make sure the painter's world transform is preserved after drawItems.
@@ -3283,7 +3287,7 @@ void tst_QGraphicsView::task186827_deleteReplayedItem()
QCOMPARE(view.mouseMoves, 0);
{
- QMouseEvent event(QEvent::MouseMove, view.mapFromScene(25, 25), Qt::NoButton, 0, 0);
+ QMouseEvent event(QEvent::MouseMove, view.mapFromScene(25, 25), Qt::NoButton, {}, {});
QApplication::sendEvent(view.viewport(), &event);
}
QCOMPARE(view.mouseMoves, 1);
@@ -3291,7 +3295,7 @@ void tst_QGraphicsView::task186827_deleteReplayedItem()
QTRY_COMPARE(view.mouseMoves, 1);
QTest::qWait(25);
{
- QMouseEvent event(QEvent::MouseMove, view.mapFromScene(25, 25), Qt::NoButton, 0, 0);
+ QMouseEvent event(QEvent::MouseMove, view.mapFromScene(25, 25), Qt::NoButton, {}, {});
QApplication::sendEvent(view.viewport(), &event);
}
QCOMPARE(view.mouseMoves, 2);
@@ -3337,8 +3341,8 @@ void tst_QGraphicsView::task210599_unsetDragWhileDragging()
// Enable and do a drag
{
view.setDragMode(QGraphicsView::ScrollHandDrag);
- QMouseEvent press(QEvent::MouseButtonPress, origPos, Qt::LeftButton, 0, 0);
- QMouseEvent move(QEvent::MouseMove, step1Pos, Qt::LeftButton, 0, 0);
+ QMouseEvent press(QEvent::MouseButtonPress, origPos, Qt::LeftButton, {}, {});
+ QMouseEvent move(QEvent::MouseMove, step1Pos, Qt::LeftButton, {}, {});
QApplication::sendEvent(view.viewport(), &press);
QApplication::sendEvent(view.viewport(), &move);
}
@@ -3346,7 +3350,7 @@ void tst_QGraphicsView::task210599_unsetDragWhileDragging()
// unset drag and release mouse, inverse order
{
view.setDragMode(QGraphicsView::NoDrag);
- QMouseEvent release(QEvent::MouseButtonRelease, step1Pos, Qt::LeftButton, 0, 0);
+ QMouseEvent release(QEvent::MouseButtonRelease, step1Pos, Qt::LeftButton, {}, {});
QApplication::sendEvent(view.viewport(), &release);
}
@@ -3355,7 +3359,7 @@ void tst_QGraphicsView::task210599_unsetDragWhileDragging()
// reset drag, and move mouse without holding button down.
{
view.setDragMode(QGraphicsView::ScrollHandDrag);
- QMouseEvent move(QEvent::MouseMove, step2Pos, Qt::LeftButton, 0, 0);
+ QMouseEvent move(QEvent::MouseMove, step2Pos, Qt::LeftButton, {}, {});
QApplication::sendEvent(view.viewport(), &move);
}
@@ -3806,7 +3810,7 @@ void tst_QGraphicsView::mouseTracking2()
EventSpy spy(&scene, QEvent::GraphicsSceneMouseMove);
QCOMPARE(spy.count(), 0);
QMouseEvent event(QEvent::MouseMove,view.viewport()->rect().center(), Qt::NoButton,
- Qt::MouseButtons(Qt::NoButton), 0);
+ Qt::MouseButtons(Qt::NoButton), {});
QApplication::sendEvent(view.viewport(), &event);
QCOMPARE(spy.count(), 1);
}
@@ -4731,14 +4735,12 @@ void tst_QGraphicsView::QTBUG_5859_exposedRect()
QGraphicsView view(&scene);
view.scale(4.15, 4.15);
view.showNormal();
- qApp->setActiveWindow(&view);
+ QApplication::setActiveWindow(&view);
QVERIFY(QTest::qWaitForWindowExposed(&view));
QVERIFY(QTest::qWaitForWindowActive(&view));
- view.viewport()->repaint(10,10,20,20);
- QApplication::processEvents();
-
- QCOMPARE(item.lastExposedRect, scene.lastBackgroundExposedRect);
+ view.viewport()->update(10,10,20,20);
+ QTRY_COMPARE(item.lastExposedRect, scene.lastBackgroundExposedRect);
}
#ifndef QT_NO_CURSOR
diff --git a/tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp b/tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp
index d3477be986..e42640c066 100644
--- a/tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp
@@ -174,7 +174,7 @@ private slots:
// Subclass that exposes the protected functions.
class SubQGraphicsWidget : public QGraphicsWidget {
public:
- SubQGraphicsWidget(QGraphicsItem *parent = 0, Qt::WindowFlags windowFlags = 0)
+ SubQGraphicsWidget(QGraphicsItem *parent = 0, Qt::WindowFlags windowFlags = { })
: QGraphicsWidget(parent, windowFlags), eventCount(0)
{ }
@@ -254,7 +254,7 @@ protected:
class SizeHinter : public QGraphicsWidget
{
public:
- SizeHinter(QGraphicsItem *parent = 0, Qt::WindowFlags wFlags = 0,
+ SizeHinter(QGraphicsItem *parent = 0, Qt::WindowFlags wFlags = { },
const QSizeF &min = QSizeF(5,5),
const QSizeF &pref = QSizeF(50, 50),
const QSizeF &max = QSizeF(500, 500))
@@ -1186,7 +1186,7 @@ void tst_QGraphicsWidget::layoutDirection()
for (int i = 0; i < children.count(); ++i) {
QTRY_COMPARE(children[i]->layoutDirection(), layoutDirection);
QTRY_COMPARE(children[i]->testAttribute(Qt::WA_SetLayoutDirection), false);
- view->repaint();
+ view->update();
QTRY_COMPARE(children[i]->m_painterLayoutDirection, layoutDirection);
}
}
@@ -2580,7 +2580,7 @@ void tst_QGraphicsWidget::shortcutsDeletion()
class MessUpPainterWidget : public QGraphicsWidget
{
public:
- MessUpPainterWidget(QGraphicsItem * parent = 0, Qt::WindowFlags wFlags = 0)
+ MessUpPainterWidget(QGraphicsItem * parent = 0, Qt::WindowFlags wFlags = { })
: QGraphicsWidget(parent, wFlags)
{}
diff --git a/tests/auto/widgets/itemviews/qdirmodel/tst_qdirmodel.cpp b/tests/auto/widgets/itemviews/qdirmodel/tst_qdirmodel.cpp
index 5097f2e356..546b2ab3a8 100644
--- a/tests/auto/widgets/itemviews/qdirmodel/tst_qdirmodel.cpp
+++ b/tests/auto/widgets/itemviews/qdirmodel/tst_qdirmodel.cpp
@@ -697,7 +697,7 @@ void tst_QDirModel::roleNames_data()
{
QTest::addColumn<int>("role");
QTest::addColumn<QByteArray>("roleName");
- QTest::newRow("decoration") << int(Qt::DecorationRole) << QByteArray("decoration");
+ QTest::newRow("decoration") << int(Qt::DecorationRole) << QByteArray("fileIcon");
QTest::newRow("display") << int(Qt::DisplayRole) << QByteArray("display");
QTest::newRow("fileIcon") << int(QDirModel::FileIconRole) << QByteArray("fileIcon");
QTest::newRow("filePath") << int(QDirModel::FilePathRole) << QByteArray("filePath");
@@ -713,8 +713,8 @@ void tst_QDirModel::roleNames()
QVERIFY(roles.contains(role));
QFETCH(QByteArray, roleName);
- QList<QByteArray> values = roles.values(role);
- QVERIFY(values.contains(roleName));
+ QCOMPARE(roles.values(role).count(), 1);
+ QCOMPARE(roles.value(role), roleName);
}
diff --git a/tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp b/tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp
index cb083fdcbe..67d8764b61 100644
--- a/tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp
+++ b/tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp
@@ -177,8 +177,9 @@ void tst_QListWidget::moveRowsInvalid_data()
result->addItems({"A", "B", "C", "D", "E", "F"});
return result;
};
+ constexpr int rowCount = 6;
- QTest::addRow("destination_equal_source") << createWidget() << QModelIndex() << 0 << 1 << QModelIndex() << 1;
+ QTest::addRow("destination_equal_source") << createWidget() << QModelIndex() << 0 << 1 << QModelIndex() << 0;
QTest::addRow("count_equal_0") << createWidget() << QModelIndex() << 0 << 0 << QModelIndex() << 2;
QListWidget* tempWidget = createWidget();
QTest::addRow("move_child") << tempWidget << tempWidget->model()->index(0, 0) << 0 << 1 << QModelIndex() << 2;
@@ -187,10 +188,11 @@ void tst_QListWidget::moveRowsInvalid_data()
QTest::addRow("negative_count") << createWidget() << QModelIndex() << 0 << -1 << QModelIndex() << 2;
QTest::addRow("negative_source_row") << createWidget() << QModelIndex() << -1 << 1 << QModelIndex() << 2;
QTest::addRow("negative_destination_row") << createWidget() << QModelIndex() << 0 << 1 << QModelIndex() << -1;
- QTest::addRow("source_row_equal_rowCount") << createWidget() << QModelIndex() << 6 << 1 << QModelIndex() << 1;
- QTest::addRow("destination_row_greater_rowCount") << createWidget() << QModelIndex() << 0 << 1 << QModelIndex() << 6 + 1;
+ QTest::addRow("source_row_equal_rowCount") << createWidget() << QModelIndex() << rowCount << 1 << QModelIndex() << 1;
+ QTest::addRow("source_row_equal_destination_row") << createWidget() << QModelIndex() << 2 << 1 << QModelIndex() << 2;
+ QTest::addRow("source_row_equal_destination_row_plus1") << createWidget() << QModelIndex() << 2 << 1 << QModelIndex() << 3;
+ QTest::addRow("destination_row_greater_rowCount") << createWidget() << QModelIndex() << 0 << 1 << QModelIndex() << rowCount + 1;
QTest::addRow("move_row_within_source_range") << createWidget() << QModelIndex() << 0 << 3 << QModelIndex() << 2;
- QTest::addRow("destination_row_before_0") << createWidget() << QModelIndex() << 1 << 1 << QModelIndex() << 0;
}
void tst_QListWidget::moveRowsInvalid()
@@ -221,20 +223,20 @@ void tst_QListWidget::moveRows_data()
QTest::newRow("1_Item_from_top_to_middle") << 0 << 1 << 3 << QStringList{"B", "C", "A", "D", "E", "F"};
QTest::newRow("1_Item_from_top_to_bottom") << 0 << 1 << 6 << QStringList{"B", "C", "D", "E", "F", "A"};
- QTest::newRow("1_Item_from_middle_to_top") << 2 << 1 << 1 << QStringList{"C", "A", "B", "D", "E", "F"};
- QTest::newRow("1_Item_from_bottom_to_middle") << 5 << 1 << 3 << QStringList{"A", "B", "F", "C", "D", "E"};
- QTest::newRow("1_Item_from_bottom to_top") << 5 << 1 << 1 << QStringList{"F", "A", "B", "C", "D", "E"};
+ QTest::newRow("1_Item_from_middle_to_top") << 2 << 1 << 0 << QStringList{"C", "A", "B", "D", "E", "F"};
+ QTest::newRow("1_Item_from_bottom_to_middle") << 5 << 1 << 2 << QStringList{"A", "B", "F", "C", "D", "E"};
+ QTest::newRow("1_Item_from_bottom to_top") << 5 << 1 << 0 << QStringList{"F", "A", "B", "C", "D", "E"};
QTest::newRow("1_Item_from_middle_to_bottom") << 2 << 1 << 6 << QStringList{"A", "B", "D", "E", "F", "C"};
- QTest::newRow("1_Item_from_middle_to_middle_before") << 2 << 1 << 1 << QStringList{"C", "A", "B", "D", "E", "F"};
+ QTest::newRow("1_Item_from_middle_to_middle_before") << 2 << 1 << 1 << QStringList{"A", "C", "B", "D", "E", "F"};
QTest::newRow("1_Item_from_middle_to_middle_after") << 2 << 1 << 4 << QStringList{"A", "B", "D", "C", "E", "F"};
QTest::newRow("2_Items_from_top_to_middle") << 0 << 2 << 3 << QStringList{"C", "A", "B", "D", "E", "F"};
QTest::newRow("2_Items_from_top_to_bottom") << 0 << 2 << 6 << QStringList{"C", "D", "E", "F", "A", "B"};
- QTest::newRow("2_Items_from_middle_to_top") << 2 << 2 << 1 << QStringList{"C", "D", "A", "B", "E", "F"};
- QTest::newRow("2_Items_from_bottom_to_middle") << 4 << 2 << 3 << QStringList{"A", "B", "E", "F", "C", "D"};
- QTest::newRow("2_Items_from_bottom_to_top") << 4 << 2 << 1 << QStringList{"E", "F", "A", "B", "C", "D"};
+ QTest::newRow("2_Items_from_middle_to_top") << 2 << 2 << 0 << QStringList{"C", "D", "A", "B", "E", "F"};
+ QTest::newRow("2_Items_from_bottom_to_middle") << 4 << 2 << 2 << QStringList{"A", "B", "E", "F", "C", "D"};
+ QTest::newRow("2_Items_from_bottom_to_top") << 4 << 2 << 0 << QStringList{"E", "F", "A", "B", "C", "D"};
QTest::newRow("2_Items_from_middle_to_bottom") << 2 << 2 << 6 << QStringList{"A", "B", "E", "F", "C", "D"};
- QTest::newRow("2_Items_from_middle_to_middle_before") << 3 << 2 << 2 << QStringList{"A", "D", "E", "B", "C", "F"};
+ QTest::newRow("2_Items_from_middle_to_middle_before") << 3 << 2 << 1 << QStringList{"A", "D", "E", "B", "C", "F"};
QTest::newRow("2_Items_from_middle_to_middle_after") << 1 << 2 << 5 << QStringList{"A", "D", "E", "B", "C", "F"};
}
@@ -1512,6 +1514,20 @@ void tst_QListWidget::itemData()
QCOMPARE(flags.count(), 6);
for (int i = 0; i < 4; ++i)
QCOMPARE(flags[Qt::UserRole + i].toString(), QString::number(i + 1));
+
+ item.setBackground(QBrush(Qt::red));
+ item.setForeground(QBrush(Qt::red));
+ item.setSizeHint(QSize(10, 10));
+ QCOMPARE(item.data(Qt::BackgroundRole), QVariant(QBrush(Qt::red)));
+ QCOMPARE(item.data(Qt::ForegroundRole), QVariant(QBrush(Qt::red)));
+ QCOMPARE(item.data(Qt::SizeHintRole), QVariant(QSize(10, 10)));
+ // an empty brush should result in a QVariant()
+ item.setBackground(QBrush());
+ item.setForeground(QBrush());
+ item.setSizeHint(QSize());
+ QCOMPARE(item.data(Qt::BackgroundRole), QVariant());
+ QCOMPARE(item.data(Qt::ForegroundRole), QVariant());
+ QCOMPARE(item.data(Qt::SizeHintRole), QVariant());
}
void tst_QListWidget::changeDataWithSorting()
diff --git a/tests/auto/widgets/itemviews/qtableview/BLACKLIST b/tests/auto/widgets/itemviews/qtableview/BLACKLIST
index 9648cef3de..ff870915be 100644
--- a/tests/auto/widgets/itemviews/qtableview/BLACKLIST
+++ b/tests/auto/widgets/itemviews/qtableview/BLACKLIST
@@ -1,3 +1,5 @@
[moveCursorBiggerJump]
osx
+[mouseWheel:scroll down per pixel]
+macos
diff --git a/tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp b/tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp
index 1d0153213b..544069243f 100644
--- a/tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp
+++ b/tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp
@@ -1299,7 +1299,7 @@ void tst_QTableView::moveCursorStrikesBack()
int newRow = -1;
int newColumn = -1;
for (auto cursorMoveAction : cursorMoveActions) {
- QModelIndex newIndex = view.moveCursor(cursorMoveAction, nullptr);
+ QModelIndex newIndex = view.moveCursor(cursorMoveAction, {});
view.setCurrentIndex(newIndex);
newRow = newIndex.row();
newColumn = newIndex.column();
diff --git a/tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp b/tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp
index f640996690..38dae7743f 100644
--- a/tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp
+++ b/tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp
@@ -1404,9 +1404,17 @@ void tst_QTableWidget::setItemData()
QCOMPARE(table.currentRoles, QVector<int>({Qt::DisplayRole, Qt::EditRole, Qt::ToolTipRole}));
QCOMPARE(table.model()->data(idx, Qt::DisplayRole).toString(), QLatin1String("Display"));
+ QCOMPARE(table.model()->data(idx, Qt::EditRole).toString(), QLatin1String("Display"));
QCOMPARE(table.model()->data(idx, Qt::ToolTipRole).toString(), QLatin1String("ToolTip"));
QCOMPARE(dataChangedSpy.count(), 1);
- QCOMPARE(idx, qvariant_cast<QModelIndex>(dataChangedSpy.takeFirst().at(0)));
+ QCOMPARE(idx, qvariant_cast<QModelIndex>(dataChangedSpy.first().at(0)));
+ QCOMPARE(idx, qvariant_cast<QModelIndex>(dataChangedSpy.first().at(1)));
+ const auto roles = qvariant_cast<QVector<int>>(dataChangedSpy.first().at(2));
+ QCOMPARE(roles.size(), 3);
+ QVERIFY(roles.contains(Qt::DisplayRole));
+ QVERIFY(roles.contains(Qt::EditRole));
+ QVERIFY(roles.contains(Qt::ToolTipRole));
+ dataChangedSpy.clear();
table.model()->setItemData(idx, data);
QCOMPARE(dataChangedSpy.count(), 0);
@@ -1416,6 +1424,21 @@ void tst_QTableWidget::setItemData()
table.model()->setItemData(idx, data);
QCOMPARE(table.model()->data(idx, Qt::DisplayRole).toString(), QLatin1String("dizplaye"));
QCOMPARE(dataChangedSpy.count(), 1);
+ QCOMPARE(QVector<int>({Qt::DisplayRole, Qt::EditRole}), qvariant_cast<QVector<int>>(dataChangedSpy.first().at(2)));
+
+ item->setBackground(QBrush(Qt::red));
+ item->setForeground(QBrush(Qt::green));
+ item->setSizeHint(QSize(10, 10));
+ QCOMPARE(item->data(Qt::BackgroundRole), QVariant(QBrush(Qt::red)));
+ QCOMPARE(item->data(Qt::ForegroundRole), QVariant(QBrush(Qt::green)));
+ QCOMPARE(item->data(Qt::SizeHintRole), QVariant(QSize(10, 10)));
+ // an empty brush should result in a QVariant()
+ item->setBackground(QBrush());
+ item->setForeground(QBrush());
+ item->setSizeHint(QSize());
+ QCOMPARE(item->data(Qt::BackgroundRole), QVariant());
+ QCOMPARE(item->data(Qt::ForegroundRole), QVariant());
+ QCOMPARE(item->data(Qt::SizeHintRole), QVariant());
}
void tst_QTableWidget::cellWidget()
diff --git a/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp b/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp
index dcffe8043b..8396fd4ec7 100644
--- a/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp
+++ b/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp
@@ -77,6 +77,30 @@ static void initStandardTreeModel(QStandardItemModel *model)
model->insertRow(2, item);
}
+class TreeView : public QTreeView
+{
+ Q_OBJECT
+public:
+ using QTreeView::QTreeView;
+ using QTreeView::selectedIndexes;
+
+ void paintEvent(QPaintEvent *event) override
+ {
+ QTreeView::paintEvent(event);
+ wasPainted = true;
+ }
+ bool wasPainted = false;
+public slots:
+ void handleSelectionChanged()
+ {
+ //let's select the last item
+ QModelIndex idx = model()->index(0, 0);
+ selectionModel()->select(QItemSelection(idx, idx), QItemSelectionModel::Select);
+ disconnect(selectionModel(), &QItemSelectionModel::selectionChanged,
+ this, &TreeView::handleSelectionChanged);
+ }
+};
+
class tst_QTreeView : public QObject
{
Q_OBJECT
@@ -2868,6 +2892,7 @@ public:
};
Node *root;
+ bool crash = false;
EvilModel(QObject *parent = nullptr): QAbstractItemModel(parent), root(new Node)
{}
@@ -2876,6 +2901,11 @@ public:
delete root;
}
+ void setCrash()
+ {
+ crash = true;
+ }
+
void change()
{
emit layoutAboutToBeChanged();
@@ -2944,6 +2974,10 @@ public:
QVariant data(const QModelIndex &idx, int role) const override
{
+ if (crash) {
+ QTest::qFail("Should not get here...", __FILE__, __LINE__);
+ return QVariant();
+ }
if (idx.isValid() && role == Qt::DisplayRole) {
Node *parentNode = root;
if (idx.isValid()) {
@@ -2963,13 +2997,14 @@ void tst_QTreeView::evilModel_data()
{
QTest::addColumn<bool>("visible");
QTest::newRow("visible") << false;
+ QTest::newRow("visible") << true;
}
void tst_QTreeView::evilModel()
{
QFETCH(bool, visible);
// init
- QTreeView view;
+ TreeView view;
EvilModel model;
view.setModel(&model);
view.setVisible(visible);
@@ -3007,7 +3042,7 @@ void tst_QTreeView::evilModel()
view.scrollTo(thirdLevel);
model.change();
- view.repaint();
+ view.update(); // will not do anything since view is not visible
model.change();
QTest::mouseDClick(view.viewport(), Qt::LeftButton);
@@ -3132,6 +3167,9 @@ void tst_QTreeView::evilModel()
model.change();
view.setRootIndex(secondLevel);
+
+ model.setCrash();
+ view.setModel(nullptr);
}
void tst_QTreeView::indexRowSizeHint()
@@ -3161,7 +3199,7 @@ void tst_QTreeView::filterProxyModelCrash()
QSortFilterProxyModel proxy;
proxy.setSourceModel(&model);
- QTreeView view;
+ TreeView view;
view.setModel(&proxy);
view.show();
QVERIFY(QTest::qWaitForWindowExposed(&view));
@@ -3170,7 +3208,8 @@ void tst_QTreeView::filterProxyModelCrash()
QTest::qWait(20);
proxy.invalidate();
- view.repaint(); //used to crash
+ view.update(); //used to crash
+ QTRY_VERIFY(view.wasPainted);
}
void tst_QTreeView::renderToPixmap_data()
@@ -3638,10 +3677,7 @@ void tst_QTreeView::task220298_selectColumns()
}
};
- class TreeView : public QTreeView {
- public:
- using QTreeView::selectedIndexes;
- } view;
+ TreeView view;
Model model;
view.setModel(&model);
view.show();
@@ -3990,20 +4026,6 @@ void tst_QTreeView::task254234_proxySort()
QCOMPARE(view.model()->data(view.model()->index(1, 1)).toString(), QString::fromLatin1("g"));
}
-class TreeView : public QTreeView
-{
- Q_OBJECT
-public slots:
- void handleSelectionChanged()
- {
- //let's select the last item
- QModelIndex idx = model()->index(0, 0);
- selectionModel()->select(QItemSelection(idx, idx), QItemSelectionModel::Select);
- disconnect(selectionModel(), &QItemSelectionModel::selectionChanged,
- this, &TreeView::handleSelectionChanged);
- }
-};
-
void tst_QTreeView::task248022_changeSelection()
{
//we check that changing the selection between the mouse press and the mouse release
@@ -4900,10 +4922,24 @@ void tst_QTreeView::taskQTBUG_61476()
const QPoint pos = rect.center();
QTest::mousePress(tv.viewport(), Qt::LeftButton, {}, pos);
- if (tv.style()->styleHint(QStyle::SH_ListViewExpand_SelectMouseType, nullptr, &tv) ==
- QEvent::MouseButtonPress)
+ const bool expandsOnPress =
+ (tv.style()->styleHint(QStyle::SH_ListViewExpand_SelectMouseType, nullptr, &tv) == QEvent::MouseButtonPress);
+ if (expandsOnPress)
QTRY_VERIFY(!tv.isExpanded(mi));
+ QTest::mouseRelease(tv.viewport(), Qt::LeftButton, {}, pos);
+ QTRY_VERIFY(!tv.isExpanded(mi));
+ QCOMPARE(lastTopLevel->checkState(), Qt::Checked);
+
+ // Test that it does not toggle the check state of a previously selected item when collapsing an
+ // item causes it to position the item under the mouse to be the decoration for the selected item
+ tv.expandAll();
+ tv.verticalScrollBar()->setValue(tv.verticalScrollBar()->maximum());
+ // It is not enough to programmatically select the item, we need to have it clicked on
+ QTest::mouseClick(tv.viewport(), Qt::LeftButton, {}, tv.visualRect(lastTopLevel->index()).center());
+ QTest::mousePress(tv.viewport(), Qt::LeftButton, {}, pos);
+ if (expandsOnPress)
+ QTRY_VERIFY(!tv.isExpanded(mi));
QTest::mouseRelease(tv.viewport(), Qt::LeftButton, nullptr, pos);
QTRY_VERIFY(!tv.isExpanded(mi));
QCOMPARE(lastTopLevel->checkState(), Qt::Checked);
diff --git a/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp b/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp
index 2118bb5a29..7da56ab797 100644
--- a/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp
+++ b/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp
@@ -1994,6 +1994,20 @@ void tst_QTreeWidget::itemData()
QCOMPARE(flags[Qt::UserRole + i].toString(), QString::number(i + 1));
flags = widget.model()->itemData(widget.model()->index(0, 1));
QCOMPARE(flags.count(), 0);
+
+ item.setBackground(0, QBrush(Qt::red));
+ item.setForeground(0, QBrush(Qt::green));
+ item.setSizeHint(0, QSize(10, 10));
+ QCOMPARE(item.data(0, Qt::BackgroundRole), QVariant(QBrush(Qt::red)));
+ QCOMPARE(item.data(0, Qt::ForegroundRole), QVariant(QBrush(Qt::green)));
+ QCOMPARE(item.data(0, Qt::SizeHintRole), QVariant(QSize(10, 10)));
+ // an empty brush should result in a QVariant()
+ item.setBackground(0, QBrush());
+ item.setForeground(0, QBrush());
+ item.setSizeHint(0, QSize());
+ QCOMPARE(item.data(0, Qt::BackgroundRole), QVariant());
+ QCOMPARE(item.data(0, Qt::ForegroundRole), QVariant());
+ QCOMPARE(item.data(0, Qt::SizeHintRole), QVariant());
}
void tst_QTreeWidget::enableDisable()
diff --git a/tests/auto/widgets/kernel/qboxlayout/tst_qboxlayout.cpp b/tests/auto/widgets/kernel/qboxlayout/tst_qboxlayout.cpp
index 00bde3cb25..cbfbefaf3c 100644
--- a/tests/auto/widgets/kernel/qboxlayout/tst_qboxlayout.cpp
+++ b/tests/auto/widgets/kernel/qboxlayout/tst_qboxlayout.cpp
@@ -415,7 +415,7 @@ public:
QSize minimumSize() const { return QSize(m_descr.minimumSize, 0); }
QSize maximumSize() const { return QSize(m_descr.maximumSize, QLAYOUTSIZE_MAX); }
Qt::Orientations expandingDirections() const
- { return m_descr.expanding ? Qt::Horizontal : Qt::Orientations(0); }
+ { return m_descr.expanding ? Qt::Horizontal : Qt::Orientations{}; }
void setGeometry(const QRect &r) { m_pos = r.x(); m_size = r.width();}
QRect geometry() const { return QRect(m_pos, 0, m_size, 100); }
bool isEmpty() const { return m_descr.empty; }
diff --git a/tests/auto/widgets/kernel/qlayout/tst_qlayout.cpp b/tests/auto/widgets/kernel/qlayout/tst_qlayout.cpp
index 140a367afe..c8fe1841c8 100644
--- a/tests/auto/widgets/kernel/qlayout/tst_qlayout.cpp
+++ b/tests/auto/widgets/kernel/qlayout/tst_qlayout.cpp
@@ -163,7 +163,7 @@ void tst_QLayout::smartMaxSize()
QSizePolicy::MinimumExpanding,
QSizePolicy::Ignored
};
- Qt::Alignment alignments[] = { 0,
+ Qt::Alignment alignments[] = { Qt::Alignment{},
Qt::AlignLeft,
Qt::AlignRight,
Qt::AlignHCenter
diff --git a/tests/auto/widgets/kernel/qshortcut/tst_qshortcut.cpp b/tests/auto/widgets/kernel/qshortcut/tst_qshortcut.cpp
index 82ab9c9c3b..aa687cfc3c 100644
--- a/tests/auto/widgets/kernel/qshortcut/tst_qshortcut.cpp
+++ b/tests/auto/widgets/kernel/qshortcut/tst_qshortcut.cpp
@@ -103,6 +103,7 @@ public slots:
private slots:
void cleanup();
+ void pmf_connect();
void number_data();
void number();
void text_data();
@@ -203,6 +204,45 @@ void tst_QShortcut::cleanup()
QVERIFY(QApplication::topLevelWidgets().size() <= 1); // The data driven tests keep a widget around
}
+void tst_QShortcut::pmf_connect()
+{
+ class MyObject : public QObject
+ {
+ public:
+ using QObject::QObject;
+ void onActivated() { ++activated; }
+ void onAmbiguous() { ++ambiguous; }
+ void reset() { activated = 0; ambiguous = 0; }
+ int activated = 0;
+ int ambiguous = 0;
+ } myObject;
+ QWidget parent;
+
+ auto runCheck = [&myObject](QShortcut *sc, int activated, int ambiguous)
+ {
+ myObject.reset();
+ sc->activated();
+ sc->activatedAmbiguously();
+ delete sc;
+ QCOMPARE(myObject.activated, activated);
+ QCOMPARE(myObject.ambiguous, ambiguous);
+ };
+
+ runCheck(new QShortcut(QKeySequence(), &parent,
+ [&myObject]() { ++myObject.activated; }),
+ 1, 0);
+ runCheck(new QShortcut(QKeySequence(), &parent,
+ &myObject, &MyObject::onActivated),
+ 1, 0);
+ runCheck(new QShortcut(QKeySequence(), &parent,
+ &myObject, &MyObject::onActivated, &MyObject::onAmbiguous),
+ 1, 1);
+ runCheck(new QShortcut(QKeySequence(), &parent, &myObject,
+ &MyObject::onActivated, &myObject, &MyObject::onAmbiguous),
+ 1, 1);
+}
+
+
Qt::KeyboardModifiers tst_QShortcut::toButtons( int key )
{
Qt::KeyboardModifiers result = Qt::NoModifier;
diff --git a/tests/auto/widgets/kernel/qwidget/BLACKLIST b/tests/auto/widgets/kernel/qwidget/BLACKLIST
index 26f9ce1b85..be19d8fd0b 100644
--- a/tests/auto/widgets/kernel/qwidget/BLACKLIST
+++ b/tests/auto/widgets/kernel/qwidget/BLACKLIST
@@ -22,7 +22,7 @@ opensuse-leap
# QTBUG-68175
opensuse-42.3
[childEvents]
-osx ci
+macos
[renderInvisible]
osx-10.12
osx-10.11
@@ -34,8 +34,7 @@ osx
[render_systemClip]
osx
[showMinimizedKeepsFocus]
-osx-10.12 ci
-osx-10.13 ci
+macos
[maskedUpdate]
opensuse
opensuse-leap
@@ -49,3 +48,7 @@ ubuntu
# QTBUG-75270
winrt
+[syntheticEnterLeave]
+macos # Can't move cursor (QTBUG-76312)
+[taskQTBUG_4055_sendSyntheticEnterLeave]
+macos # Can't move cursor (QTBUG-76312)
diff --git a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp
index c29d1bbe04..dd747a8616 100644
--- a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp
+++ b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp
@@ -53,12 +53,14 @@
#include <qmainwindow.h>
#include <qdockwidget.h>
#include <qrandom.h>
+#include <qstylehints.h>
#include <qtoolbar.h>
#include <qtoolbutton.h>
#include <QtCore/qoperatingsystemversion.h>
#include <QtGui/qpaintengine.h>
#include <QtGui/qbackingstore.h>
#include <QtGui/qguiapplication.h>
+#include <QtGui/qpa/qplatformwindow.h>
#include <QtGui/qscreen.h>
#include <qmenubar.h>
#include <qcompleter.h>
@@ -198,6 +200,7 @@ private slots:
void hideWhenFocusWidgetIsChild();
void normalGeometry();
void setGeometry();
+ void setGeometryHidden();
void windowOpacity();
void raise();
void lower();
@@ -225,6 +228,7 @@ private slots:
void setFixedSize();
void ensureCreated();
+ void createAndDestroy();
void winIdChangeEvent();
void persistentWinId();
void showNativeChild();
@@ -401,6 +405,7 @@ private slots:
void tabletTracking();
void closeEvent();
+ void closeWithChildWindow();
private:
bool ensureScreenSize(int width, int height);
@@ -2945,6 +2950,38 @@ void tst_QWidget::setGeometry()
QCOMPARE(tlw.geometry(), tr);
}
+void tst_QWidget::setGeometryHidden()
+{
+ if (QGuiApplication::styleHints()->showIsMaximized())
+ QSKIP("Platform does not support QWidget::setGeometry() - skipping");
+
+ QWidget tlw;
+ tlw.setWindowTitle(QLatin1String(QTest::currentTestFunction()));
+ QWidget child(&tlw);
+
+ const QRect tr(m_availableTopLeft + QPoint(100, 100), 2 * m_testWidgetSize);
+ const QRect cr(QPoint(50, 50), m_testWidgetSize);
+ tlw.setGeometry(tr);
+ child.setGeometry(cr);
+ tlw.showNormal();
+
+ tlw.hide();
+ QTRY_VERIFY(tlw.isHidden());
+ tlw.setGeometry(cr);
+ QVERIFY(tlw.testAttribute(Qt::WA_PendingMoveEvent));
+ QVERIFY(tlw.testAttribute(Qt::WA_PendingResizeEvent));
+ QImage img(tlw.size(), QImage::Format_ARGB32); // just needed to call QWidget::render()
+ tlw.render(&img);
+ QVERIFY(!tlw.testAttribute(Qt::WA_PendingMoveEvent));
+ QVERIFY(!tlw.testAttribute(Qt::WA_PendingResizeEvent));
+ tlw.setGeometry(cr);
+ QVERIFY(!tlw.testAttribute(Qt::WA_PendingMoveEvent));
+ QVERIFY(!tlw.testAttribute(Qt::WA_PendingResizeEvent));
+ tlw.resize(cr.size());
+ QVERIFY(!tlw.testAttribute(Qt::WA_PendingMoveEvent));
+ QVERIFY(!tlw.testAttribute(Qt::WA_PendingResizeEvent));
+}
+
void tst_QWidget::windowOpacity()
{
QWidget widget;
@@ -4215,6 +4252,58 @@ public:
int winIdChangeEventCount() const { return m_winIdList.count(); }
};
+class CreateDestroyWidget : public WinIdChangeWidget
+{
+public:
+ void create() { QWidget::create(); }
+ void destroy() { QWidget::destroy(); }
+};
+
+void tst_QWidget::createAndDestroy()
+{
+ CreateDestroyWidget widget;
+
+ // Create and destroy via QWidget
+ widget.create();
+ QVERIFY(widget.testAttribute(Qt::WA_WState_Created));
+ QCOMPARE(widget.winIdChangeEventCount(), 1);
+ QVERIFY(widget.internalWinId());
+
+ widget.destroy();
+ QVERIFY(!widget.testAttribute(Qt::WA_WState_Created));
+ QCOMPARE(widget.winIdChangeEventCount(), 2);
+ QVERIFY(!widget.internalWinId());
+
+ // Create via QWidget, destroy via QWindow
+ widget.create();
+ QVERIFY(widget.testAttribute(Qt::WA_WState_Created));
+ QCOMPARE(widget.winIdChangeEventCount(), 3);
+ QVERIFY(widget.internalWinId());
+
+ widget.windowHandle()->destroy();
+ QVERIFY(!widget.testAttribute(Qt::WA_WState_Created));
+ QCOMPARE(widget.winIdChangeEventCount(), 4);
+ QVERIFY(!widget.internalWinId());
+
+ // Create via QWidget again
+ widget.create();
+ QVERIFY(widget.testAttribute(Qt::WA_WState_Created));
+ QCOMPARE(widget.winIdChangeEventCount(), 5);
+ QVERIFY(widget.internalWinId());
+
+ // Destroy via QWindow, create via QWindow
+ widget.windowHandle()->destroy();
+ QVERIFY(widget.windowHandle());
+ QVERIFY(!widget.testAttribute(Qt::WA_WState_Created));
+ QCOMPARE(widget.winIdChangeEventCount(), 6);
+ QVERIFY(!widget.internalWinId());
+
+ widget.windowHandle()->create();
+ QVERIFY(widget.testAttribute(Qt::WA_WState_Created));
+ QCOMPARE(widget.winIdChangeEventCount(), 7);
+ QVERIFY(widget.internalWinId());
+}
+
void tst_QWidget::winIdChangeEvent()
{
{
@@ -8384,12 +8473,9 @@ void tst_QWidget::resizeInPaintEvent()
widget.resizeInPaintEvent = true;
// This will call resize in the paintEvent, which in turn will call
// invalidateBackingStore() and a new update request should be posted.
- widget.repaint();
- QCOMPARE(widget.numPaintEvents, 1);
- widget.numPaintEvents = 0;
-
- // Make sure the resize triggers another update.
- QTRY_COMPARE(widget.numPaintEvents, 1);
+ // the resize triggers another update.
+ widget.update();
+ QTRY_COMPARE(widget.numPaintEvents, 2);
}
void tst_QWidget::opaqueChildren()
@@ -8558,8 +8644,8 @@ void tst_QWidget::immediateRepaintAfterInvalidateBackingStore()
// The entire widget is already dirty, but this time we want to update immediately
// by calling repaint(), and thus we have to repaint the widget and not wait for
// the UpdateRequest to be sent when we get back to the event loop.
- widget->repaint();
- QCOMPARE(widget->numPaintEvents, 1);
+ widget->update();
+ QTRY_COMPARE(widget->numPaintEvents, 1);
}
#endif
@@ -9831,7 +9917,7 @@ public:
if (!static_cast<QWidgetPrivate*>(d_ptr.data())->maybeRepaintManager()) {
static_cast<QWidgetPrivate*>(d_ptr.data())->topData()->repaintManager.reset(new QWidgetRepaintManager(this));
static_cast<QWidgetPrivate*>(d_ptr.data())->invalidateBackingStore(this->rect());
- repaint();
+ update();
}
}
};
@@ -9854,7 +9940,7 @@ void tst_QWidget::scrollWithoutBackingStore()
scrollable.scroll(-25,-25);
QCOMPARE(child.pos(),QPoint(25,25));
scrollable.enableBackingStore();
- QCOMPARE(child.pos(),QPoint(25,25));
+ QTRY_COMPARE(child.pos(),QPoint(25,25));
}
#endif
@@ -11173,5 +11259,27 @@ void tst_QWidget::closeEvent()
QCOMPARE(widget.closeCount, 1);
}
+void tst_QWidget::closeWithChildWindow()
+{
+ QWidget widget;
+ auto childWidget = new QWidget(&widget);
+ childWidget->setAttribute(Qt::WA_NativeWindow);
+ childWidget->windowHandle()->create();
+ widget.show();
+ QVERIFY(QTest::qWaitForWindowExposed(&widget));
+ widget.windowHandle()->close();
+ widget.show();
+ QVERIFY(QTest::qWaitForWindowExposed(&widget));
+ // Check that the child window inside the window is now visible
+ QVERIFY(childWidget->isVisible());
+
+ // Now explicitly hide the childWidget
+ childWidget->hide();
+ widget.windowHandle()->close();
+ widget.show();
+ QVERIFY(QTest::qWaitForWindowExposed(&widget));
+ QVERIFY(!childWidget->isVisible());
+}
+
QTEST_MAIN(tst_QWidget)
#include "tst_qwidget.moc"
diff --git a/tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp b/tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp
index 7d114fde56..dd3e2f844b 100644
--- a/tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp
+++ b/tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp
@@ -845,12 +845,12 @@ void tst_QWidget_window::tst_dnd_propagation()
auto posInsideLabel = QHighDpi::toNativePixels(QPoint(60, 60), window->screen());
// Enter DropTarget.
- QWindowSystemInterface::handleDrag(window, &mimeData, posInsideDropTarget, supportedActions, 0, 0);
+ QWindowSystemInterface::handleDrag(window, &mimeData, posInsideDropTarget, supportedActions, {}, {});
// Enter QLabel. This will propagate because default QLabel does
// not accept the drop event in dragEnterEvent().
- QWindowSystemInterface::handleDrag(window, &mimeData, posInsideLabel, supportedActions, 0, 0);
+ QWindowSystemInterface::handleDrag(window, &mimeData, posInsideLabel, supportedActions, {}, {});
// Drop on QLabel. DropTarget will get dropEvent(), because it accepted the event.
- QWindowSystemInterface::handleDrop(window, &mimeData, posInsideLabel, supportedActions, 0, 0);
+ QWindowSystemInterface::handleDrop(window, &mimeData, posInsideLabel, supportedActions, {}, {});
QGuiApplication::processEvents();
diff --git a/tests/auto/widgets/styles/qstylesheetstyle/BLACKLIST b/tests/auto/widgets/styles/qstylesheetstyle/BLACKLIST
index 6b2e4f3fb2..616cd650b3 100644
--- a/tests/auto/widgets/styles/qstylesheetstyle/BLACKLIST
+++ b/tests/auto/widgets/styles/qstylesheetstyle/BLACKLIST
@@ -1,2 +1,4 @@
[task232085_spinBoxLineEditBg]
osx
+[widgetStylePropagation]
+macos # QTBUG-75786
diff --git a/tests/auto/widgets/widgets/qabstractslider/tst_qabstractslider.cpp b/tests/auto/widgets/widgets/qabstractslider/tst_qabstractslider.cpp
index f77efe036a..c54a6bb73e 100644
--- a/tests/auto/widgets/widgets/qabstractslider/tst_qabstractslider.cpp
+++ b/tests/auto/widgets/widgets/qabstractslider/tst_qabstractslider.cpp
@@ -1836,9 +1836,10 @@ void tst_QAbstractSlider::sliderPressedReleased()
if (qApp->style()->styleHint(QStyle::SH_ScrollBar_LeftClickAbsolutePosition))
QSKIP("The result depends on system setting on mac");
- QTest::mousePress(slider, Qt::LeftButton, 0, QPoint(rect.center().x() + 2, rect.center().y() + 2));
+ QTest::mousePress(slider, Qt::LeftButton, {},
+ QPoint(rect.center().x() + 2, rect.center().y() + 2));
QCOMPARE(spy1.count(), expectedCount);
- QTest::mouseRelease(slider, Qt::LeftButton, 0, rect.center());
+ QTest::mouseRelease(slider, Qt::LeftButton, {}, rect.center());
QCOMPARE(spy2.count(), expectedCount);
delete slider;
diff --git a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp
index eed4fe3539..ea1b330152 100644
--- a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp
+++ b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp
@@ -397,6 +397,31 @@ void tst_QComboBox::getSetCheck()
QCOMPARE(4, obj1.currentIndex()); // Valid
obj1.setCurrentIndex(INT_MAX);
QCOMPARE(-1, obj1.currentIndex()); // Invalid => -1
+
+ obj1.setIconSize(QSize(64, 32));
+ QCOMPARE(obj1.iconSize(), QSize(64, 32));
+ obj1.setIconSize(QSize());
+ const int iconWidth = obj1.style()->pixelMetric(QStyle::PM_SmallIconSize, nullptr, &obj1);
+ QCOMPARE(obj1.iconSize(), QSize(iconWidth, iconWidth));
+
+ const QString placeholderText("Please select");
+ obj1.setCurrentIndex(1);
+ obj1.setPlaceholderText(placeholderText);
+ QCOMPARE(obj1.placeholderText(), placeholderText);
+ QCOMPARE(obj1.currentText(), "2");
+ QCOMPARE(obj1.currentIndex(), 1);
+ obj1.setPlaceholderText(QString()); // should not change anything
+ QCOMPARE(obj1.placeholderText(), QString());
+ QCOMPARE(obj1.currentText(), "2");
+
+ obj1.clear();
+ obj1.setPlaceholderText(placeholderText);
+ obj1.addItems({"1", "2", "3", "4", "5"});
+ QCOMPARE(obj1.currentText(), placeholderText);
+ QCOMPARE(obj1.currentIndex(), -1);
+ obj1.setPlaceholderText(QString()); // should not change anything
+ QCOMPARE(obj1.currentText(), "1");
+ QCOMPARE(obj1.currentIndex(), 0);
}
typedef QList<QVariant> VariantList;
@@ -812,16 +837,16 @@ void tst_QComboBox::virtualAutocompletion()
// well, and send a keypress & keyrelease right after each other.
// This provokes the actual error, as there's no events in between to do
// the text completion.
- QKeyEvent kp1(QEvent::KeyPress, Qt::Key_B, 0, "b");
- QKeyEvent kr1(QEvent::KeyRelease, Qt::Key_B, 0, "b");
+ QKeyEvent kp1(QEvent::KeyPress, Qt::Key_B, {}, "b");
+ QKeyEvent kr1(QEvent::KeyRelease, Qt::Key_B, {}, "b");
QApplication::sendEvent(testWidget, &kp1);
QApplication::sendEvent(testWidget, &kr1);
qApp->processEvents(); // Process events to trigger autocompletion
QTRY_COMPARE(testWidget->currentIndex(), 1);
- QKeyEvent kp2(QEvent::KeyPress, Qt::Key_O, 0, "o");
- QKeyEvent kr2(QEvent::KeyRelease, Qt::Key_O, 0, "o");
+ QKeyEvent kp2(QEvent::KeyPress, Qt::Key_O, {}, "o");
+ QKeyEvent kr2(QEvent::KeyRelease, Qt::Key_O, {}, "o");
QApplication::sendEvent(testWidget, &kp2);
QApplication::sendEvent(testWidget, &kr2);
@@ -1697,7 +1722,7 @@ void tst_QComboBox::setCustomModelAndView()
// why this happens.
QTest::qWait(QApplication::doubleClickInterval());
- QTest::mouseClick(window->windowHandle(), Qt::LeftButton, 0, view->mapTo(window, subItemRect.center()));
+ QTest::mouseClick(window->windowHandle(), Qt::LeftButton, {}, view->mapTo(window, subItemRect.center()));
#ifdef Q_OS_WINRT
QEXPECT_FAIL("", "Fails on WinRT - QTBUG-68297", Abort);
#endif
diff --git a/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp b/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp
index aba4651379..9eae1f10ea 100644
--- a/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp
+++ b/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp
@@ -262,6 +262,8 @@ private slots:
void timeSpec();
void timeSpecBug();
void timeSpecInit();
+ void setDateTime_data();
+ void setDateTime();
void monthEdgeCase();
void setLocale();
@@ -2303,7 +2305,7 @@ void tst_QDateTimeEdit::mousePress()
QRect rectUp = testWidget->style()->subControlRect(QStyle::CC_SpinBox, &so, QStyle::SC_SpinBoxUp, testWidget);
// Send mouseClick to center of SC_SpinBoxUp
- QTest::mouseClick(testWidget, Qt::LeftButton, 0, rectUp.center());
+ QTest::mouseClick(testWidget, Qt::LeftButton, {}, rectUp.center());
QCOMPARE(testWidget->date().year(), 2005);
}
@@ -2916,7 +2918,8 @@ void tst_QDateTimeEdit::calendarPopup()
opt.editable = true;
opt.subControls = QStyle::SC_ComboBoxArrow;
QRect rect = style->subControlRect(QStyle::CC_ComboBox, &opt, QStyle::SC_ComboBoxArrow, testWidget);
- QTest::mouseClick(testWidget, Qt::LeftButton, 0, QPoint(rect.left()+rect.width()/2, rect.top()+rect.height()/2));
+ QTest::mouseClick(testWidget, Qt::LeftButton, {},
+ QPoint(rect.left() + rect.width() / 2, rect.top() + rect.height() / 2));
QWidget *wid = testWidget->findChild<QWidget *>("qt_datetimedit_calendar");
QVERIFY(wid != 0);
testWidget->hide();
@@ -2928,7 +2931,8 @@ void tst_QDateTimeEdit::calendarPopup()
opt.initFrom(&timeEdit);
opt.subControls = QStyle::SC_ComboBoxArrow;
rect = style->subControlRect(QStyle::CC_ComboBox, &opt, QStyle::SC_ComboBoxArrow, &timeEdit);
- QTest::mouseClick(&timeEdit, Qt::LeftButton, 0, QPoint(rect.left()+rect.width()/2, rect.top()+rect.height()/2));
+ QTest::mouseClick(&timeEdit, Qt::LeftButton, {},
+ QPoint(rect.left() + rect.width() / 2, rect.top() + rect.height() / 2));
QWidget *wid2 = timeEdit.findChild<QWidget *>("qt_datetimedit_calendar");
QVERIFY(!wid2);
timeEdit.hide();
@@ -2942,7 +2946,8 @@ void tst_QDateTimeEdit::calendarPopup()
opt.initFrom(&dateEdit);
opt.subControls = QStyle::SC_ComboBoxArrow;
rect = style->subControlRect(QStyle::CC_ComboBox, &opt, QStyle::SC_ComboBoxArrow, &dateEdit);
- QTest::mouseClick(&dateEdit, Qt::LeftButton, 0, QPoint(rect.left()+rect.width()/2, rect.top()+rect.height()/2));
+ QTest::mouseClick(&dateEdit, Qt::LeftButton, {},
+ QPoint(rect.left() + rect.width() / 2, rect.top() + rect.height() / 2));
QWidget *wid3 = dateEdit.findChild<QWidget *>("qt_datetimedit_calendar");
QVERIFY(!wid3);
dateEdit.hide();
@@ -3473,6 +3478,54 @@ void tst_QDateTimeEdit::timeSpecInit()
QCOMPARE(widget.dateTime(), utc);
}
+void tst_QDateTimeEdit::setDateTime_data()
+{
+ QTest::addColumn<Qt::TimeSpec>("spec");
+ QDateTime localNoon(QDate(2019, 12, 24), QTime(12, 0), Qt::LocalTime);
+#if 0 // Not yet supported
+ QTest::addColumn<int>("offset");
+ QTest::addColumn<QByteArray>("zoneName");
+
+ QTest::newRow("OffsetFromUTC/LocalTime")
+ << Qt::OffsetFromUTC << 7200 << ""
+ << localNoon << localNoon.toOffsetFromUtc(7200);
+#if QT_CONFIG(timezone)
+ QTest::newRow("TimeZone/LocalTime")
+ << Qt::TimeZone << 0 << "Europe/Berlin"
+ << localNoon << localNoon.toTimeZone(QTimeZone("Europe/Berlin"));
+#endif
+#endif // unsupported
+ QTest::addColumn<QDateTime>("store");
+ QTest::addColumn<QDateTime>("expect");
+ QTest::newRow("LocalTime/LocalTime")
+ << Qt::LocalTime // << 0 << ""
+ << localNoon << localNoon;
+ QTest::newRow("LocalTime/UTC")
+ << Qt::LocalTime // << 0 << ""
+ << localNoon.toUTC() << localNoon;
+ QTest::newRow("UTC/LocalTime")
+ << Qt::UTC // << 0 << ""
+ << localNoon << localNoon.toUTC();
+ QTest::newRow("UTC/UTC")
+ << Qt::UTC // << 0 << ""
+ << localNoon.toUTC() << localNoon.toUTC();
+}
+
+void tst_QDateTimeEdit::setDateTime()
+{
+ QFETCH(const Qt::TimeSpec, spec);
+#if 0 // Not yet supported
+ QFETCH(const int, offset);
+ QFETCH(const QByteArray, zoneName);
+#endif // configuring the spec, when OffsetFromUTC or TimeZone
+ QFETCH(const QDateTime, store);
+ QFETCH(const QDateTime, expect);
+ QDateTimeEdit editor;
+ editor.setTimeSpec(spec);
+ editor.setDateTime(store);
+ QCOMPARE(editor.dateTime(), expect);
+}
+
void tst_QDateTimeEdit::cachedDayTest()
{
testWidget->setDisplayFormat("MM/dd");
diff --git a/tests/auto/widgets/widgets/qdial/tst_qdial.cpp b/tests/auto/widgets/widgets/qdial/tst_qdial.cpp
index 7db3b44dc8..356f773ae9 100644
--- a/tests/auto/widgets/widgets/qdial/tst_qdial.cpp
+++ b/tests/auto/widgets/widgets/qdial/tst_qdial.cpp
@@ -98,7 +98,7 @@ void tst_QDial::sliderMoved()
QPoint init(dial.width()/4, dial.height()/2);
QMouseEvent pressevent(QEvent::MouseButtonPress, init,
- Qt::LeftButton, Qt::LeftButton, 0);
+ Qt::LeftButton, Qt::LeftButton, {});
qApp->sendEvent(&dial, &pressevent);
QSignalSpy sliderspy(&dial, SIGNAL(sliderMoved(int)));
@@ -108,7 +108,7 @@ void tst_QDial::sliderMoved()
{ //move on top of the slider
init = QPoint(dial.width()/2, dial.height()/4);
QMouseEvent moveevent(QEvent::MouseMove, init,
- Qt::LeftButton, Qt::LeftButton, 0);
+ Qt::LeftButton, Qt::LeftButton, {});
qApp->sendEvent(&dial, &moveevent);
QCOMPARE( sliderspy.count(), 1);
QCOMPARE( valuespy.count(), 0);
@@ -118,14 +118,14 @@ void tst_QDial::sliderMoved()
{ //move on the right of the slider
init = QPoint(dial.width()*3/4, dial.height()/2);
QMouseEvent moveevent(QEvent::MouseMove, init,
- Qt::LeftButton, Qt::LeftButton, 0);
+ Qt::LeftButton, Qt::LeftButton, {});
qApp->sendEvent(&dial, &moveevent);
QCOMPARE( sliderspy.count(), 2);
QCOMPARE( valuespy.count(), 0);
}
QMouseEvent releaseevent(QEvent::MouseButtonRelease, init,
- Qt::LeftButton, Qt::LeftButton, 0);
+ Qt::LeftButton, Qt::LeftButton, {});
qApp->sendEvent(&dial, &releaseevent);
QCOMPARE( valuespy.count(), 1); // valuechanged signal should be called at this point
diff --git a/tests/auto/widgets/widgets/qdialogbuttonbox/tst_qdialogbuttonbox.cpp b/tests/auto/widgets/widgets/qdialogbuttonbox/tst_qdialogbuttonbox.cpp
index 7e0cb99ea8..6a2c8893d2 100644
--- a/tests/auto/widgets/widgets/qdialogbuttonbox/tst_qdialogbuttonbox.cpp
+++ b/tests/auto/widgets/widgets/qdialogbuttonbox/tst_qdialogbuttonbox.cpp
@@ -163,7 +163,7 @@ void tst_QDialogButtonBox::testConstructor3_data()
QTest::addColumn<QDialogButtonBox::StandardButtons>("buttons");
QTest::addColumn<int>("buttonCount");
- QTest::newRow("nothing") << int(Qt::Horizontal) << (QDialogButtonBox::StandardButtons)0 << 0;
+ QTest::newRow("nothing") << int(Qt::Horizontal) << QDialogButtonBox::StandardButtons{} << 0;
QTest::newRow("only 1") << int(Qt::Horizontal) << QDialogButtonBox::StandardButtons(QDialogButtonBox::Ok) << 1;
QTest::newRow("only 1.. twice") << int(Qt::Horizontal)
<< (QDialogButtonBox::Ok | QDialogButtonBox::Ok)
@@ -199,7 +199,7 @@ void tst_QDialogButtonBox::testConstructor4_data()
QTest::addColumn<QDialogButtonBox::StandardButtons>("buttons");
QTest::addColumn<int>("buttonCount");
- QTest::newRow("nothing") << (QDialogButtonBox::StandardButtons)0 << 0;
+ QTest::newRow("nothing") << QDialogButtonBox::StandardButtons{} << 0;
QTest::newRow("only 1") << QDialogButtonBox::StandardButtons(QDialogButtonBox::Ok) << 1;
QTest::newRow("only 1.. twice")
<< (QDialogButtonBox::Ok | QDialogButtonBox::Ok)
diff --git a/tests/auto/widgets/widgets/qgroupbox/tst_qgroupbox.cpp b/tests/auto/widgets/widgets/qgroupbox/tst_qgroupbox.cpp
index bf14020b24..4fb5d262ca 100644
--- a/tests/auto/widgets/widgets/qgroupbox/tst_qgroupbox.cpp
+++ b/tests/auto/widgets/widgets/qgroupbox/tst_qgroupbox.cpp
@@ -387,7 +387,7 @@ void tst_QGroupBox::clicked()
QStyle::SubControl(areaToHit), &testWidget);
if (rect.isValid())
- QTest::mouseClick(&testWidget, Qt::LeftButton, 0, rect.center());
+ QTest::mouseClick(&testWidget, Qt::LeftButton, {}, rect.center());
else
QTest::mouseClick(&testWidget, Qt::LeftButton);
@@ -420,7 +420,7 @@ void tst_QGroupBox::toggledVsClicked()
QRect rect = groupBox.style()->subControlRect(QStyle::CC_GroupBox, &option,
QStyle::SC_GroupBoxCheckBox, &groupBox);
- QTest::mouseClick(&groupBox, Qt::LeftButton, 0, rect.center());
+ QTest::mouseClick(&groupBox, Qt::LeftButton, {}, rect.center());
QCOMPARE(clickSpy.count(), 1);
QCOMPARE(toggleSpy.count(), 2);
QVERIFY(toggleTimeStamp < clickTimeStamp);
@@ -500,11 +500,11 @@ void tst_QGroupBox::task_QTBUG_19170_ignoreMouseReleaseEvent()
QRect rect = box.style()->subControlRect(QStyle::CC_GroupBox, &option,
QStyle::SC_GroupBoxCheckBox, &box);
- QTest::mouseClick(&box, Qt::LeftButton, 0, rect.center());
+ QTest::mouseClick(&box, Qt::LeftButton, {}, rect.center());
QCOMPARE(box.isChecked(), true);
box.setChecked(false);
- QTest::mouseRelease(&box, Qt::LeftButton, 0, rect.center());
+ QTest::mouseRelease(&box, Qt::LeftButton, {}, rect.center());
QCOMPARE(box.isChecked(), false);
}
@@ -558,19 +558,19 @@ void tst_QGroupBox::task_QTBUG_15519_propagateMouseEvents()
// Without a checkbox, all mouse events should propagate
parent.reset();
- QTest::mousePress(&box, Qt::LeftButton, 0, checkBoxRect.center());
+ QTest::mousePress(&box, Qt::LeftButton, {}, checkBoxRect.center());
QCOMPARE(parent.mousePressed, true);
parent.reset();
- QTest::mousePress(&box, Qt::LeftButton, 0, box.rect().center());
+ QTest::mousePress(&box, Qt::LeftButton, {}, box.rect().center());
QCOMPARE(parent.mousePressed, true);
parent.reset();
- QTest::mouseRelease(&box, Qt::LeftButton, 0, checkBoxRect.center());
+ QTest::mouseRelease(&box, Qt::LeftButton, {}, checkBoxRect.center());
QCOMPARE(parent.mouseReleased, true);
parent.reset();
- QTest::mouseRelease(&box, Qt::LeftButton, 0, box.rect().center());
+ QTest::mouseRelease(&box, Qt::LeftButton, {}, box.rect().center());
QCOMPARE(parent.mouseReleased, true);
parent.reset();
@@ -586,19 +586,19 @@ void tst_QGroupBox::task_QTBUG_15519_propagateMouseEvents()
box.setCheckable(true);
parent.reset();
- QTest::mousePress(&box, Qt::LeftButton, 0, checkBoxRect.center());
+ QTest::mousePress(&box, Qt::LeftButton, {}, checkBoxRect.center());
QCOMPARE(parent.mousePressed, false);
parent.reset();
- QTest::mousePress(&box, Qt::LeftButton, 0, box.rect().center());
+ QTest::mousePress(&box, Qt::LeftButton, {}, box.rect().center());
QCOMPARE(parent.mousePressed, true);
parent.reset();
- QTest::mouseRelease(&box, Qt::LeftButton, 0, checkBoxRect.center());
+ QTest::mouseRelease(&box, Qt::LeftButton, {}, checkBoxRect.center());
QCOMPARE(parent.mouseReleased, false);
parent.reset();
- QTest::mouseRelease(&box, Qt::LeftButton, 0, box.rect().center());
+ QTest::mouseRelease(&box, Qt::LeftButton, {}, box.rect().center());
QCOMPARE(parent.mouseReleased, true);
parent.reset();
diff --git a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp
index a8b68c18ca..bf31f12958 100644
--- a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp
+++ b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp
@@ -79,24 +79,22 @@ using namespace QTestPrivate;
class StyleOptionTestStyle : public QCommonStyle
{
-private:
- bool readOnly;
-
public:
- inline StyleOptionTestStyle() : QCommonStyle(), readOnly(false)
- {
- }
+ bool readOnly = false;
+ mutable bool wasDrawn = false;
- inline void setReadOnly(bool readOnly)
+ using QCommonStyle::QCommonStyle;
+ void setReadOnly(bool readOnly)
{
this->readOnly = readOnly;
}
- inline void drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *,
- const QWidget *) const
+ void drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *,
+ const QWidget *) const override
{
switch (pe) {
case PE_PanelLineEdit:
+ wasDrawn = true;
if (readOnly)
QVERIFY(opt->state & QStyle::State_ReadOnly);
else
@@ -322,8 +320,8 @@ protected slots:
private:
// keyClicks(..) is moved to QtTestCase
- void psKeyClick(QWidget *target, Qt::Key key, Qt::KeyboardModifiers pressState = 0);
- void psKeyClick(QTestEventList &keys, Qt::Key key, Qt::KeyboardModifiers pressState = 0);
+ void psKeyClick(QWidget *target, Qt::Key key, Qt::KeyboardModifiers pressState = {});
+ void psKeyClick(QTestEventList &keys, Qt::Key key, Qt::KeyboardModifiers pressState = {});
bool unselectingWithLeftOrRightChangesCursorPosition();
#if QT_CONFIG(shortcut)
void addKeySequenceStandardKey(QTestEventList &keys, QKeySequence::StandardKey);
@@ -772,6 +770,14 @@ void tst_QLineEdit::keypress_inputMask_data()
}
{
QTestEventList keys;
+ // inserting at end
+ addKeySequenceStandardKey(keys, QKeySequence::MoveToEndOfLine);
+ keys.addKeyClick(Qt::Key_Left);
+ keys.addKeyClick(Qt::Key_0);
+ QTest::newRow("insert at end") << QString("9-9-9") << keys << QString("--0") << QString(" - -0");
+ }
+ {
+ QTestEventList keys;
// inserting '12.12' then two backspaces
addKeySequenceStandardKey(keys, QKeySequence::MoveToStartOfLine);
keys.addKeyClick(Qt::Key_1);
@@ -879,9 +885,6 @@ void tst_QLineEdit::hasAcceptableInputMask()
qApp->sendEvent(testWidget, &lostFocus);
QVERIFY(validInput);
- // at the moment we don't strip the blank character if it is valid input, this makes the test between x vs X useless
- QEXPECT_FAIL( "Any optional and required", "To eat blanks or not? Known issue. Task 43172", Abort);
-
// test requiredMask
testWidget->setInputMask(requiredMask);
validInput = true;
@@ -2288,7 +2291,7 @@ void tst_QLineEdit::deleteSelectedText()
edit.selectAll();
- QTest::keyClick(&edit, Qt::Key_Delete, 0);
+ QTest::keyClick(&edit, Qt::Key_Delete, {});
QVERIFY(edit.text().isEmpty());
edit.setText(text);
@@ -3279,19 +3282,22 @@ void tst_QLineEdit::readOnlyStyleOption()
QLineEdit *testWidget = ensureTestWidget();
bool wasReadOnly = testWidget->isReadOnly();
QStyle *oldStyle = testWidget->style();
+ testWidget->show();
+ QTRY_VERIFY(QTest::qWaitForWindowExposed(testWidget));
StyleOptionTestStyle myStyle;
testWidget->setStyle(&myStyle);
myStyle.setReadOnly(true);
testWidget->setReadOnly(true);
- testWidget->repaint();
- qApp->processEvents();
+ testWidget->update();
+ QTRY_VERIFY(myStyle.wasDrawn);
+ myStyle.wasDrawn = false;
testWidget->setReadOnly(false);
myStyle.setReadOnly(false);
- testWidget->repaint();
- qApp->processEvents();
+ testWidget->update();
+ QTRY_VERIFY(myStyle.wasDrawn);
testWidget->setReadOnly(wasReadOnly);
testWidget->setStyle(oldStyle);
@@ -3588,7 +3594,7 @@ void tst_QLineEdit::textMargin()
QCOMPARE(bottom, b);
#endif
- QTest::mouseClick(&testWidget, Qt::LeftButton, 0, mousePressPos);
+ QTest::mouseClick(&testWidget, Qt::LeftButton, {}, mousePressPos);
QTRY_COMPARE(testWidget.cursorPosition(), cursorPosition);
}
@@ -4502,7 +4508,7 @@ void tst_QLineEdit::clearButton()
QTRY_COMPARE(filterModel->rowCount(), 1); // matches 'ab'
QSignalSpy spyEdited(filterLineEdit, &QLineEdit::textEdited);
const QPoint clearButtonCenterPos = QRect(QPoint(0, 0), clearButton->size()).center();
- QTest::mouseClick(clearButton, Qt::LeftButton, 0, clearButtonCenterPos);
+ QTest::mouseClick(clearButton, Qt::LeftButton, {}, clearButtonCenterPos);
QCOMPARE(spyEdited.count(), 1);
QTRY_COMPARE(clearButton->cursor().shape(), filterLineEdit->cursor().shape());
QTRY_COMPARE(filterModel->rowCount(), 3);
@@ -4547,7 +4553,7 @@ void tst_QLineEdit::clearButtonVisibleAfterSettingText_QTBUG_45518()
QTRY_VERIFY(clearButton->opacity() > 0);
QTRY_COMPARE(clearButton->cursor().shape(), Qt::ArrowCursor);
- QTest::mouseClick(clearButton, Qt::LeftButton, nullptr, clearButton->rect().center());
+ QTest::mouseClick(clearButton, Qt::LeftButton, {}, clearButton->rect().center());
QTRY_COMPARE(edit.text(), QString());
QTRY_COMPARE(clearButton->opacity(), qreal(0));
diff --git a/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp b/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp
index 17eb281408..01d625d091 100644
--- a/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp
+++ b/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp
@@ -67,13 +67,13 @@ public:
}
void timerEvent(QTimerEvent*)
{
- qApp->postEvent(m_tb, new QMouseEvent(QEvent::MouseButtonPress, QPoint(6, 7), Qt::LeftButton, 0, 0));
- qApp->postEvent(m_tb, new QMouseEvent(QEvent::MouseMove, QPoint(7, 8), Qt::LeftButton, Qt::LeftButton, 0));
- qApp->postEvent(m_tb, new QMouseEvent(QEvent::MouseMove, QPoint(27, 23), Qt::LeftButton, Qt::LeftButton, 0));
- qApp->postEvent(m_tb, new QMouseEvent(QEvent::MouseMove, QPoint(30, 27), Qt::LeftButton, Qt::LeftButton, 0));
- qApp->postEvent(m_tb, new QMouseEvent(QEvent::MouseMove, QPoint(162, 109), Qt::LeftButton, Qt::LeftButton, 0));
- qApp->postEvent(m_tb, new QMouseEvent(QEvent::MouseMove, QPoint(10, 4), Qt::LeftButton, Qt::LeftButton, 0));
- qApp->postEvent(m_tb, new QMouseEvent(QEvent::MouseButtonRelease, QPoint(9, 4), Qt::LeftButton, 0, 0));
+ QCoreApplication::postEvent(m_tb, new QMouseEvent(QEvent::MouseButtonPress, QPoint(6, 7), Qt::LeftButton, {}, {}));
+ QCoreApplication::postEvent(m_tb, new QMouseEvent(QEvent::MouseMove, QPoint(7, 8), Qt::LeftButton, Qt::LeftButton, {}));
+ QCoreApplication::postEvent(m_tb, new QMouseEvent(QEvent::MouseMove, QPoint(27, 23), Qt::LeftButton, Qt::LeftButton, {}));
+ QCoreApplication::postEvent(m_tb, new QMouseEvent(QEvent::MouseMove, QPoint(30, 27), Qt::LeftButton, Qt::LeftButton, {}));
+ QCoreApplication::postEvent(m_tb, new QMouseEvent(QEvent::MouseMove, QPoint(162, 109), Qt::LeftButton, Qt::LeftButton, {}));
+ QCoreApplication::postEvent(m_tb, new QMouseEvent(QEvent::MouseMove, QPoint(10, 4), Qt::LeftButton, Qt::LeftButton, {}));
+ QCoreApplication::postEvent(m_tb, new QMouseEvent(QEvent::MouseButtonRelease, QPoint(9, 4), Qt::LeftButton, {}, {}));
}
};
@@ -91,8 +91,8 @@ public:
void timerEvent(QTimerEvent*)
{
- qApp->postEvent(m_w, new QMouseEvent(QEvent::MouseButtonPress, QPoint(230, 370), Qt::LeftButton, 0, 0));
- qApp->postEvent(m_w, new QMouseEvent(QEvent::MouseButtonRelease, QPoint(230, 370), Qt::LeftButton, 0, 0));
+ QCoreApplication::postEvent(m_w, new QMouseEvent(QEvent::MouseButtonPress, QPoint(230, 370), Qt::LeftButton, {}, {}));
+ QCoreApplication::postEvent(m_w, new QMouseEvent(QEvent::MouseButtonRelease, QPoint(230, 370), Qt::LeftButton, {}, {}));
}
};
diff --git a/tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp b/tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp
index 9fe8cd8109..352a6314f3 100644
--- a/tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp
+++ b/tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp
@@ -331,7 +331,7 @@ void tst_QMdiArea::subWindowActivated()
int i;
for ( i = 0; i < count; ++i ) {
- QWidget *widget = new QWidget(workspace, 0);
+ QWidget *widget = new QWidget(workspace, {});
widget->setAttribute(Qt::WA_DeleteOnClose);
widget->setFocus();
workspace->addSubWindow(widget)->show();
@@ -2694,30 +2694,6 @@ void tst_QMdiArea::nativeSubWindows()
foreach (QMdiSubWindow *subWindow, mdiArea.subWindowList())
QVERIFY(subWindow->internalWinId());
}
-
-#ifndef QT_NO_OPENGL
- {
- if (!QGLFormat::hasOpenGL())
- QSKIP("QGL not supported on this platform");
-
- QMdiArea mdiArea;
- QGLWidget *glViewport = new QGLWidget;
- mdiArea.setViewport(glViewport);
- mdiArea.addSubWindow(new QWidget);
- mdiArea.addSubWindow(new QWidget);
- mdiArea.show();
- QVERIFY(QTest::qWaitForWindowExposed(&mdiArea));
-
- const QGLContext *context = glViewport->context();
- if (!context || !context->isValid())
- QSKIP("QGL is broken, cannot continue test");
-
- // The viewport and all the sub-windows must be native.
- QVERIFY(mdiArea.viewport()->internalWinId());
- foreach (QMdiSubWindow *subWindow, mdiArea.subWindowList())
- QVERIFY(subWindow->internalWinId());
- }
-#endif
}
void tst_QMdiArea::task_209615()
diff --git a/tests/auto/widgets/widgets/qmenu/BLACKLIST b/tests/auto/widgets/widgets/qmenu/BLACKLIST
index ad6d2f340c..ba9c184a67 100644
--- a/tests/auto/widgets/widgets/qmenu/BLACKLIST
+++ b/tests/auto/widgets/widgets/qmenu/BLACKLIST
@@ -11,3 +11,5 @@ osx-10.13
osx-10.14
[activeSubMenuPosition]
winrt
+[submenuTearOffDontClose]
+macos # Can't move cursor (QTBUG-76312)
diff --git a/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp b/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp
index 823084ee43..207327f073 100644
--- a/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp
+++ b/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp
@@ -319,12 +319,12 @@ void tst_QMenu::mouseActivation()
menu.addAction("Menu Action");
menu.move(topLevel.geometry().topRight() + QPoint(50, 0));
menu.show();
- QTest::mouseClick(&menu, Qt::LeftButton, 0, menu.rect().center(), 300);
+ QTest::mouseClick(&menu, Qt::LeftButton, {}, menu.rect().center(), 300);
QVERIFY(!menu.isVisible());
//context menus can always be accessed with right click except on windows
menu.show();
- QTest::mouseClick(&menu, Qt::RightButton, 0, menu.rect().center(), 300);
+ QTest::mouseClick(&menu, Qt::RightButton, {}, menu.rect().center(), 300);
QVERIFY(!menu.isVisible());
#ifdef Q_OS_WIN
@@ -643,7 +643,7 @@ void tst_QMenu::tearOff()
MenuMetrics mm(menu.data());
const int tearOffOffset = mm.fw + mm.vmargin + mm.tearOffHeight / 2;
- QTest::mouseClick(menu.data(), Qt::LeftButton, 0, QPoint(10, tearOffOffset), 10);
+ QTest::mouseClick(menu.data(), Qt::LeftButton, {}, QPoint(10, tearOffOffset), 10);
QTRY_VERIFY(menu->isTearOffMenuVisible());
QPointer<QMenu> torn = getTornOffMenu();
QVERIFY(torn);
@@ -723,7 +723,7 @@ void tst_QMenu::submenuTearOffDontClose()
const QPoint submenuPos(submenuRect.topLeft() + QPoint(3, 3));
// Move then click to avoid the submenu moves from causing it to close
QTest::mouseMove(menu, submenuPos, 100);
- QTest::mouseClick(menu, Qt::LeftButton, 0, submenuPos, 100);
+ QTest::mouseClick(menu, Qt::LeftButton, {}, submenuPos, 100);
QVERIFY(QTest::qWaitFor([&]() { return submenu->window()->windowHandle(); }));
QVERIFY(QTest::qWaitForWindowActive(submenu));
// Make sure we enter the submenu frame directly on the tear-off area
@@ -888,7 +888,7 @@ void tst_QMenu::task176201_clear()
QAction *action = menu.addAction("test");
menu.connect(action, SIGNAL(triggered()), SLOT(clear()));
menu.popup(QPoint());
- QTest::mouseClick(&menu, Qt::LeftButton, 0, menu.rect().center());
+ QTest::mouseClick(&menu, Qt::LeftButton, {}, menu.rect().center());
}
void tst_QMenu::task250673_activeMultiColumnSubMenuPosition()
@@ -1066,6 +1066,10 @@ static inline QByteArray msgGeometryIntersects(const QRect &r1, const QRect &r2)
void tst_QMenu::pushButtonPopulateOnAboutToShow()
{
+#ifdef Q_OS_MACOS
+ QSKIP("Popup menus may partially overlap the button on macOS, and that's okey");
+#endif
+
QPushButton b("Test PushButton");
b.setWindowFlags(Qt::FramelessWindowHint | Qt::X11BypassWindowManagerHint);
@@ -1212,13 +1216,13 @@ void tst_QMenu::click_while_dismissing_submenu()
QVERIFY(sub.isVisible());
QVERIFY(QTest::qWaitForWindowExposed(&sub));
//press over the submenu entry
- QTest::mousePress(menuWindow, Qt::LeftButton, 0, menu.rect().center() + QPoint(0,2), 300);
+ QTest::mousePress(menuWindow, Qt::LeftButton, {}, menu.rect().center() + QPoint(0, 2), 300);
//move over the main action
QTest::mouseMove(menuWindow, menu.rect().center() - QPoint(0,2));
QVERIFY(menuHiddenSpy.wait());
//the submenu must have been hidden for the bug to be triggered
QVERIFY(!sub.isVisible());
- QTest::mouseRelease(menuWindow, Qt::LeftButton, 0, menu.rect().center() - QPoint(0,2), 300);
+ QTest::mouseRelease(menuWindow, Qt::LeftButton, {}, menu.rect().center() - QPoint(0, 2), 300);
QCOMPARE(spy.count(), 1);
}
#endif
@@ -1476,7 +1480,7 @@ void tst_QMenu::QTBUG_56917_wideSubmenuScreenNumber()
menu.popup(screen->geometry().center());
QVERIFY(QTest::qWaitForWindowExposed(&menu));
QVERIFY(menu.isVisible());
- QTest::mouseClick(&menu, Qt::LeftButton, 0, menu.actionGeometry(action).center());
+ QTest::mouseClick(&menu, Qt::LeftButton, {}, menu.actionGeometry(action).center());
QTest::qWait(100);
QVERIFY(QTest::qWaitForWindowExposed(&submenu));
QVERIFY(submenu.isVisible());
@@ -1688,7 +1692,7 @@ void tst_QMenu::tearOffMenuNotDisplayed()
MenuMetrics mm(menu.data());
const int tearOffOffset = mm.fw + mm.vmargin + mm.tearOffHeight / 2;
- QTest::mouseClick(menu.data(), Qt::LeftButton, 0, QPoint(10, tearOffOffset), 10);
+ QTest::mouseClick(menu.data(), Qt::LeftButton, {}, QPoint(10, tearOffOffset), 10);
QTRY_VERIFY(menu->isTearOffMenuVisible());
QPointer<QMenu> torn = getTornOffMenu();
QVERIFY(torn);
diff --git a/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp b/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp
index 8b372a78cf..8cbe821a68 100644
--- a/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp
+++ b/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp
@@ -1267,7 +1267,7 @@ void tst_QMenuBar::check_menuPosition()
const QPoint bottomRight = mb->actionGeometry(menu.menuAction()).bottomRight() - QPoint(1, 1);
const QPoint localPos = widgetToWindowPos(mb, bottomRight);
const QPoint globalPos = w.mapToGlobal(localPos);
- QTest::mouseClick(w.windowHandle(), Qt::LeftButton, 0, localPos);
+ QTest::mouseClick(w.windowHandle(), Qt::LeftButton, {}, localPos);
QTRY_VERIFY(menu.isActiveWindow());
QCOMPARE(menu.geometry().right() - 1, globalPos.x());
menu.close();
@@ -1332,9 +1332,9 @@ void tst_QMenuBar::task256322_highlight()
const QPoint filePos = menuBarActionWindowPos(win.menuBar(), file);
QWindow *window = win.windowHandle();
- QTest::mousePress(window, Qt::LeftButton, 0, filePos);
+ QTest::mousePress(window, Qt::LeftButton, {}, filePos);
QTest::mouseMove(window, filePos);
- QTest::mouseRelease(window, Qt::LeftButton, 0, filePos);
+ QTest::mouseRelease(window, Qt::LeftButton, {}, filePos);
QTRY_VERIFY(menu.isVisible());
QVERIFY(!menu2.isVisible());
QCOMPARE(win.menuBar()->activeAction(), file);
@@ -1507,11 +1507,11 @@ void tst_QMenuBar::closeOnSecondClickAndOpenOnThirdClick() // QTBUG-32807, menu
QWindow *window = mainWindow.windowHandle();
QTest::mouseMove(window, center);
- QTest::mouseClick(window, Qt::LeftButton, 0, center);
+ QTest::mouseClick(window, Qt::LeftButton, {}, center);
QTRY_VERIFY(fileMenu->isVisible());
- QTest::mouseClick(window, Qt::LeftButton, 0, fileMenu->mapFromGlobal(globalPos));
+ QTest::mouseClick(window, Qt::LeftButton, {}, fileMenu->mapFromGlobal(globalPos));
QTRY_VERIFY(!fileMenu->isVisible());
- QTest::mouseClick(window, Qt::LeftButton, 0, center);
+ QTest::mouseClick(window, Qt::LeftButton, {}, center);
QTRY_VERIFY(fileMenu->isVisible());
}
@@ -1600,12 +1600,12 @@ void tst_QMenuBar::taskQTBUG53205_crashReparentNested()
QApplication::setActiveWindow(&mainWindow);
// they can't be windows
- QWidget hiddenParent(&mainWindow, 0);
+ QWidget hiddenParent(&mainWindow, {});
//this one is going to be moved around
- QWidget movingParent(&hiddenParent, 0);
+ QWidget movingParent(&hiddenParent, {});
//set up the container widget
- QWidget containerWidget(&movingParent,0);
+ QWidget containerWidget(&movingParent, {});
//set the new parent, a window
QScopedPointer<QWidget> windowedParent;
@@ -1616,7 +1616,7 @@ void tst_QMenuBar::taskQTBUG53205_crashReparentNested()
QVERIFY(QTest::qWaitForWindowExposed(windowedParent.data()));
//set the "container", can't be a window
- QWidget containedWidget(&containerWidget, 0);
+ QWidget containedWidget(&containerWidget, {});
taskQTBUG53205MenuBar = new QMenuBar(&containedWidget);
@@ -1624,13 +1624,13 @@ void tst_QMenuBar::taskQTBUG53205_crashReparentNested()
//now, move things around
//from : QMainWindow<-hiddenParent<-movingParent<-containerWidget<-containedWidget<-menuBar
//to windowedParent<-movingParent<-containerWidget<-containedWidget<-menuBar
- movingParent.setParent(windowedParent.data(),0);
+ movingParent.setParent(windowedParent.data(), {});
// this resets the parenting and the menu bar's window
taskQTBUG53205MenuBar->setParent(nullptr);
taskQTBUG53205MenuBar->setParent(&containedWidget);
//from windowedParent<-movingParent<-containerWidget<-containedWidget<-menuBar
//to : QMainWindow<-hiddenParent<-movingParent<-containerWidget<-containedWidget<-menuBar
- movingParent.setParent(&hiddenParent,0);
+ movingParent.setParent(&hiddenParent, {});
windowedParent.reset(); //make the old window invalid
// trigger the aciton, reset the menu bar's window, this used to crash here.
testMenus.actions[0]->trigger();
diff --git a/tests/auto/widgets/widgets/qopenglwidget/qopenglwidget.pro b/tests/auto/widgets/widgets/qopenglwidget/qopenglwidget.pro
index 2d4cff9e10..039f5a71b8 100644
--- a/tests/auto/widgets/widgets/qopenglwidget/qopenglwidget.pro
+++ b/tests/auto/widgets/widgets/qopenglwidget/qopenglwidget.pro
@@ -1,5 +1,5 @@
CONFIG += testcase
TARGET = tst_qopenglwidget
-QT += gui-private core-private testlib widgets
+QT += opengl gui-private core-private testlib widgets
SOURCES += tst_qopenglwidget.cpp
diff --git a/tests/auto/widgets/widgets/qopenglwidget/tst_qopenglwidget.cpp b/tests/auto/widgets/widgets/qopenglwidget/tst_qopenglwidget.cpp
index 17a5fe2cd9..e96e292525 100644
--- a/tests/auto/widgets/widgets/qopenglwidget/tst_qopenglwidget.cpp
+++ b/tests/auto/widgets/widgets/qopenglwidget/tst_qopenglwidget.cpp
@@ -26,7 +26,7 @@
**
****************************************************************************/
-#include <QtWidgets/QOpenGLWidget>
+#include <QtOpenGL/QOpenGLWidget>
#include <QtGui/QOpenGLFunctions>
#include <QtGui/QPainter>
#include <QtGui/QScreen>
diff --git a/tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp b/tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp
index 336b6ebfd5..a86784f2ec 100644
--- a/tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp
+++ b/tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp
@@ -155,6 +155,7 @@ private slots:
#if QT_CONFIG(scrollbar)
void updateAfterChangeCenterOnScroll();
#endif
+ void updateCursorPositionAfterEdit();
private:
void createSelection();
@@ -1802,5 +1803,50 @@ void tst_QPlainTextEdit::updateAfterChangeCenterOnScroll()
#endif
+void tst_QPlainTextEdit::updateCursorPositionAfterEdit()
+{
+ QPlainTextEdit plaintextEdit;
+ plaintextEdit.setPlainText("some text some text\nsome text some text");
+
+ const auto initialPosition = 1;
+
+ // select some text
+ auto cursor = plaintextEdit.textCursor();
+ cursor.setPosition(initialPosition, QTextCursor::MoveAnchor);
+ cursor.setPosition(initialPosition + 3, QTextCursor::KeepAnchor);
+ plaintextEdit.setTextCursor(cursor);
+ QVERIFY(plaintextEdit.textCursor().hasSelection());
+
+ QTest::keyClick(&plaintextEdit, Qt::Key_Delete);
+ QTest::keyClick(&plaintextEdit, Qt::Key_Down);
+ QTest::keyClick(&plaintextEdit, Qt::Key_Up);
+
+ // Moving the cursor down and up should bring it to the initial position
+ QCOMPARE(plaintextEdit.textCursor().position(), initialPosition);
+
+ // Test the same with backspace
+ cursor = plaintextEdit.textCursor();
+ cursor.setPosition(initialPosition + 3, QTextCursor::KeepAnchor);
+ plaintextEdit.setTextCursor(cursor);
+ QVERIFY(plaintextEdit.textCursor().hasSelection());
+
+ QTest::keyClick(&plaintextEdit, Qt::Key_Backspace);
+ QTest::keyClick(&plaintextEdit, Qt::Key_Down);
+ QTest::keyClick(&plaintextEdit, Qt::Key_Up);
+
+ // Moving the cursor down and up should bring it to the initial position
+ QCOMPARE(plaintextEdit.textCursor().position(), initialPosition);
+
+ // Test insertion
+ const QString txt("txt");
+ QApplication::clipboard()->setText(txt);
+ plaintextEdit.paste();
+ QTest::keyClick(&plaintextEdit, Qt::Key_Down);
+ QTest::keyClick(&plaintextEdit, Qt::Key_Up);
+
+ // The curser should move back to the end of the copied text
+ QCOMPARE(plaintextEdit.textCursor().position(), initialPosition + txt.length());
+}
+
QTEST_MAIN(tst_QPlainTextEdit)
#include "tst_qplaintextedit.moc"
diff --git a/tests/auto/widgets/widgets/qscrollbar/tst_qscrollbar.cpp b/tests/auto/widgets/widgets/qscrollbar/tst_qscrollbar.cpp
index 339ff293f4..2452bc34c5 100644
--- a/tests/auto/widgets/widgets/qscrollbar/tst_qscrollbar.cpp
+++ b/tests/auto/widgets/widgets/qscrollbar/tst_qscrollbar.cpp
@@ -120,11 +120,11 @@ void tst_QScrollBar::task_209492()
const QPoint pressPoint(verticalScrollBar->width() / 2, verticalScrollBar->height() - 10);
const QPoint globalPressPoint = verticalScrollBar->mapToGlobal(globalPressPoint);
QMouseEvent mousePressEvent(QEvent::MouseButtonPress, pressPoint, globalPressPoint,
- Qt::LeftButton, Qt::LeftButton, 0);
+ Qt::LeftButton, Qt::LeftButton, {});
QApplication::sendEvent(verticalScrollBar, &mousePressEvent);
QTest::qWait(1);
QMouseEvent mouseReleaseEvent(QEvent::MouseButtonRelease, pressPoint, globalPressPoint,
- Qt::LeftButton, Qt::LeftButton, 0);
+ Qt::LeftButton, Qt::LeftButton, {});
QApplication::sendEvent(verticalScrollBar, &mouseReleaseEvent);
// Check that the action was triggered once.
@@ -189,11 +189,11 @@ void tst_QScrollBar::QTBUG_42871()
const QPoint pressPoint(scrollBarWidget.width() / 2, scrollBarWidget.height() - 10);
const QPoint globalPressPoint = scrollBarWidget.mapToGlobal(pressPoint);
QMouseEvent mousePressEvent(QEvent::MouseButtonPress, pressPoint, globalPressPoint,
- Qt::LeftButton, Qt::LeftButton, 0);
+ Qt::LeftButton, Qt::LeftButton, {});
QApplication::sendEvent(&scrollBarWidget, &mousePressEvent);
QTest::qWait(1);
QMouseEvent mouseReleaseEvent(QEvent::MouseButtonRelease, pressPoint, globalPressPoint,
- Qt::LeftButton, Qt::LeftButton, 0);
+ Qt::LeftButton, Qt::LeftButton, {});
QApplication::sendEvent(&scrollBarWidget, &mouseReleaseEvent);
// Check that the action was triggered once.
QCOMPARE(myHandler.updatesCount, 1);
diff --git a/tests/auto/widgets/widgets/qspinbox/tst_qspinbox.cpp b/tests/auto/widgets/widgets/qspinbox/tst_qspinbox.cpp
index b5d2e68118..5b49e3484c 100644
--- a/tests/auto/widgets/widgets/qspinbox/tst_qspinbox.cpp
+++ b/tests/auto/widgets/widgets/qspinbox/tst_qspinbox.cpp
@@ -505,26 +505,27 @@ void tst_QSpinBox::valueChangedHelper(int value)
actualValues << value;
}
-class MySpinBox: public QSpinBox
+class ReadOnlyChangeTracker: public QSpinBox
{
public:
- MySpinBox(QWidget *parent = 0) : QSpinBox(parent) {}
+ ReadOnlyChangeTracker(QWidget *parent = 0) : QSpinBox(parent) {}
void changeEvent(QEvent *ev) {
- eventsReceived.append(ev->type());
+ if (ev->type() == QEvent::ReadOnlyChange)
+ ++readOnlyChangeEventCount;
}
- QList<QEvent::Type> eventsReceived;
+ int readOnlyChangeEventCount = 0;
};
void tst_QSpinBox::setReadOnly()
{
- MySpinBox spin(0);
+ ReadOnlyChangeTracker spin(0);
spin.show();
QTest::keyClick(&spin, Qt::Key_Up);
QCOMPARE(spin.value(), 1);
spin.setReadOnly(true);
#ifndef Q_OS_WINRT // QTBUG-68297
- QCOMPARE(spin.eventsReceived, QList<QEvent::Type>() << QEvent::ReadOnlyChange);
+ QCOMPARE(spin.readOnlyChangeEventCount, 1);
#endif
QTest::keyClick(&spin, Qt::Key_Up);
QCOMPARE(spin.value(), 1);
@@ -532,7 +533,7 @@ void tst_QSpinBox::setReadOnly()
QCOMPARE(spin.value(), 2);
spin.setReadOnly(false);
#ifndef Q_OS_WINRT // QTBUG-68297
- QCOMPARE(spin.eventsReceived, QList<QEvent::Type>() << QEvent::ReadOnlyChange << QEvent::ReadOnlyChange);
+ QCOMPARE(spin.readOnlyChangeEventCount, 2);
#endif
QTest::keyClick(&spin, Qt::Key_Up);
QCOMPARE(spin.value(), 3);
diff --git a/tests/auto/widgets/widgets/qtabbar/tst_qtabbar.cpp b/tests/auto/widgets/widgets/qtabbar/tst_qtabbar.cpp
index 550cca8145..bc1496d0f6 100644
--- a/tests/auto/widgets/widgets/qtabbar/tst_qtabbar.cpp
+++ b/tests/auto/widgets/widgets/qtabbar/tst_qtabbar.cpp
@@ -60,6 +60,10 @@ private slots:
void removeTab_data();
void removeTab();
+ void hideTab_data();
+ void hideTab();
+ void hideAllTabs();
+
void setElideMode_data();
void setElideMode();
void sizeHints();
@@ -244,6 +248,73 @@ void tst_QTabBar::removeTab()
QTEST(tabbar.currentIndex(), "finalIndex");
}
+void tst_QTabBar::hideTab_data()
+{
+ QTest::addColumn<int>("currentIndex");
+ QTest::addColumn<int>("hideIndex");
+ QTest::addColumn<int>("spyCount");
+ QTest::addColumn<int>("finalIndex");
+
+ QTest::newRow("hideEnd") << 0 << 2 << 0 << 0;
+ QTest::newRow("hideEndWithIndexOnEnd") << 2 << 2 << 1 << 1;
+ QTest::newRow("hideMiddle") << 2 << 1 << 0 << 2;
+ QTest::newRow("hideMiddleOnMiddle") << 1 << 1 << 1 << 2;
+ QTest::newRow("hideFirst") << 2 << 0 << 0 << 2;
+ QTest::newRow("hideFirstOnFirst") << 0 << 0 << 1 << 1;
+}
+
+void tst_QTabBar::hideTab()
+{
+ QTabBar tabbar;
+
+ QFETCH(int, currentIndex);
+ QFETCH(int, hideIndex);
+ tabbar.addTab("foo");
+ tabbar.addTab("bar");
+ tabbar.addTab("baz");
+ tabbar.setCurrentIndex(currentIndex);
+ QSignalSpy spy(&tabbar, &QTabBar::currentChanged);
+ tabbar.setTabVisible(hideIndex, false);
+ QTEST(spy.count(), "spyCount");
+ QTEST(tabbar.currentIndex(), "finalIndex");
+}
+
+void tst_QTabBar::hideAllTabs()
+{
+ QTabBar tabbar;
+
+ tabbar.addTab("foo");
+ tabbar.addTab("bar");
+ tabbar.addTab("baz");
+ tabbar.setCurrentIndex(0);
+
+ // Check we don't crash trying to hide an unexistant tab
+ QSize prevSizeHint = tabbar.sizeHint();
+ tabbar.setTabVisible(3, false);
+ QCOMPARE(tabbar.currentIndex(), 0);
+ QSize sizeHint = tabbar.sizeHint();
+ QVERIFY(sizeHint.width() == prevSizeHint.width());
+ prevSizeHint = sizeHint;
+
+ tabbar.setTabVisible(1, false);
+ QCOMPARE(tabbar.currentIndex(), 0);
+ sizeHint = tabbar.sizeHint();
+ QVERIFY(sizeHint.width() < prevSizeHint.width());
+ prevSizeHint = sizeHint;
+
+ tabbar.setTabVisible(2, false);
+ QCOMPARE(tabbar.currentIndex(), 0);
+ sizeHint = tabbar.sizeHint();
+ QVERIFY(sizeHint.width() < prevSizeHint.width());
+ prevSizeHint = sizeHint;
+
+ tabbar.setTabVisible(0, false);
+ // We cannot set currentIndex < 0
+ QCOMPARE(tabbar.currentIndex(), 0);
+ sizeHint = tabbar.sizeHint();
+ QVERIFY(sizeHint.width() < prevSizeHint.width());
+}
+
void tst_QTabBar::setElideMode_data()
{
QTest::addColumn<int>("tabElideMode");
@@ -605,7 +676,7 @@ void tst_QTabBar::changeTitleWhileDoubleClickingTab()
QPoint tabPos = bar.tabRect(0).center();
for(int i=0; i < 10; i++)
- QTest::mouseDClick(&bar, Qt::LeftButton, 0, tabPos);
+ QTest::mouseDClick(&bar, Qt::LeftButton, {}, tabPos);
}
class Widget10052 : public QWidget
@@ -655,12 +726,12 @@ void tst_QTabBar::tabBarClicked()
while (button <= Qt::MaxMouseButton) {
const QPoint tabPos = tabBar.tabRect(0).center();
- QTest::mouseClick(&tabBar, button, 0, tabPos);
+ QTest::mouseClick(&tabBar, button, {}, tabPos);
QCOMPARE(clickSpy.count(), 1);
QCOMPARE(clickSpy.takeFirst().takeFirst().toInt(), 0);
QCOMPARE(doubleClickSpy.count(), 0);
- QTest::mouseDClick(&tabBar, button, 0, tabPos);
+ QTest::mouseDClick(&tabBar, button, {}, tabPos);
QCOMPARE(clickSpy.count(), 1);
QCOMPARE(clickSpy.takeFirst().takeFirst().toInt(), 0);
QCOMPARE(doubleClickSpy.count(), 1);
@@ -668,12 +739,12 @@ void tst_QTabBar::tabBarClicked()
const QPoint barPos(tabBar.tabRect(0).right() + 5, tabBar.tabRect(0).center().y());
- QTest::mouseClick(&tabBar, button, 0, barPos);
+ QTest::mouseClick(&tabBar, button, {}, barPos);
QCOMPARE(clickSpy.count(), 1);
QCOMPARE(clickSpy.takeFirst().takeFirst().toInt(), -1);
QCOMPARE(doubleClickSpy.count(), 0);
- QTest::mouseDClick(&tabBar, button, 0, barPos);
+ QTest::mouseDClick(&tabBar, button, {}, barPos);
QCOMPARE(clickSpy.count(), 1);
QCOMPARE(clickSpy.takeFirst().takeFirst().toInt(), -1);
QCOMPARE(doubleClickSpy.count(), 1);
diff --git a/tests/auto/widgets/widgets/qtabwidget/tst_qtabwidget.cpp b/tests/auto/widgets/widgets/qtabwidget/tst_qtabwidget.cpp
index a37042aeca..28b8bfc6b3 100644
--- a/tests/auto/widgets/widgets/qtabwidget/tst_qtabwidget.cpp
+++ b/tests/auto/widgets/widgets/qtabwidget/tst_qtabwidget.cpp
@@ -81,6 +81,7 @@ private slots:
void addRemoveTab();
void tabPosition();
void tabEnabled();
+ void tabHidden();
void tabText();
void tabShape();
void tabTooltip();
@@ -246,6 +247,30 @@ void tst_QTabWidget::tabEnabled()
removePage(index);
}
+void tst_QTabWidget::tabHidden()
+{
+ // Test bad arguments
+ QVERIFY(!tw->isTabVisible(-1));
+ tw->setTabVisible(-1, false);
+ QVERIFY(!tw->isTabVisible(tw->count()));
+ tw->setTabVisible(tw->count(), false);
+
+ const int index = addPage();
+
+ tw->setTabVisible(index, true);
+ QVERIFY(tw->isTabVisible(index));
+ tw->setTabVisible(index, false);
+ QVERIFY(!tw->isTabVisible(index));
+ tw->setTabVisible(index, true);
+ QVERIFY(tw->isTabVisible(index));
+
+ removePage(index);
+
+ for (int i = 0; i < tw->count(); ++i) {
+ QVERIFY(tw->isTabVisible(i));
+ }
+}
+
void tst_QTabWidget::tabText()
{
// Test bad arguments
@@ -668,12 +693,12 @@ void tst_QTabWidget::tabBarClicked()
while (button <= Qt::MaxMouseButton) {
const QPoint tabPos = tabBar.tabRect(0).center();
- QTest::mouseClick(&tabBar, button, 0, tabPos);
+ QTest::mouseClick(&tabBar, button, {}, tabPos);
QCOMPARE(clickSpy.count(), 1);
QCOMPARE(clickSpy.takeFirst().takeFirst().toInt(), 0);
QCOMPARE(doubleClickSpy.count(), 0);
- QTest::mouseDClick(&tabBar, button, 0, tabPos);
+ QTest::mouseDClick(&tabBar, button, {}, tabPos);
QCOMPARE(clickSpy.count(), 1);
QCOMPARE(clickSpy.takeFirst().takeFirst().toInt(), 0);
QCOMPARE(doubleClickSpy.count(), 1);
@@ -681,12 +706,12 @@ void tst_QTabWidget::tabBarClicked()
const QPoint barPos(tabBar.tabRect(0).right() + 5, tabBar.tabRect(0).center().y());
- QTest::mouseClick(&tabBar, button, 0, barPos);
+ QTest::mouseClick(&tabBar, button, {}, barPos);
QCOMPARE(clickSpy.count(), 1);
QCOMPARE(clickSpy.takeFirst().takeFirst().toInt(), -1);
QCOMPARE(doubleClickSpy.count(), 0);
- QTest::mouseDClick(&tabBar, button, 0, barPos);
+ QTest::mouseDClick(&tabBar, button, {}, barPos);
QCOMPARE(clickSpy.count(), 1);
QCOMPARE(clickSpy.takeFirst().takeFirst().toInt(), -1);
QCOMPARE(doubleClickSpy.count(), 1);
diff --git a/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp b/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp
index cfd8132d46..485a0b0f93 100644
--- a/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp
+++ b/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp
@@ -760,7 +760,7 @@ void tst_QTextEdit::cursorPositionChanged()
ed->setTextCursor(cursor);
spy.clear();
QVERIFY(!ed->textCursor().hasSelection());
- QTest::mouseDClick(ed->viewport(), Qt::LeftButton, 0, ed->cursorRect().center());
+ QTest::mouseDClick(ed->viewport(), Qt::LeftButton, {}, ed->cursorRect().center());
QVERIFY(ed->textCursor().hasSelection());
QCOMPARE(spy.count(), 1);
diff --git a/tests/auto/widgets/widgets/qtoolbar/tst_qtoolbar.cpp b/tests/auto/widgets/widgets/qtoolbar/tst_qtoolbar.cpp
index 1e71f92361..1d5ac7c819 100644
--- a/tests/auto/widgets/widgets/qtoolbar/tst_qtoolbar.cpp
+++ b/tests/auto/widgets/widgets/qtoolbar/tst_qtoolbar.cpp
@@ -553,7 +553,7 @@ void tst_QToolBar::actionGeometry()
QToolBarExtension *extension = extensions.at(0);
if (extension->isVisible()) {
QRect rect0 = extension->geometry();
- QTest::mouseClick( extension, Qt::LeftButton, 0, rect0.center(), -1 );
+ QTest::mouseClick( extension, Qt::LeftButton, {}, rect0.center(), -1 );
QApplication::processEvents();
popupMenu = qobject_cast<QMenu *>(extension->menu());
rect01 = popupMenu->actionGeometry(&action1);
@@ -875,7 +875,7 @@ void tst_QToolBar::actionTriggered()
QToolBarExtension *extension = extensions.at(0);
if (extension->isVisible()) {
QRect rect0 = extension->geometry();
- QTest::mouseClick( extension, Qt::LeftButton, 0, rect0.center(), -1 );
+ QTest::mouseClick( extension, Qt::LeftButton, {}, rect0.center(), -1 );
QApplication::processEvents();
popupMenu = qobject_cast<QMenu *>(extension->menu());
rect01 = popupMenu->actionGeometry(&action1);
@@ -916,28 +916,28 @@ void tst_QToolBar::actionTriggered()
if (!rect01.isValid())
QTest::mouseClick(button1, Qt::LeftButton);
else
- QTest::mouseClick(popupMenu, Qt::LeftButton, 0, rect01.center(), -1 );
+ QTest::mouseClick(popupMenu, Qt::LeftButton, {}, rect01.center(), -1 );
QCOMPARE(::triggered, &action1);
::triggered = 0;
if (!rect02.isValid())
QTest::mouseClick(button2, Qt::LeftButton);
else
- QTest::mouseClick(popupMenu, Qt::LeftButton, 0, rect02.center(), -1 );
+ QTest::mouseClick(popupMenu, Qt::LeftButton, {}, rect02.center(), -1 );
QCOMPARE(::triggered, &action2);
::triggered = 0;
if (!rect03.isValid())
QTest::mouseClick(button3, Qt::LeftButton);
else
- QTest::mouseClick(popupMenu, Qt::LeftButton, 0, rect03.center(), -1 );
+ QTest::mouseClick(popupMenu, Qt::LeftButton, {}, rect03.center(), -1 );
QCOMPARE(::triggered, &action3);
::triggered = 0;
if (!rect04.isValid())
QTest::mouseClick(button4, Qt::LeftButton);
else
- QTest::mouseClick(popupMenu, Qt::LeftButton, 0, rect04.center(), -1 );
+ QTest::mouseClick(popupMenu, Qt::LeftButton, {}, rect04.center(), -1 );
QCOMPARE(::triggered, &action4);
}
diff --git a/tests/auto/widgets/widgets/qtoolbutton/tst_qtoolbutton.cpp b/tests/auto/widgets/widgets/qtoolbutton/tst_qtoolbutton.cpp
index 32a86993df..ed4df2fc23 100644
--- a/tests/auto/widgets/widgets/qtoolbutton/tst_qtoolbutton.cpp
+++ b/tests/auto/widgets/widgets/qtoolbutton/tst_qtoolbutton.cpp
@@ -215,14 +215,14 @@ void tst_QToolButton::task176137_autoRepeatOfAction()
QSignalSpy spy(&action,SIGNAL(triggered()));
QTest::mousePress (toolButton, Qt::LeftButton);
- QTest::mouseRelease (toolButton, Qt::LeftButton, 0, QPoint (), 2000);
+ QTest::mouseRelease (toolButton, Qt::LeftButton, {}, QPoint (), 2000);
QCOMPARE(spy.count(),1);
// try again with auto repeat
toolButton->setAutoRepeat (true);
QSignalSpy repeatSpy(&action,SIGNAL(triggered())); // new spy
QTest::mousePress (toolButton, Qt::LeftButton);
- QTest::mouseRelease (toolButton, Qt::LeftButton, 0, QPoint (), 3000);
+ QTest::mouseRelease (toolButton, Qt::LeftButton, {}, QPoint (), 3000);
const qreal expected = (3000 - toolButton->autoRepeatDelay()) / toolButton->autoRepeatInterval() + 1;
//we check that the difference is small (on some systems timers are not super accurate)
qreal diff = (expected - repeatSpy.count()) / expected;
@@ -242,7 +242,7 @@ void tst_QToolButton::sendMouseClick()
}
if (!m_menu->isVisible())
return;
- QTest::mouseClick(m_menu.data(), Qt::LeftButton, 0, QPoint(7, 7));
+ QTest::mouseClick(m_menu.data(), Qt::LeftButton, {}, QPoint(7, 7));
if (QTimer *timer = qobject_cast<QTimer *>(sender())) {
timer->stop();
timer->deleteLater();