aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/auto/quick/qquickmousearea/BLACKLIST3
-rw-r--r--tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp154
2 files changed, 72 insertions, 85 deletions
diff --git a/tests/auto/quick/qquickmousearea/BLACKLIST b/tests/auto/quick/qquickmousearea/BLACKLIST
deleted file mode 100644
index 817eb472a4..0000000000
--- a/tests/auto/quick/qquickmousearea/BLACKLIST
+++ /dev/null
@@ -1,3 +0,0 @@
-# QTBUG-63786
-[pressedMultipleButtons]
-*
diff --git a/tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp b/tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp
index ea55c25761..aa379e834e 100644
--- a/tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp
+++ b/tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp
@@ -1578,91 +1578,85 @@ void tst_QQuickMouseArea::transformedMouseArea()
}
}
+struct MouseEvent {
+ QEvent::Type type;
+ Qt::MouseButton button;
+};
+Q_DECLARE_METATYPE(MouseEvent)
+
void tst_QQuickMouseArea::pressedMultipleButtons_data()
{
QTest::addColumn<Qt::MouseButtons>("accepted");
- QTest::addColumn<QList<Qt::MouseButtons> >("buttons");
+ QTest::addColumn<QList<MouseEvent> >("mouseEvents");
QTest::addColumn<QList<bool> >("pressed");
QTest::addColumn<QList<Qt::MouseButtons> >("pressedButtons");
QTest::addColumn<int>("changeCount");
- QList<Qt::MouseButtons> buttons;
+ Qt::MouseButtons accepted;
+ QList<MouseEvent> mouseEvents;
QList<bool> pressed;
QList<Qt::MouseButtons> pressedButtons;
- buttons << Qt::LeftButton
- << (Qt::LeftButton | Qt::RightButton)
- << Qt::LeftButton
- << nullptr;
- pressed << true
- << true
- << true
- << false;
- pressedButtons << Qt::LeftButton
- << Qt::LeftButton
- << Qt::LeftButton
- << nullptr;
- QTest::newRow("Accept Left - Press left, Press Right, Release Right")
- << Qt::MouseButtons(Qt::LeftButton) << buttons << pressed << pressedButtons << 2;
-
- buttons.clear();
- pressed.clear();
- pressedButtons.clear();
- buttons << Qt::LeftButton
- << (Qt::LeftButton | Qt::RightButton)
- << Qt::RightButton
- << nullptr;
- pressed << true
- << true
- << false
- << false;
- pressedButtons << Qt::LeftButton
- << Qt::LeftButton
- << nullptr
- << nullptr;
- QTest::newRow("Accept Left - Press left, Press Right, Release Left")
- << Qt::MouseButtons(Qt::LeftButton) << buttons << pressed << pressedButtons << 2;
-
- buttons.clear();
- pressed.clear();
- pressedButtons.clear();
- buttons << Qt::LeftButton
- << (Qt::LeftButton | Qt::RightButton)
- << Qt::LeftButton
- << nullptr;
- pressed << true
- << true
- << true
- << false;
- pressedButtons << Qt::LeftButton
- << (Qt::LeftButton | Qt::RightButton)
- << Qt::LeftButton
- << nullptr;
- QTest::newRow("Accept Left|Right - Press left, Press Right, Release Right")
- << (Qt::LeftButton | Qt::RightButton) << buttons << pressed << pressedButtons << 4;
-
- buttons.clear();
- pressed.clear();
- pressedButtons.clear();
- buttons << Qt::RightButton
- << (Qt::LeftButton | Qt::RightButton)
- << Qt::LeftButton
- << nullptr;
- pressed << true
- << true
- << false
- << false;
- pressedButtons << Qt::RightButton
- << Qt::RightButton
- << nullptr
- << nullptr;
- QTest::newRow("Accept Right - Press Right, Press Left, Release Right")
- << Qt::MouseButtons(Qt::RightButton) << buttons << pressed << pressedButtons << 2;
+ int changeCount;
+
+ MouseEvent leftPress = { QEvent::MouseButtonPress, Qt::LeftButton };
+ MouseEvent leftRelease = { QEvent::MouseButtonRelease, Qt::LeftButton };
+ MouseEvent rightPress = { QEvent::MouseButtonPress, Qt::RightButton };
+ MouseEvent rightRelease = { QEvent::MouseButtonRelease, Qt::RightButton };
+
+ auto addRowWithFormattedTitleAndReset = [&]() {
+ QByteArray title;
+ title.append("Accept:");
+ if (accepted & Qt::LeftButton)
+ title.append(" LeftButton");
+ if (accepted & Qt::RightButton)
+ title.append(" RightButton");
+ title.append(" | Events:");
+ for (MouseEvent event : mouseEvents) {
+ title.append(event.type == QEvent::MouseButtonPress ? " Press" : " Release");
+ title.append(event.button == Qt::LeftButton ? " Left," : " Right,");
+ }
+ title.chop(1); // remove last comma
+ QTest::newRow(title) << accepted << mouseEvents << pressed << pressedButtons << changeCount;
+
+ mouseEvents.clear();
+ pressed.clear();
+ pressedButtons.clear();
+ };
+
+ accepted = Qt::LeftButton;
+ changeCount = 2;
+ mouseEvents << leftPress << rightPress << rightRelease << leftRelease;
+ pressed << true << true << true << false;
+ pressedButtons << Qt::LeftButton << Qt::LeftButton << Qt::LeftButton << Qt::NoButton;
+ addRowWithFormattedTitleAndReset();
+
+ accepted = Qt::LeftButton;
+ changeCount = 2;
+ mouseEvents << leftPress << rightPress << leftRelease << rightRelease;
+ pressed << true << true << false << false;
+ pressedButtons << Qt::LeftButton << Qt::LeftButton << Qt::NoButton << Qt::NoButton;
+ addRowWithFormattedTitleAndReset();
+
+ accepted = Qt::LeftButton | Qt::RightButton;
+ changeCount = 4;
+ mouseEvents << leftPress << rightPress << rightRelease << leftRelease;
+ pressed << true << true << true << false;
+ pressedButtons << Qt::LeftButton << (Qt::LeftButton | Qt::RightButton) << Qt::LeftButton
+ << Qt::NoButton;
+ addRowWithFormattedTitleAndReset();
+
+ accepted = Qt::RightButton;
+ changeCount = 2;
+ mouseEvents << rightPress << leftPress << rightRelease << leftRelease;
+ pressed << true << true << false << false;
+ pressedButtons << Qt::RightButton << Qt::RightButton << Qt::NoButton << Qt::NoButton;
+ addRowWithFormattedTitleAndReset();
}
void tst_QQuickMouseArea::pressedMultipleButtons()
{
QFETCH(Qt::MouseButtons, accepted);
- QFETCH(QList<Qt::MouseButtons>, buttons);
+ QFETCH(QList<MouseEvent>, mouseEvents);
QFETCH(QList<bool>, pressed);
QFETCH(QList<Qt::MouseButtons>, pressedButtons);
QFETCH(int, changeCount);
@@ -1681,21 +1675,17 @@ void tst_QQuickMouseArea::pressedMultipleButtons()
QSignalSpy pressedButtonsSpy(mouseArea, SIGNAL(pressedButtonsChanged()));
mouseArea->setAcceptedMouseButtons(accepted);
- QPoint point(10,10);
-
- for (int i = 0; i < buttons.count(); ++i) {
- int btns = buttons.at(i);
-
- // The windowsysteminterface takes care of sending releases
- QTest::mousePress(&view, (Qt::MouseButton)btns, Qt::NoModifier, point);
-
+ QPoint point(10, 10);
+ for (int i = 0; i < mouseEvents.count(); ++i) {
+ const MouseEvent mouseEvent = mouseEvents.at(i);
+ if (mouseEvent.type == QEvent::MouseButtonPress)
+ QTest::mousePress(&view, mouseEvent.button, Qt::NoModifier, point);
+ else
+ QTest::mouseRelease(&view, mouseEvent.button, Qt::NoModifier, point);
QCOMPARE(mouseArea->pressed(), pressed.at(i));
QCOMPARE(mouseArea->pressedButtons(), pressedButtons.at(i));
}
- QTest::mousePress(&view, Qt::NoButton, Qt::NoModifier, point);
- QCOMPARE(mouseArea->pressed(), false);
-
QCOMPARE(pressedSpy.count(), 2);
QCOMPARE(pressedButtonsSpy.count(), changeCount);
}