summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets/widgets
diff options
context:
space:
mode:
authorLeander Beernaert <leander.beernaert@qt.io>2020-01-22 13:47:08 +0100
committerLeander Beernaert <leander.beernaert@qt.io>2020-01-24 13:17:33 +0100
commit502d3d6744913899da87acfda5ebdab42c40329e (patch)
tree16658a328503bfd5a62b4fd5d69ffb66e9854b18 /tests/auto/widgets/widgets
parentd1be8b9ceb2c7b20bbe53a07154c79699540ea3d (diff)
parent06bb315beb6c2c398223cfe52cbc7f66e14a8557 (diff)
Merge remote-tracking branch 'origin/dev' into merge-dev
Diffstat (limited to 'tests/auto/widgets/widgets')
-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
22 files changed, 348 insertions, 138 deletions
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();