summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets/widgets
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/widgets/widgets')
-rw-r--r--tests/auto/widgets/widgets/qcombobox/BLACKLIST4
-rw-r--r--tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp16
-rw-r--r--tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp44
-rw-r--r--tests/auto/widgets/widgets/qfontcombobox/tst_qfontcombobox.cpp2
-rw-r--r--tests/auto/widgets/widgets/qlabel/tst_qlabel.cpp2
-rw-r--r--tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp97
-rw-r--r--tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp149
-rw-r--r--tests/auto/widgets/widgets/qmenubar/BLACKLIST4
-rw-r--r--tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp95
-rw-r--r--tests/auto/widgets/widgets/qopenglwidget/BLACKLIST13
-rw-r--r--tests/auto/widgets/widgets/qopenglwidget/tst_qopenglwidget.cpp16
-rw-r--r--tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp2
-rw-r--r--tests/auto/widgets/widgets/qprogressbar/tst_qprogressbar.cpp2
-rw-r--r--tests/auto/widgets/widgets/qscrollbar/BLACKLIST3
-rw-r--r--tests/auto/widgets/widgets/qspinbox/BLACKLIST3
-rw-r--r--tests/auto/widgets/widgets/qsplitter/tst_qsplitter.cpp59
-rw-r--r--tests/auto/widgets/widgets/qtabbar/BLACKLIST1
17 files changed, 353 insertions, 159 deletions
diff --git a/tests/auto/widgets/widgets/qcombobox/BLACKLIST b/tests/auto/widgets/widgets/qcombobox/BLACKLIST
index c04351e5ca..2d6228075a 100644
--- a/tests/auto/widgets/widgets/qcombobox/BLACKLIST
+++ b/tests/auto/widgets/widgets/qcombobox/BLACKLIST
@@ -1,7 +1,3 @@
-QTBUG-45531
-[task260974_menuItemRectangleForComboBoxPopup]
-osx-10.10
-
[task_QTBUG_56693_itemFontFromModel]
# Counts draw calls, but we could have multiple expose events QTBUG-62080
osx
diff --git a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp
index b6007482ae..0c229c9194 100644
--- a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp
+++ b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp
@@ -2052,13 +2052,13 @@ void tst_QComboBox::mouseWheel_data()
QTest::newRow("upper locked") << disabled << start << wheel << expected;
wheel = -1;
-#ifdef Q_OS_DARWIN
+ const bool allowsWheelScroll = QApplication::style()->styleHint(QStyle::SH_ComboBox_AllowWheelScrolling);
// on OS X & iOS mouse wheel shall have no effect on combo box
- expected = start;
-#else
- // on other OSes we should jump to next enabled item (no. 5)
- expected = 5;
-#endif
+ if (!allowsWheelScroll)
+ expected = start;
+ else // on other OSes we should jump to next enabled item (no. 5)
+ expected = 5;
+
QTest::newRow("jump over") << disabled << start << wheel << expected;
disabled.clear();
@@ -3273,7 +3273,7 @@ void tst_QComboBox::task_QTBUG_49831_scrollerNotActivated()
class QTBUG_56693_Model : public QStandardItemModel
{
public:
- QTBUG_56693_Model(QObject *parent = Q_NULLPTR)
+ QTBUG_56693_Model(QObject *parent = nullptr)
: QStandardItemModel(parent)
{ }
@@ -3301,7 +3301,7 @@ public:
}
- void drawControl(ControlElement element, const QStyleOption *opt, QPainter *p, const QWidget *w = Q_NULLPTR) const override
+ void drawControl(ControlElement element, const QStyleOption *opt, QPainter *p, const QWidget *w = nullptr) const override
{
if (element == CE_MenuItem)
if (const QStyleOptionMenuItem *menuItem = qstyleoption_cast<const QStyleOptionMenuItem *>(opt))
diff --git a/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp b/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp
index a3571cd9c5..fa28ec2575 100644
--- a/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp
+++ b/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp
@@ -336,7 +336,7 @@ void tst_QDateTimeEdit::constructor_qwidget()
QCOMPARE(dte.dateTime(), QDateTime(QDate(2000, 1, 1), QTime(0, 0, 0, 0)));
QCOMPARE(dte.minimumDate(), QDate(1752, 9, 14));
QCOMPARE(dte.minimumTime(), QTime(0, 0, 0, 0));
- QCOMPARE(dte.maximumDate(), QDate(7999, 12, 31));
+ QCOMPARE(dte.maximumDate(), QDate(9999, 12, 31));
QCOMPARE(dte.maximumTime(), QTime(23, 59, 59, 999));
}
@@ -352,12 +352,12 @@ void tst_QDateTimeEdit::constructor_qdatetime_data()
QTest::newRow("normal") << QDateTime(QDate(2004, 6, 16), QTime(13, 46, 32, 764))
<< QDateTime(QDate(2004, 6, 16), QTime(13, 46, 32, 764))
<< QDate(1752, 9, 14) << QTime(0, 0, 0, 0)
- << QDate(7999, 12, 31) << QTime(23, 59, 59, 999);
+ << QDate(9999, 12, 31) << QTime(23, 59, 59, 999);
QTest::newRow("invalid") << QDateTime(QDate(9999, 99, 99), QTime(13, 46, 32, 764))
<< QDateTime(QDate(2000, 1, 1), QTime(0, 0, 0, 0))
<< QDate(1752, 9, 14) << QTime(0, 0, 0, 0)
- << QDate(7999, 12, 31) << QTime(23, 59, 59, 999);
+ << QDate(9999, 12, 31) << QTime(23, 59, 59, 999);
}
void tst_QDateTimeEdit::constructor_qdatetime()
@@ -392,12 +392,12 @@ void tst_QDateTimeEdit::constructor_qdate_data()
QTest::newRow("normal") << QDate(2004, 6, 16)
<< QDateTime(QDate(2004, 6, 16), QTime(0, 0, 0, 0))
<< QDate(1752, 9, 14) << QTime(0, 0, 0, 0)
- << QDate(7999, 12, 31) << QTime(23, 59, 59, 999);
+ << QDate(9999, 12, 31) << QTime(23, 59, 59, 999);
QTest::newRow("invalid") << QDate(9999, 99, 99)
<< QDateTime(QDate(2000, 1, 1), QTime(0, 0, 0, 0))
<< QDate(1752, 9, 14) << QTime(0, 0, 0, 0)
- << QDate(7999, 12, 31) << QTime(23, 59, 59, 999);
+ << QDate(9999, 12, 31) << QTime(23, 59, 59, 999);
}
void tst_QDateTimeEdit::constructor_qdate()
@@ -467,7 +467,7 @@ void tst_QDateTimeEdit::minimumDate_data()
QTest::newRow("normal-0") << QDate(2004, 5, 10) << QDate(2004, 5, 10);
QTest::newRow("normal-1") << QDate(2002, 3, 15) << QDate(2002, 3, 15);
- QTest::newRow("normal-2") << QDate(7999, 12, 31) << QDate(7999, 12, 31);
+ QTest::newRow("normal-2") << QDate(9999, 12, 31) << QDate(9999, 12, 31);
QTest::newRow("normal-3") << QDate(1753, 1, 1) << QDate(1753, 1, 1);
QTest::newRow("invalid-0") << QDate(0, 0, 0) << QDate(1752, 9, 14);
QTest::newRow("old") << QDate(1492, 8, 3) << QDate(1492, 8, 3);
@@ -528,7 +528,7 @@ void tst_QDateTimeEdit::maximumDateTime_data()
<< QDateTime(QDate(2007, 5, 10), QTime(22, 23, 23));
QTest::newRow("normal-4") << QDateTime(QDate(2008, 5, 10), QTime(2, 3, 1))
<< QDateTime(QDate(2008, 5, 10), QTime(2, 3, 1));
- QTest::newRow("invalid-0") << QDateTime() << QDateTime(QDate(7999, 12, 31), QTime(23, 59, 59, 999));
+ QTest::newRow("invalid-0") << QDateTime() << QDateTime(QDate(9999, 12, 31), QTime(23, 59, 59, 999));
}
void tst_QDateTimeEdit::maximumDateTime()
@@ -547,9 +547,9 @@ void tst_QDateTimeEdit::maximumDate_data()
QTest::newRow("normal-0") << QDate(2004, 05, 10) << QDate(2004, 5, 10);
QTest::newRow("normal-1") << QDate(2002, 03, 15) << QDate(2002, 3, 15);
- QTest::newRow("normal-2") << QDate(7999, 12, 31) << QDate(7999, 12, 31);
+ QTest::newRow("normal-2") << QDate(9999, 12, 31) << QDate(9999, 12, 31);
QTest::newRow("normal-3") << QDate(1753, 1, 1) << QDate(1753, 1, 1);
- QTest::newRow("invalid-0") << QDate(0, 0, 0) << QDate(7999, 12, 31);
+ QTest::newRow("invalid-0") << QDate(0, 0, 0) << QDate(9999, 12, 31);
}
void tst_QDateTimeEdit::maximumDate()
@@ -569,7 +569,7 @@ void tst_QDateTimeEdit::clearMinimumDate_data()
QTest::newRow("normal-0") << QDate(2004, 05, 10) << true << QDate(1752, 9, 14);
QTest::newRow("normal-1") << QDate(2002, 3, 15) << true << QDate(1752, 9, 14);
- QTest::newRow("normal-2") << QDate(7999, 12, 31) << true << QDate(1752, 9, 14);
+ QTest::newRow("normal-2") << QDate(9999, 12, 31) << true << QDate(1752, 9, 14);
QTest::newRow("normal-3") << QDate(1753, 1, 1) << true << QDate(1752, 9, 14);
QTest::newRow("invalid-0") << QDate(0, 0, 0) << false << QDate(1752, 9, 14);
}
@@ -597,7 +597,7 @@ void tst_QDateTimeEdit::clearMinimumDateTime_data()
<< true << QDateTime(QDate(1752, 9, 14), QTime(0, 0));
QTest::newRow("normal-1") << QDateTime(QDate(2002, 3, 15), QTime(13, 13, 13))
<< true << QDateTime(QDate(1752, 9, 14), QTime(0, 0));
- QTest::newRow("normal-2") << QDateTime(QDate(7999, 12, 31), QTime(14, 14, 14))
+ QTest::newRow("normal-2") << QDateTime(QDate(9999, 12, 31), QTime(14, 14, 14))
<< true << QDateTime(QDate(1752, 9, 14), QTime(0, 0));
QTest::newRow("normal-3") << QDateTime(QDate(1753, 1, 1), QTime(15, 15, 15))
<< true << QDateTime(QDate(1752, 9, 14), QTime(0, 0));
@@ -626,15 +626,15 @@ void tst_QDateTimeEdit::clearMaximumDateTime_data()
QTest::addColumn<QDateTime>("expectedMinDateTimeAfterClear");
QTest::newRow("normal-0") << QDateTime(QDate(2004, 05, 10), QTime(12, 12, 12))
- << true << QDateTime(QDate(7999, 12, 31), QTime(23, 59, 59, 999));
+ << true << QDateTime(QDate(9999, 12, 31), QTime(23, 59, 59, 999));
QTest::newRow("normal-1") << QDateTime(QDate(2002, 3, 15), QTime(13, 13, 13))
- << true << QDateTime(QDate(7999, 12, 31), QTime(23, 59, 59, 999));
- QTest::newRow("normal-2") << QDateTime(QDate(7999, 12, 31), QTime(14, 14, 14))
- << true << QDateTime(QDate(7999, 12, 31), QTime(23, 59, 59, 999));
+ << true << QDateTime(QDate(9999, 12, 31), QTime(23, 59, 59, 999));
+ QTest::newRow("normal-2") << QDateTime(QDate(9999, 12, 31), QTime(14, 14, 14))
+ << true << QDateTime(QDate(9999, 12, 31), QTime(23, 59, 59, 999));
QTest::newRow("normal-3") << QDateTime(QDate(1753, 1, 1), QTime(15, 15, 15))
- << true << QDateTime(QDate(7999, 12, 31), QTime(23, 59, 59, 999));
+ << true << QDateTime(QDate(9999, 12, 31), QTime(23, 59, 59, 999));
QTest::newRow("invalid-0") << QDateTime()
- << false << QDateTime(QDate(7999, 12, 31), QTime(23, 59, 59, 999));
+ << false << QDateTime(QDate(9999, 12, 31), QTime(23, 59, 59, 999));
}
void tst_QDateTimeEdit::clearMaximumDateTime()
@@ -656,11 +656,11 @@ void tst_QDateTimeEdit::clearMaximumDate_data()
QTest::addColumn<bool>("valid");
QTest::addColumn<QDate>("expectedMaxDateAfterClear");
- QTest::newRow("normal-0") << QDate(2004, 05, 10) << true << QDate(7999, 12, 31);
- QTest::newRow("normal-1") << QDate(2002, 03, 15) << true << QDate(7999, 12, 31);
- QTest::newRow("normal-2") << QDate(7999, 12, 31) << true << QDate(7999, 12, 31);
- QTest::newRow("normal-3") << QDate(2000, 1, 1) << true << QDate(7999, 12, 31);
- QTest::newRow("invalid-0") << QDate(0, 0, 0) << false << QDate(7999, 12, 31);
+ QTest::newRow("normal-0") << QDate(2004, 05, 10) << true << QDate(9999, 12, 31);
+ QTest::newRow("normal-1") << QDate(2002, 03, 15) << true << QDate(9999, 12, 31);
+ QTest::newRow("normal-2") << QDate(9999, 12, 31) << true << QDate(9999, 12, 31);
+ QTest::newRow("normal-3") << QDate(2000, 1, 1) << true << QDate(9999, 12, 31);
+ QTest::newRow("invalid-0") << QDate(0, 0, 0) << false << QDate(9999, 12, 31);
}
void tst_QDateTimeEdit::clearMaximumDate()
diff --git a/tests/auto/widgets/widgets/qfontcombobox/tst_qfontcombobox.cpp b/tests/auto/widgets/widgets/qfontcombobox/tst_qfontcombobox.cpp
index 9e6b16d4ce..1813e5ad5f 100644
--- a/tests/auto/widgets/widgets/qfontcombobox/tst_qfontcombobox.cpp
+++ b/tests/auto/widgets/widgets/qfontcombobox/tst_qfontcombobox.cpp
@@ -204,7 +204,7 @@ void tst_QFontComboBox::sizeHint()
SubQFontComboBox box;
QSize sizeHint = box.QComboBox::sizeHint();
QFontMetrics fm(box.font());
- sizeHint.setWidth(qMax(sizeHint.width(), fm.width(QLatin1Char('m'))*14));
+ sizeHint.setWidth(qMax(sizeHint.width(), fm.horizontalAdvance(QLatin1Char('m'))*14));
QCOMPARE(box.sizeHint(), sizeHint);
}
diff --git a/tests/auto/widgets/widgets/qlabel/tst_qlabel.cpp b/tests/auto/widgets/widgets/qlabel/tst_qlabel.cpp
index 6363d0c673..500ec2e1fa 100644
--- a/tests/auto/widgets/widgets/qlabel/tst_qlabel.cpp
+++ b/tests/auto/widgets/widgets/qlabel/tst_qlabel.cpp
@@ -47,7 +47,7 @@ public:
QList<QEvent::Type> events;
protected:
- bool event(QEvent *ev) Q_DECL_OVERRIDE {
+ bool event(QEvent *ev) override {
events.append(ev->type());
return QWidget::event(ev);
}
diff --git a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp
index 21669e42cd..1513025f16 100644
--- a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp
+++ b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp
@@ -67,6 +67,8 @@
#include "../../../shared/platforminputcontext.h"
#include <private/qinputmethod_p.h>
+Q_LOGGING_CATEGORY(lcTests, "qt.widgets.tests")
+
QT_BEGIN_NAMESPACE
class QPainter;
QT_END_NAMESPACE
@@ -300,8 +302,8 @@ private slots:
void shortcutOverrideOnReadonlyLineEdit_data();
void shortcutOverrideOnReadonlyLineEdit();
void QTBUG59957_clearButtonLeftmostAction();
-
void QTBUG_60319_setInputMaskCheckImSurroundingText();
+ void testQuickSelectionWithMouse();
protected slots:
void editingFinished();
@@ -3046,7 +3048,7 @@ void tst_QLineEdit::cutWithoutSelection()
QClipboard *clipboard = QGuiApplication::clipboard();
if (!PlatformClipboard::isAvailable()
|| !QGuiApplication::platformName().compare("xcb", Qt::CaseInsensitive)) { // Avoid unstable X11 clipboard
- clipboard = Q_NULLPTR;
+ clipboard = nullptr;
}
if (clipboard)
@@ -3436,8 +3438,8 @@ void tst_QLineEdit::textMargin_data()
// Different styles generate different offsets, so
// calculate the width rather than hardcode it.
- const int pixelWidthOfM = metrics.width(s, 1);
- const int pixelWidthOfMMM_MM = metrics.width(s, 6);
+ const int pixelWidthOfM = metrics.horizontalAdvance(s, 1);
+ const int pixelWidthOfMMM_MM = metrics.horizontalAdvance(s, 6);
QTest::newRow("default-0") << 0 << 0 << 0 << 0 << QPoint(pixelWidthOfMMM_MM, 0) << 6;
QTest::newRow("default-1") << 0 << 0 << 0 << 0 << QPoint(1, 1) << 0;
@@ -4475,7 +4477,7 @@ template <class T> T *findAssociatedWidget(const QAction *a)
if (T *result = qobject_cast<T *>(w))
return result;
}
- return Q_NULLPTR;
+ return nullptr;
}
void tst_QLineEdit::sideWidgetsActionEvents()
@@ -4699,5 +4701,90 @@ void tst_QLineEdit::QTBUG_60319_setInputMaskCheckImSurroundingText()
QCOMPARE(surroundingText.length(), cursorPosition);
}
+void tst_QLineEdit::testQuickSelectionWithMouse()
+{
+ const auto text = QStringLiteral("This is quite a long line of text.");
+ const auto prefix = QStringLiteral("Th");
+ const auto suffix = QStringLiteral("t.");
+ QVERIFY(text.startsWith(prefix));
+ QVERIFY(text.endsWith(suffix));
+
+ QLineEdit lineEdit;
+ lineEdit.setText(text);
+ lineEdit.show();
+
+ const QPoint center = lineEdit.contentsRect().center();
+
+ // Normal mouse selection from left to right, y doesn't change.
+ QTest::mousePress(lineEdit.windowHandle(), Qt::LeftButton, Qt::NoModifier, center);
+ QTest::mouseMove(lineEdit.windowHandle(), center + QPoint(20, 0));
+ qCDebug(lcTests) << "Selected text:" << lineEdit.selectedText();
+ QVERIFY(!lineEdit.selectedText().isEmpty());
+ QVERIFY(!lineEdit.selectedText().endsWith(suffix));
+
+ // Normal mouse selection from left to right, y change is below threshold.
+ QTest::mousePress(lineEdit.windowHandle(), Qt::LeftButton, Qt::NoModifier, center);
+ QTest::mouseMove(lineEdit.windowHandle(), center + QPoint(20, 5));
+ qCDebug(lcTests) << "Selected text:" << lineEdit.selectedText();
+ QVERIFY(!lineEdit.selectedText().isEmpty());
+ QVERIFY(!lineEdit.selectedText().endsWith(suffix));
+
+ // Normal mouse selection from right to left, y doesn't change.
+ QTest::mousePress(lineEdit.windowHandle(), Qt::LeftButton, Qt::NoModifier, center);
+ QTest::mouseMove(lineEdit.windowHandle(), center + QPoint(-20, 0));
+ qCDebug(lcTests) << "Selected text:" << lineEdit.selectedText();
+ QVERIFY(!lineEdit.selectedText().isEmpty());
+ QVERIFY(!lineEdit.selectedText().startsWith(prefix));
+
+ // Normal mouse selection from right to left, y change is below threshold.
+ QTest::mousePress(lineEdit.windowHandle(), Qt::LeftButton, Qt::NoModifier, center);
+ QTest::mouseMove(lineEdit.windowHandle(), center + QPoint(-20, -5));
+ qCDebug(lcTests) << "Selected text:" << lineEdit.selectedText();
+ QVERIFY(!lineEdit.selectedText().isEmpty());
+ QVERIFY(!lineEdit.selectedText().startsWith(prefix));
+
+ const int offset = QGuiApplication::styleHints()->mouseQuickSelectionThreshold() + 1;
+
+ // Select the whole right half.
+ QTest::mousePress(lineEdit.windowHandle(), Qt::LeftButton, Qt::NoModifier, center);
+ QTest::mouseMove(lineEdit.windowHandle(), center + QPoint(1, offset));
+ qCDebug(lcTests) << "Selected text:" << lineEdit.selectedText();
+ QVERIFY(lineEdit.selectedText().endsWith(suffix));
+
+ // Select the whole left half.
+ QTest::mousePress(lineEdit.windowHandle(), Qt::LeftButton, Qt::NoModifier, center);
+ QTest::mouseMove(lineEdit.windowHandle(), center + QPoint(1, -offset));
+ qCDebug(lcTests) << "Selected text:" << lineEdit.selectedText();
+ QVERIFY(lineEdit.selectedText().startsWith(prefix));
+
+ // Normal selection -> quick selection -> back to normal selection.
+ QTest::mousePress(lineEdit.windowHandle(), Qt::LeftButton, Qt::NoModifier, center);
+ QTest::mouseMove(lineEdit.windowHandle(), center + QPoint(20, 0));
+ const auto partialSelection = lineEdit.selectedText();
+ qCDebug(lcTests) << "Selected text:" << lineEdit.selectedText();
+ QVERIFY(!partialSelection.endsWith(suffix));
+ QTest::mouseMove(lineEdit.windowHandle(), center + QPoint(20, offset));
+ qCDebug(lcTests) << "Selected text:" << lineEdit.selectedText();
+ QVERIFY(lineEdit.selectedText().endsWith(suffix));
+ QTest::mouseMove(lineEdit.windowHandle(), center + QPoint(20, 0));
+ qCDebug(lcTests) << "Selected text:" << lineEdit.selectedText();
+#ifdef Q_PROCESSOR_ARM
+ QEXPECT_FAIL("", "Currently fails on gcc-armv7, needs investigation.", Continue);
+#endif
+ QCOMPARE(lineEdit.selectedText(), partialSelection);
+
+ lineEdit.setLayoutDirection(Qt::RightToLeft);
+
+ // Select the whole left half (RTL layout).
+ QTest::mousePress(lineEdit.windowHandle(), Qt::LeftButton, Qt::NoModifier, center);
+ QTest::mouseMove(lineEdit.windowHandle(), center + QPoint(1, offset));
+ QVERIFY(lineEdit.selectedText().startsWith(prefix));
+
+ // Select the whole right half (RTL layout).
+ QTest::mousePress(lineEdit.windowHandle(), Qt::LeftButton, Qt::NoModifier, center);
+ QTest::mouseMove(lineEdit.windowHandle(), center + QPoint(1, -offset));
+ QVERIFY(lineEdit.selectedText().endsWith(suffix));
+}
+
QTEST_MAIN(tst_QLineEdit)
#include "tst_qlineedit.moc"
diff --git a/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp b/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp
index 91c12e292d..28e8ba81d6 100644
--- a/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp
+++ b/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp
@@ -111,9 +111,8 @@ private slots:
void QTBUG7411_submenus_activate();
void QTBUG30595_rtl_submenu();
void QTBUG20403_nested_popup_on_shortcut_trigger();
-#ifndef QT_NO_CURSOR
void QTBUG47515_widgetActionEnterLeave();
-#endif
+
void QTBUG_10735_crashWithDialog();
#ifdef Q_OS_MAC
void QTBUG_37933_ampersands_data();
@@ -610,7 +609,7 @@ static QMenu *getTornOffMenu()
if (w->isVisible() && w->inherits("QTornOffMenu"))
return static_cast<QMenu *>(w);
}
- return Q_NULLPTR;
+ return nullptr;
}
void tst_QMenu::tearOff()
@@ -812,7 +811,7 @@ public:
}
protected:
- void showEvent(QShowEvent *e) Q_DECL_OVERRIDE
+ void showEvent(QShowEvent *e) override
{
QVERIFY(m_subMenu->isVisible());
QVERIFY2(m_subMenu->x() > x(),
@@ -821,7 +820,7 @@ protected:
QMenu::showEvent(e);
}
- void timerEvent(QTimerEvent *e) Q_DECL_OVERRIDE
+ void timerEvent(QTimerEvent *e) override
{
if (e->timerId() == m_timerId) {
switch (m_timerTick++) {
@@ -1176,25 +1175,27 @@ void tst_QMenu::click_while_dismissing_submenu()
menu.addMenu(&sub);
centerOnScreen(&menu, QSize(120, 100));
menu.show();
- QSignalSpy spy(action, SIGNAL(triggered()));
- QSignalSpy menuShownSpy(&sub, SIGNAL(aboutToShow()));
- QSignalSpy menuHiddenSpy(&sub, SIGNAL(aboutToHide()));
+ QSignalSpy spy(action, &QAction::triggered);
+ QSignalSpy menuShownSpy(&sub, &QMenu::aboutToShow);
+ QSignalSpy menuHiddenSpy(&sub, &QMenu::aboutToHide);
QVERIFY(QTest::qWaitForWindowExposed(&menu));
+ QWindow *menuWindow = menu.windowHandle();
+ QVERIFY(menuWindow);
//go over the submenu, press, move and release over the top level action
//this opens the submenu, move two times to emulate user interaction (d->motions > 0 in QMenu)
- QTest::mouseMove(&menu, menu.rect().center() + QPoint(0,2));
- QTest::mouseMove(&menu, menu.rect().center() + QPoint(1,3), 60);
+ QTest::mouseMove(menuWindow, menu.rect().center() + QPoint(0,2));
+ QTest::mouseMove(menuWindow, menu.rect().center() + QPoint(1,3), 60);
QVERIFY(menuShownSpy.wait());
QVERIFY(sub.isVisible());
QVERIFY(QTest::qWaitForWindowExposed(&sub));
//press over the submenu entry
- QTest::mousePress(&menu, Qt::LeftButton, 0, menu.rect().center() + QPoint(0,2), 300);
+ QTest::mousePress(menuWindow, Qt::LeftButton, 0, menu.rect().center() + QPoint(0,2), 300);
//move over the main action
- QTest::mouseMove(&menu, menu.rect().center() - QPoint(0,2));
+ 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(&menu, Qt::LeftButton, 0, menu.rect().center() - QPoint(0,2), 300);
+ QTest::mouseRelease(menuWindow, Qt::LeftButton, 0, menu.rect().center() - QPoint(0,2), 300);
QCOMPARE(spy.count(), 1);
}
#endif
@@ -1210,7 +1211,7 @@ public:
setMouseTracking(true);
}
- bool event(QEvent *e) Q_DECL_OVERRIDE
+ bool event(QEvent *e) override
{
switch (e->type()) {
case QEvent::MouseMove:
@@ -1231,79 +1232,99 @@ public:
int move, enter, leave;
};
-#ifndef QT_NO_CURSOR
void tst_QMenu::QTBUG47515_widgetActionEnterLeave()
{
+#if !QT_CONFIG(cursor)
+ QSKIP("This test requires QCursor API");
+#else
if (QGuiApplication::platformName() == QLatin1String("cocoa"))
- QSKIP("This test fails on OS X on CI");
+ QSKIP("See QTBUG-63031");
- const QPoint center = QGuiApplication::primaryScreen()->availableGeometry().center();
- const QPoint cursorPos = center - QPoint(100, 100);
+ QPoint screenCenter = QGuiApplication::primaryScreen()->availableGeometry().center();
+ QPoint pointOutsideMenu = screenCenter - QPoint(100, 100);
- QScopedPointer<QMenu> menu1(new QMenu("Menu1"));
- QScopedPointer<QMenu> menu2(new QMenu("Menu2"));
+ QMenu menu("Menu1");
+ QMenu submenu("Menu2");
- QWidgetAction *wA1 = new QWidgetAction(menu1.data());
- MyWidget *w1 = new MyWidget(menu1.data());
- wA1->setDefaultWidget(w1);
+ QWidgetAction menuAction(&menu);
+ MyWidget w1(&menu);
+ menuAction.setDefaultWidget(&w1);
- QWidgetAction *wA2 = new QWidgetAction(menu2.data());
- MyWidget *w2 = new MyWidget(menu2.data());
- wA2->setDefaultWidget(w2);
+ QWidgetAction submenuAction(&submenu);
+ MyWidget w2(&submenu);
+ submenuAction.setDefaultWidget(&w2);
- QAction *nextMenuAct = menu1->addMenu(menu2.data());
+ QAction *nextMenuAct = menu.addMenu(&submenu);
- menu1->addAction(wA1);
- menu2->addAction(wA2);
+ menu.addAction(&menuAction);
+ submenu.addAction(&submenuAction);
// Root menu
{
- QCursor::setPos(cursorPos);
- QCoreApplication::processEvents();
-
- menu1->popup(center);
- QVERIFY(QTest::qWaitForWindowExposed(menu1.data()));
+ QCursor::setPos(pointOutsideMenu);
+ QTRY_COMPARE(QCursor::pos(), pointOutsideMenu);
+ menu.popup(screenCenter);
+ QVERIFY(QTest::qWaitForWindowExposed(&menu));
- QCursor::setPos(w1->mapToGlobal(w1->rect().center()));
- QVERIFY(w1->isVisible());
- QTRY_COMPARE(w1->leave, 0);
- QTRY_COMPARE(w1->enter, 1);
+ w1.enter = 0;
+ w1.leave = 0;
+ QPoint w1Center = w1.rect().center();
+ const QPoint w1CenterGlobal = w1.mapToGlobal(w1Center);
+ QCursor::setPos(w1CenterGlobal);
+ QTRY_COMPARE(QCursor::pos(), w1CenterGlobal);
+ QVERIFY(w1.isVisible());
+ QTRY_COMPARE(w1.leave, 0);
+ QTRY_COMPARE(w1.enter, 1);
// Check whether leave event is not delivered on mouse move
- w1->move = 0;
- QCursor::setPos(w1->mapToGlobal(w1->rect().center()) + QPoint(1, 1));
- QTRY_COMPARE(w1->move, 1);
- QTRY_COMPARE(w1->leave, 0);
- QTRY_COMPARE(w1->enter, 1);
-
- QCursor::setPos(cursorPos);
- QTRY_COMPARE(w1->leave, 1);
- QTRY_COMPARE(w1->enter, 1);
+ w1.move = 0;
+ QWidget *nativeParent = w1.nativeParentWidget();
+ QVERIFY(nativeParent);
+ QWindow *window = nativeParent->windowHandle();
+ QVERIFY(window);
+ QTest::mouseMove(window, w1.mapTo(nativeParent, w1Center + QPoint(1, 1)));
+ QTRY_COMPARE(w1.move, 1);
+ QTRY_COMPARE(w1.leave, 0);
+ QTRY_COMPARE(w1.enter, 1);
+
+ QCursor::setPos(pointOutsideMenu);
+ QTRY_COMPARE(QCursor::pos(), pointOutsideMenu);
+ QTRY_COMPARE(w1.leave, 1);
+ QTRY_COMPARE(w1.enter, 1);
}
// Submenu
{
- menu1->setActiveAction(nextMenuAct);
- QVERIFY(QTest::qWaitForWindowExposed(menu2.data()));
+ menu.setActiveAction(nextMenuAct);
+ QVERIFY(QTest::qWaitForWindowExposed(&submenu));
- QCursor::setPos(w2->mapToGlobal(w2->rect().center()));
- QVERIFY(w2->isVisible());
- QTRY_COMPARE(w2->leave, 0);
- QTRY_COMPARE(w2->enter, 1);
+ QPoint w2Center = w2.rect().center();
+ const QPoint w2CenterGlobal = w2.mapToGlobal(w2Center);
+ QCursor::setPos(w2CenterGlobal);
+ QTRY_COMPARE(QCursor::pos(), w2CenterGlobal);
+
+ QVERIFY(w2.isVisible());
+ QTRY_COMPARE(w2.leave, 0);
+ QTRY_COMPARE(w2.enter, 1);
// Check whether leave event is not delivered on mouse move
- w2->move = 0;
- QCursor::setPos(w2->mapToGlobal(w2->rect().center()) + QPoint(1, 1));
- QTRY_COMPARE(w2->move, 1);
- QTRY_COMPARE(w2->leave, 0);
- QTRY_COMPARE(w2->enter, 1);
-
- QCursor::setPos(cursorPos);
- QTRY_COMPARE(w2->leave, 1);
- QTRY_COMPARE(w2->enter, 1);
+ w2.move = 0;
+ QWidget *nativeParent = w2.nativeParentWidget();
+ QVERIFY(nativeParent);
+ QWindow *window = nativeParent->windowHandle();
+ QVERIFY(window);
+ QTest::mouseMove(window, w2.mapTo(nativeParent, w2Center + QPoint(1, 1)));
+ QTRY_COMPARE(w2.move, 1);
+ QTRY_COMPARE(w2.leave, 0);
+ QTRY_COMPARE(w2.enter, 1);
+
+ QCursor::setPos(pointOutsideMenu);
+ QTRY_COMPARE(QCursor::pos(), pointOutsideMenu);
+ QTRY_COMPARE(w2.leave, 1);
+ QTRY_COMPARE(w2.enter, 1);
}
+#endif // QT_NO_CURSOR
}
-#endif // !QT_NO_CURSOR
class MyMenu : public QMenu
{
@@ -1518,7 +1539,7 @@ void tst_QMenu::menuSize_Scrolling()
~TestMenu() {}
private:
- void showEvent(QShowEvent *e) Q_DECL_OVERRIDE
+ void showEvent(QShowEvent *e) override
{
QVERIFY(actions().length() == m_numItems);
diff --git a/tests/auto/widgets/widgets/qmenubar/BLACKLIST b/tests/auto/widgets/widgets/qmenubar/BLACKLIST
index e2194e69ca..9b8e07312d 100644
--- a/tests/auto/widgets/widgets/qmenubar/BLACKLIST
+++ b/tests/auto/widgets/widgets/qmenubar/BLACKLIST
@@ -1,3 +1,5 @@
[check_menuPosition]
-ubuntu-14.04
ubuntu-16.04
+#QTBUG-66255
+[activatedCount]
+*
diff --git a/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp b/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp
index 417fa9befa..ab82268578 100644
--- a/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp
+++ b/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp
@@ -136,7 +136,7 @@ private slots:
void task223138_triggered();
void task256322_highlight();
void menubarSizeHint();
-#ifndef Q_OS_MAC
+#ifndef Q_OS_MACOS
void taskQTBUG4965_escapeEaten();
#endif
void taskQTBUG11823_crashwithInvisibleActions();
@@ -148,11 +148,12 @@ private slots:
void taskQTBUG56275_reinsertMenuInParentlessQMenuBar();
void QTBUG_57404_existingMenuItemException();
#endif
+ void QTBUG_25669_menubarActionDoubleTriggered();
void taskQTBUG55966_subMenuRemoved();
void QTBUG_58344_invalidIcon();
-
void platformMenu();
-
+ void addActionQt5connect();
+ void QTBUG_65488_hiddenActionTriggered();
protected slots:
void onSimpleActivated( QAction*);
void onComplexActionTriggered();
@@ -1376,7 +1377,7 @@ void tst_QMenuBar::menubarSizeHint()
}
// On Mac, do not test the menubar with escape key
-#ifndef Q_OS_MAC
+#ifndef Q_OS_MACOS
void tst_QMenuBar::taskQTBUG4965_escapeEaten()
{
QMenuBar menubar;
@@ -1549,7 +1550,7 @@ void tst_QMenuBar::taskQTBUG53205_crashReparentNested()
//set the new parent, a window
QScopedPointer<QWidget> windowedParent;
- windowedParent.reset(new QWidget(Q_NULLPTR, Qt::WindowFlags()));
+ windowedParent.reset(new QWidget(nullptr, Qt::WindowFlags()));
windowedParent->setGeometry(400, 10, 300, 300);
windowedParent->show();
@@ -1566,7 +1567,7 @@ void tst_QMenuBar::taskQTBUG53205_crashReparentNested()
//to windowedParent<-movingParent<-containerWidget<-containedWidget<-menuBar
movingParent.setParent(windowedParent.data(),0);
// this resets the parenting and the menu bar's window
- taskQTBUG53205MenuBar->setParent(Q_NULLPTR);
+ taskQTBUG53205MenuBar->setParent(nullptr);
taskQTBUG53205MenuBar->setParent(&containedWidget);
//from windowedParent<-movingParent<-containerWidget<-containedWidget<-menuBar
//to : QMainWindow<-hiddenParent<-movingParent<-containerWidget<-containedWidget<-menuBar
@@ -1576,6 +1577,25 @@ void tst_QMenuBar::taskQTBUG53205_crashReparentNested()
testMenus.actions[0]->trigger();
}
+void tst_QMenuBar::QTBUG_65488_hiddenActionTriggered()
+{
+ QMainWindow win;
+ win.menuBar()->setNativeMenuBar(false);
+ QAction *act1 = win.menuBar()->addAction("A very long named action that make menuBar item wide enough");
+ QSignalSpy spy(win.menuBar(), &QMenuBar::triggered);
+
+ QRect actRect = win.menuBar()->actionGeometry(act1);
+ // resize to action's size to make Action1 hidden
+ win.resize(actRect.width() - 10, win.size().height());
+ win.show();
+ QApplication::setActiveWindow(&win);
+ QVERIFY(QTest::qWaitForWindowExposed(&win));
+ // click center of the blank area on the menubar where Action1 resided
+ QTest::mouseClick(win.windowHandle(), Qt::LeftButton, Qt::NoModifier, win.menuBar()->geometry().center());
+ QCoreApplication::sendPostedEvents(); // make sure all queued events also dispatched
+ QCOMPARE(spy.count(), 0);
+}
+
// QTBUG-56526
void tst_QMenuBar::platformMenu()
{
@@ -1595,10 +1615,71 @@ void tst_QMenuBar::platformMenu()
QVERIFY(menu->platformMenu());
}
+class TestObject : public QObject
+{
+ Q_OBJECT
+public:
+ bool flag = false;
+ void setFlag()
+ {
+ flag = true;
+ }
+};
+
+void tst_QMenuBar::addActionQt5connect()
+{
+ bool flag = false;
+ auto functor = [&flag](){ flag = true; };
+
+ TestObject obj;
+
+ QMenuBar menuBar;
+
+ auto action1 = menuBar.addAction(QStringLiteral("1"), &obj, &TestObject::setFlag);
+ auto action2 = menuBar.addAction(QStringLiteral("2"), functor);
+
+ action1->activate(QAction::Trigger);
+ action2->activate(QAction::Trigger);
+
+ QVERIFY(obj.flag);
+ QVERIFY(flag);
+
+ flag = false;
+
+ auto action3 = menuBar.addAction(QStringLiteral("3"), this, functor);
+ action3->activate(QAction::Trigger);
+ QVERIFY(flag);
+}
+
+void tst_QMenuBar::QTBUG_25669_menubarActionDoubleTriggered()
+{
+ QMainWindow win;
+ win.menuBar()->setNativeMenuBar(false);
+ QAction *act1 = win.menuBar()->addAction("Action1");
+ QAction *act2 = win.menuBar()->addAction("Action2");
+ QSignalSpy spy(win.menuBar(), &QMenuBar::triggered);
+
+ win.show();
+ QApplication::setActiveWindow(&win);
+ QVERIFY(QTest::qWaitForWindowExposed(&win));
+
+ QPoint posAct1 = menuBarActionWindowPos(win.menuBar(), act1);
+ QPoint posAct2 = menuBarActionWindowPos(win.menuBar(), act2);
+
+ QTest::mouseClick(win.windowHandle(), Qt::LeftButton, Qt::NoModifier, posAct1);
+ QTRY_COMPARE(spy.count(), 1);
+
+ QTest::mouseClick(win.windowHandle(), Qt::LeftButton, Qt::NoModifier, posAct2);
+ QTRY_COMPARE(spy.count(), 2);
+
+ QTest::mouseClick(win.windowHandle(), Qt::LeftButton, Qt::NoModifier, posAct2);
+ QTRY_COMPARE(spy.count(), 3);
+}
+
void tst_QMenuBar::slotForTaskQTBUG53205()
{
QWidget *parent = taskQTBUG53205MenuBar->parentWidget();
- taskQTBUG53205MenuBar->setParent(Q_NULLPTR);
+ taskQTBUG53205MenuBar->setParent(nullptr);
taskQTBUG53205MenuBar->setParent(parent);
}
diff --git a/tests/auto/widgets/widgets/qopenglwidget/BLACKLIST b/tests/auto/widgets/widgets/qopenglwidget/BLACKLIST
index 7825c33a0a..b67c8354e8 100644
--- a/tests/auto/widgets/widgets/qopenglwidget/BLACKLIST
+++ b/tests/auto/widgets/widgets/qopenglwidget/BLACKLIST
@@ -1,18 +1,5 @@
[clearAndGrab]
-opensuse-13.1
ubuntu
-#QTBUG-31611
-[painter]
-windows msvc-2010 32bit developer-build
-
-#QTBUG-31611
-[reparentToAlreadyCreated]
-windows msvc-2010 32bit developer-build
-
-#QTBUG-31611
-[reparentToNotYetCreated]
-windows msvc-2010 32bit developer-build
-
[stackWidgetOpaqueChildIsVisible]
windows
diff --git a/tests/auto/widgets/widgets/qopenglwidget/tst_qopenglwidget.cpp b/tests/auto/widgets/widgets/qopenglwidget/tst_qopenglwidget.cpp
index 49291cf5f9..db125f6644 100644
--- a/tests/auto/widgets/widgets/qopenglwidget/tst_qopenglwidget.cpp
+++ b/tests/auto/widgets/widgets/qopenglwidget/tst_qopenglwidget.cpp
@@ -100,16 +100,16 @@ public:
m_w(expectedWidth), m_h(expectedHeight),
r(1.0f), g(0.0f), b(0.0f) { }
- void initializeGL() Q_DECL_OVERRIDE {
+ void initializeGL() override {
m_initCalled = true;
initializeOpenGLFunctions();
}
- void paintGL() Q_DECL_OVERRIDE {
+ void paintGL() override {
m_paintCalled = true;
glClearColor(r, g, b, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
}
- void resizeGL(int w, int h) Q_DECL_OVERRIDE {
+ void resizeGL(int w, int h) override {
m_resizeCalled = true;
m_resizeOk = w == m_w && h == m_h;
}
@@ -203,10 +203,10 @@ public:
PainterWidget(QWidget *parent)
: QOpenGLWidget(parent), m_clear(false) { }
- void initializeGL() Q_DECL_OVERRIDE {
+ void initializeGL() override {
initializeOpenGLFunctions();
}
- void paintGL() Q_DECL_OVERRIDE {
+ void paintGL() override {
QPainter p(this);
QCOMPARE(p.device()->width(), width());
QCOMPARE(p.device()->height(), height());
@@ -322,7 +322,7 @@ public:
void resetPaintCount() { m_count = 0; }
protected:
- void drawForeground(QPainter *, const QRectF &) Q_DECL_OVERRIDE;
+ void drawForeground(QPainter *, const QRectF &) override;
int m_count;
};
@@ -372,7 +372,7 @@ class PaintCountWidget : public QOpenGLWidget
public:
PaintCountWidget() : m_count(0) { }
void reset() { m_count = 0; }
- void paintGL() Q_DECL_OVERRIDE { ++m_count; }
+ void paintGL() override { ++m_count; }
int m_count;
};
@@ -393,7 +393,7 @@ void tst_QOpenGLWidget::requestUpdate()
class FboCheckWidget : public QOpenGLWidget
{
public:
- void paintGL() Q_DECL_OVERRIDE {
+ void paintGL() override {
GLuint reportedDefaultFbo = QOpenGLContext::currentContext()->defaultFramebufferObject();
GLuint expectedDefaultFbo = defaultFramebufferObject();
QCOMPARE(reportedDefaultFbo, expectedDefaultFbo);
diff --git a/tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp b/tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp
index af0ad1a601..a08a8862b8 100644
--- a/tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp
+++ b/tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp
@@ -870,7 +870,7 @@ void tst_QPlainTextEdit::lineWrapModes()
// QPlainTextEdit does lazy line layout on resize, only for the visible blocks.
// We thus need to make it wide enough to show something visible.
int minimumWidth = 2 * ed->document()->documentMargin();
- minimumWidth += ed->fontMetrics().width(QLatin1Char('a'));
+ minimumWidth += ed->fontMetrics().horizontalAdvance(QLatin1Char('a'));
minimumWidth += ed->frameWidth();
ed->resize(minimumWidth, 1000);
QCOMPARE(lineCount(), 26);
diff --git a/tests/auto/widgets/widgets/qprogressbar/tst_qprogressbar.cpp b/tests/auto/widgets/widgets/qprogressbar/tst_qprogressbar.cpp
index 9f64335930..35209c2501 100644
--- a/tests/auto/widgets/widgets/qprogressbar/tst_qprogressbar.cpp
+++ b/tests/auto/widgets/widgets/qprogressbar/tst_qprogressbar.cpp
@@ -293,7 +293,7 @@ void tst_QProgressBar::sizeHint()
QFontMetrics fm = bar.fontMetrics();
QStyleOptionProgressBar opt;
bar.initStyleOption(&opt);
- QSize size = QSize(9 * 7 + fm.width(QLatin1Char('0')) * 4, fm.height() + 8);
+ QSize size = QSize(9 * 7 + fm.horizontalAdvance(QLatin1Char('0')) * 4, fm.height() + 8);
size= bar.style()->sizeFromContents(QStyle::CT_ProgressBar, &opt, size, &bar);
QSize barSize = bar.sizeHint();
QVERIFY(barSize.width() >= size.width());
diff --git a/tests/auto/widgets/widgets/qscrollbar/BLACKLIST b/tests/auto/widgets/widgets/qscrollbar/BLACKLIST
new file mode 100644
index 0000000000..277ae4d260
--- /dev/null
+++ b/tests/auto/widgets/widgets/qscrollbar/BLACKLIST
@@ -0,0 +1,3 @@
+#QTBUG-66321
+[QTBUG_42871]
+macos
diff --git a/tests/auto/widgets/widgets/qspinbox/BLACKLIST b/tests/auto/widgets/widgets/qspinbox/BLACKLIST
deleted file mode 100644
index 5bf6c3beed..0000000000
--- a/tests/auto/widgets/widgets/qspinbox/BLACKLIST
+++ /dev/null
@@ -1,3 +0,0 @@
-[editingFinished]
-osx-10.8
-osx-10.9
diff --git a/tests/auto/widgets/widgets/qsplitter/tst_qsplitter.cpp b/tests/auto/widgets/widgets/qsplitter/tst_qsplitter.cpp
index aef4046afe..cad7bd69d7 100644
--- a/tests/auto/widgets/widgets/qsplitter/tst_qsplitter.cpp
+++ b/tests/auto/widgets/widgets/qsplitter/tst_qsplitter.cpp
@@ -299,7 +299,7 @@ class TestSplitterStyle : public QProxyStyle
{
public:
TestSplitterStyle() : handleWidth(5) {}
- int pixelMetric(PixelMetric metric, const QStyleOption *option = 0, const QWidget *widget = 0) const Q_DECL_OVERRIDE
+ int pixelMetric(PixelMetric metric, const QStyleOption *option = 0, const QWidget *widget = 0) const override
{
if (metric == QStyle::PM_SplitterWidth)
return handleWidth;
@@ -658,13 +658,34 @@ public:
class EventCounterSpy : public QObject
{
public:
- EventCounterSpy(QWidget *parentWidget) : QObject(parentWidget)
+ EventCounterSpy(QWidget *obj) : objectToWatch(obj)
{ }
+ ~EventCounterSpy()
+ {
+ removeEventFilter();
+ }
+
+ void installEventFilter()
+ {
+ if (needRemoveEventFilter)
+ return;
+ needRemoveEventFilter = true;
+ qApp->installEventFilter(this);
+ }
+
+ void removeEventFilter()
+ {
+ if (!needRemoveEventFilter)
+ return;
+ needRemoveEventFilter = false;
+ qApp->removeEventFilter(this);
+ }
+
bool eventFilter(QObject *watched, QEvent *event) override
{
// Watch for events in the parent widget and all its children
- if (watched == parent() || watched->parent() == parent()) {
+ if (watched == objectToWatch || watched->parent() == objectToWatch) {
if (event->type() == QEvent::Resize)
resizeCount++;
else if (event->type() == QEvent::Paint)
@@ -676,6 +697,8 @@ public:
int resizeCount = 0;
int paintCount = 0;
+ bool needRemoveEventFilter = false;
+ QObject *objectToWatch;
};
void tst_QSplitter::replaceWidget_data()
@@ -733,31 +756,30 @@ void tst_QSplitter::replaceWidget()
// to set a shorter label.
QLabel *newWidget = new QLabel(QLatin1String("<b>NEW</b>"));
- EventCounterSpy *ef = new EventCounterSpy(&sp);
- qApp->installEventFilter(ef);
+ EventCounterSpy ef(&sp);
+ ef.installEventFilter();
const QWidget *res = sp.replaceWidget(index, newWidget);
QTest::qWait(100); // Give visibility and resizing some time
- qApp->removeEventFilter(ef);
// Check
if (index < 0 || index >= count) {
QVERIFY(!res);
QVERIFY(!newWidget->parentWidget());
- QCOMPARE(ef->resizeCount, 0);
- QCOMPARE(ef->paintCount, 0);
+ QCOMPARE(ef.resizeCount, 0);
+ QCOMPARE(ef.paintCount, 0);
} else {
QCOMPARE(res, oldWidget);
QVERIFY(!res->parentWidget());
QVERIFY(!res->isVisible());
+ const int expectedResizeCount = visible ? 1 : 0; // new widget only
+ const int expectedPaintCount = visible && !collapsed ? 2 : 0; // splitter and new widget
+ QTRY_COMPARE(ef.resizeCount, expectedResizeCount);
+ QTRY_COMPARE(ef.paintCount, expectedPaintCount);
QCOMPARE(newWidget->parentWidget(), &sp);
QCOMPARE(newWidget->isVisible(), visible);
if (visible && !collapsed)
QCOMPARE(newWidget->geometry(), oldGeom);
QCOMPARE(newWidget->size().isEmpty(), !visible || collapsed);
- const int expectedResizeCount = visible ? 1 : 0; // new widget only
- const int expectedPaintCount = visible && !collapsed ? 2 : 0; // splitter and new widget
- QCOMPARE(ef->resizeCount, expectedResizeCount);
- QCOMPARE(ef->paintCount, expectedPaintCount);
delete res;
}
QCOMPARE(sp.count(), count);
@@ -797,25 +819,24 @@ void tst_QSplitter::replaceWidgetWithSplitterChild()
const QList<int> sizes = sp.sizes();
QWidget *sibling = srcIndex == -1 ? (new QLabel("<b>NEW</b>", &sp)) : sp.widget(srcIndex);
- EventCounterSpy *ef = new EventCounterSpy(&sp);
- qApp->installEventFilter(ef);
+ EventCounterSpy ef(&sp);
+ ef.installEventFilter();
const QWidget *res = sp.replaceWidget(dstIndex, sibling);
QTest::qWait(100); // Give visibility and resizing some time
- qApp->removeEventFilter(ef);
QVERIFY(!res);
if (srcIndex == -1) {
// Create and replace before recalc. The sibling is scheduled to be
// added after replaceWidget(), when QSplitter receives a child event.
- QVERIFY(ef->resizeCount > 0);
- QVERIFY(ef->paintCount > 0);
+ QTRY_VERIFY(ef.resizeCount > 0);
+ QTRY_VERIFY(ef.paintCount > 0);
QCOMPARE(sp.count(), count + 1);
QCOMPARE(sp.sizes().mid(0, count), sizes);
QCOMPARE(sp.sizes().last(), sibling->width());
} else {
// No-op for the rest
- QCOMPARE(ef->resizeCount, 0);
- QCOMPARE(ef->paintCount, 0);
+ QCOMPARE(ef.resizeCount, 0);
+ QCOMPARE(ef.paintCount, 0);
QCOMPARE(sp.count(), count);
QCOMPARE(sp.sizes(), sizes);
}
diff --git a/tests/auto/widgets/widgets/qtabbar/BLACKLIST b/tests/auto/widgets/widgets/qtabbar/BLACKLIST
index 5a3f33e3e4..735b044d8b 100644
--- a/tests/auto/widgets/widgets/qtabbar/BLACKLIST
+++ b/tests/auto/widgets/widgets/qtabbar/BLACKLIST
@@ -1,3 +1,2 @@
[sizeHints]
-ubuntu-14.04
redhatenterpriselinuxworkstation-6.6