summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVolker Hilsheimer <volker.hilsheimer@qt.io>2021-08-24 17:15:59 +0200
committerShawn Rutledge <shawn.rutledge@qt.io>2021-08-30 16:20:08 +0000
commita49ba9265f90a5561351de2b47c6082b267f43b0 (patch)
tree269d47a721fbd1d5f8e8a57e56a050ff1bb68f7e
parent4e9efb0b6096c35edc0b98650cf64acb367d5ba8 (diff)
Reactivate QGraphics(Proxy)Widget unit tests
They were de-facto disabled in the qmake build system, and didn't make it into the cmake build system either. The dependency to the fusion style is not a build-time dependency since the test uses the QStyleFactory to create the style, and if that fails, tests can be skipped at runtime. As a consequence of not being executed in CI for a long time, many tests failed. Also, many tests were commented out or skipped as broken, ambivalent, or nonsensical. Remove that dead code. The QGraphicsWidget::initialShow test doesn't test anything that initialShow2 doesn't test, but makes incorrect assumptions, so remove it and rename initialShow2 to initialShow. Failing tests frequently left QWidget objects undeleted, causing all subsequent tests to fails as well. Fix that with std::unique_ptr. Some tests are still unstable and fail on some platforms, handle that using QEXPECT_FAIL. The forwardTouchEvent test fails due to a bug in Qt introduced recently. Skipping it for now. Pick-to: 6.2 Change-Id: I405122ea9d4d150bd1d505d40b83fe39604de0f9 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
-rw-r--r--tests/auto/widgets/graphicsview/CMakeLists.txt15
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsproxywidget/BLACKLIST7
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp689
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicswidget/BLACKLIST6
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp127
5 files changed, 301 insertions, 543 deletions
diff --git a/tests/auto/widgets/graphicsview/CMakeLists.txt b/tests/auto/widgets/graphicsview/CMakeLists.txt
index 5e6fddccce..df3c4d4369 100644
--- a/tests/auto/widgets/graphicsview/CMakeLists.txt
+++ b/tests/auto/widgets/graphicsview/CMakeLists.txt
@@ -17,19 +17,8 @@ add_subdirectory(qgraphicsobject)
add_subdirectory(qgraphicspixmapitem)
add_subdirectory(qgraphicspolygonitem)
add_subdirectory(qgraphicstransform)
-if(QT_FEATURE_style_fusion)
- # special case begin
- # These tests are never run in coin with qmake since the statement
- # !qtConfig(style-fusion): always passes causing the subdirs to be removed.
- # For these tests to be generated the .pro file needs to be patched and
- # the above line changed to !qtConfig(style-fusion). That being said,
- # one of the test fails and needs to be corrected by someone with know how in
- # that area. Until then we will disable them to mimic the behavior seen in
- # coin.
- #add_subdirectory(qgraphicsproxywidget)
- #add_subdirectory(qgraphicswidget)
- # special case end
-endif()
+add_subdirectory(qgraphicsproxywidget)
+add_subdirectory(qgraphicswidget)
# QTBUG-87671 # special case
if(NOT ANDROID)
add_subdirectory(qgraphicsview)
diff --git a/tests/auto/widgets/graphicsview/qgraphicsproxywidget/BLACKLIST b/tests/auto/widgets/graphicsview/qgraphicsproxywidget/BLACKLIST
new file mode 100644
index 0000000000..afb6dd5e2d
--- /dev/null
+++ b/tests/auto/widgets/graphicsview/qgraphicsproxywidget/BLACKLIST
@@ -0,0 +1,7 @@
+[scrollUpdate]
+android
+b2qt
+[hoverEnterLeaveEvent]
+macos ci
+[windowOpacity]
+macos ci
diff --git a/tests/auto/widgets/graphicsview/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp b/tests/auto/widgets/graphicsview/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp
index e9ba24f4fc..b5ed792c67 100644
--- a/tests/auto/widgets/graphicsview/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp
@@ -30,6 +30,7 @@
#include <QTest>
#include <QtGui>
#include <QtWidgets>
+#include <QSignalSpy>
#include <private/qgraphicsproxywidget_p.h>
#include <private/qlayoutengine_p.h> // qSmartMin functions...
@@ -60,7 +61,7 @@ public:
QMap<QEvent::Type, int> counts;
protected:
- bool eventFilter(QObject *, QEvent *event)
+ bool eventFilter(QObject *, QEvent *event) override
{
++counts[event->type()];
return false;
@@ -74,7 +75,6 @@ class tst_QGraphicsProxyWidget : public QObject
private slots:
void initTestCase();
void cleanup();
- void qgraphicsproxywidget_data();
void qgraphicsproxywidget();
void paint();
void paint_2();
@@ -92,13 +92,10 @@ private slots:
void focusProxy_QTBUG_51856();
void hoverEnterLeaveEvent_data();
void hoverEnterLeaveEvent();
- void hoverMoveEvent_data();
- void hoverMoveEvent();
void keyPressEvent_data();
void keyPressEvent();
void keyReleaseEvent_data();
void keyReleaseEvent();
- void mouseDoubleClickEvent_data();
void mouseDoubleClickEvent();
void mousePressReleaseEvent_data();
void mousePressReleaseEvent();
@@ -108,8 +105,6 @@ private slots:
#if QT_CONFIG(wheelevent)
void wheelEvent();
#endif
- void sizeHint_data();
- void sizeHint();
void sizePolicy();
void minimumSize();
void maximumSize();
@@ -168,82 +163,29 @@ private slots:
// Subclass that exposes the protected functions.
class SubQGraphicsProxyWidget : public QGraphicsProxyWidget
{
-
+ friend tst_QGraphicsProxyWidget;
public:
- SubQGraphicsProxyWidget(QGraphicsItem *parent = nullptr) : QGraphicsProxyWidget(parent),
- paintCount(0), keyPress(0), focusOut(0)
- {}
-
- bool call_eventFilter(QObject* object, QEvent* event)
- { return SubQGraphicsProxyWidget::eventFilter(object, event); }
-
- void call_focusInEvent(QFocusEvent* event)
- { return SubQGraphicsProxyWidget::focusInEvent(event); }
-
- bool call_focusNextPrevChild(bool next)
- { return SubQGraphicsProxyWidget::focusNextPrevChild(next); }
-
- void call_focusOutEvent(QFocusEvent* event)
- { return SubQGraphicsProxyWidget::focusOutEvent(event); }
-
- void call_hideEvent(QHideEvent* event)
- { return SubQGraphicsProxyWidget::hideEvent(event); }
-
- void call_hoverEnterEvent(QGraphicsSceneHoverEvent* event)
- { return SubQGraphicsProxyWidget::hoverEnterEvent(event); }
-
- void call_hoverLeaveEvent(QGraphicsSceneHoverEvent* event)
- { return SubQGraphicsProxyWidget::hoverLeaveEvent(event); }
-
- void call_hoverMoveEvent(QGraphicsSceneHoverEvent* event)
- { return SubQGraphicsProxyWidget::hoverMoveEvent(event); }
-
- void call_keyPressEvent(QKeyEvent* event)
- { return SubQGraphicsProxyWidget::keyPressEvent(event); }
-
- void call_keyReleaseEvent(QKeyEvent* event)
- { return SubQGraphicsProxyWidget::keyReleaseEvent(event); }
-
- void call_mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event)
- { return SubQGraphicsProxyWidget::mouseDoubleClickEvent(event); }
-
- void call_mouseMoveEvent(QGraphicsSceneMouseEvent* event)
- { return SubQGraphicsProxyWidget::mouseMoveEvent(event); }
-
- void call_mousePressEvent(QGraphicsSceneMouseEvent* event)
- { return SubQGraphicsProxyWidget::mousePressEvent(event); }
+ using QGraphicsProxyWidget::QGraphicsProxyWidget;
- void call_mouseReleaseEvent(QGraphicsSceneMouseEvent* event)
- { return SubQGraphicsProxyWidget::mouseReleaseEvent(event); }
-
- void call_resizeEvent(QGraphicsSceneResizeEvent* event)
- { return SubQGraphicsProxyWidget::resizeEvent(event); }
-
- QSizeF call_sizeHint(Qt::SizeHint which, QSizeF const& constraint = QSizeF()) const
- { return SubQGraphicsProxyWidget::sizeHint(which, constraint); }
-
- void call_showEvent(QShowEvent* event)
- { return SubQGraphicsProxyWidget::showEvent(event); }
-
- void paint (QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr) {
+ void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr) override {
paintCount++;
QGraphicsProxyWidget::paint(painter, option, widget);
}
- void focusOutEvent(QFocusEvent *event)
+ void focusOutEvent(QFocusEvent *event) override
{
focusOut++;
QGraphicsProxyWidget::focusOutEvent(event);
}
- bool eventFilter(QObject *object, QEvent *event) {
+ bool eventFilter(QObject *object, QEvent *event) override {
if (event->type() == QEvent::KeyPress && object == widget())
keyPress++;
return QGraphicsProxyWidget::eventFilter(object, event);
}
- int paintCount;
- int keyPress;
- int focusOut;
+ int paintCount = 0;
+ int keyPress = 0;
+ int focusOut = 0;
};
#if QT_CONFIG(wheelevent)
@@ -252,7 +194,7 @@ class WheelWidget : public QWidget
public:
WheelWidget() : wheelEventCalled(false) { setFocusPolicy(Qt::WheelFocus); }
- virtual void wheelEvent(QWheelEvent *event) { event->accept(); wheelEventCalled = true; }
+ virtual void wheelEvent(QWheelEvent *event) override { event->accept(); wheelEventCalled = true; }
bool wheelEventCalled;
};
@@ -276,10 +218,6 @@ void tst_QGraphicsProxyWidget::cleanup()
QTRY_VERIFY(QApplication::topLevelWidgets().isEmpty());
}
-void tst_QGraphicsProxyWidget::qgraphicsproxywidget_data()
-{
-}
-
void tst_QGraphicsProxyWidget::qgraphicsproxywidget()
{
SubQGraphicsProxyWidget proxy;
@@ -288,46 +226,47 @@ void tst_QGraphicsProxyWidget::qgraphicsproxywidget()
QCOMPARE(proxy.type(), int(QGraphicsProxyWidget::Type));
QVERIFY(!proxy.widget());
QEvent event(QEvent::None);
- proxy.call_eventFilter(0, &event);
+ proxy.eventFilter(0, &event);
QFocusEvent focusEvent(QEvent::FocusIn);
focusEvent.ignore();
- proxy.call_focusInEvent(&focusEvent);
+ proxy.focusInEvent(&focusEvent);
QCOMPARE(focusEvent.isAccepted(), false);
- QCOMPARE(proxy.call_focusNextPrevChild(false), false);
- QCOMPARE(proxy.call_focusNextPrevChild(true), false);
- proxy.call_focusOutEvent(&focusEvent);
+ QCOMPARE(proxy.focusNextPrevChild(false), false);
+ QCOMPARE(proxy.focusNextPrevChild(true), false);
+ proxy.focusOutEvent(&focusEvent);
QHideEvent hideEvent;
- proxy.call_hideEvent(&hideEvent);
+ proxy.hideEvent(&hideEvent);
QGraphicsSceneHoverEvent hoverEvent;
- proxy.call_hoverEnterEvent(&hoverEvent);
- proxy.call_hoverLeaveEvent(&hoverEvent);
- proxy.call_hoverMoveEvent(&hoverEvent);
+ proxy.hoverEnterEvent(&hoverEvent);
+ proxy.hoverLeaveEvent(&hoverEvent);
+ proxy.hoverMoveEvent(&hoverEvent);
QKeyEvent keyEvent(QEvent::KeyPress, 0, Qt::NoModifier);
- proxy.call_keyPressEvent(&keyEvent);
- proxy.call_keyReleaseEvent(&keyEvent);
+ proxy.keyPressEvent(&keyEvent);
+ proxy.keyReleaseEvent(&keyEvent);
QGraphicsSceneMouseEvent mouseEvent;
- proxy.call_mouseDoubleClickEvent(&mouseEvent);
- proxy.call_mouseMoveEvent(&mouseEvent);
- proxy.call_mousePressEvent(&mouseEvent);
- proxy.call_mouseReleaseEvent(&mouseEvent);
+ proxy.mouseDoubleClickEvent(&mouseEvent);
+ proxy.mouseMoveEvent(&mouseEvent);
+ proxy.mousePressEvent(&mouseEvent);
+ proxy.mouseReleaseEvent(&mouseEvent);
QGraphicsSceneResizeEvent resizeEvent;
- proxy.call_resizeEvent(&resizeEvent);
+ proxy.resizeEvent(&resizeEvent);
QShowEvent showEvent;
- proxy.call_showEvent(&showEvent);
- proxy.call_sizeHint(Qt::PreferredSize, QSizeF());
+ proxy.showEvent(&showEvent);
+ proxy.sizeHint(Qt::PreferredSize, QSizeF());
}
// public void paint(QPainter* painter, QStyleOptionGraphicsItem const* option, QWidget* widget)
void tst_QGraphicsProxyWidget::paint()
{
SubQGraphicsProxyWidget proxy;
+
proxy.paint(0, 0, 0);
}
class MyProxyWidget : public QGraphicsProxyWidget
{
public:
- void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
+ void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override
{
// Make sure QGraphicsProxyWidget::paint does not modify the render hints set on the painter.
painter->setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform
@@ -386,6 +325,8 @@ void tst_QGraphicsProxyWidget::setWidget()
QGraphicsView view(&scene);
view.show();
QScopedPointer<QStyle> style(QStyleFactory::create(QLatin1String("Fusion")));
+ if (style.isNull())
+ QSKIP("This test requires the Fusion style");
QVERIFY(QTest::qWaitForWindowExposed(&view));
QPointer<SubQGraphicsProxyWidget> proxy = new SubQGraphicsProxyWidget;
SubQGraphicsProxyWidget parentProxy;
@@ -433,6 +374,10 @@ void tst_QGraphicsProxyWidget::setWidget()
if (shouldBeInsertable)
subWidget->setAttribute(Qt::WA_QuitOnClose, true);
+ if (hasParent) {
+ QTest::ignoreMessage(QtWarningMsg, QRegularExpression(
+ "QGraphicsProxyWidget::setWidget: cannot embed widget .* which is not a toplevel widget, and is not a child of an embedded widget"));
+ }
proxy->setWidget(subWidget);
if (shouldBeInsertable) {
@@ -548,7 +493,7 @@ void tst_QGraphicsProxyWidget::testEventFilter()
switch (eventType) {
case QEvent::None: {
QEvent event(QEvent::None);
- proxy->call_eventFilter(widget, &event);
+ proxy->eventFilter(widget, &event);
break;
}
case QEvent::Resize: {
@@ -580,7 +525,7 @@ void tst_QGraphicsProxyWidget::testEventFilter()
widget->hide();
} else {
QHideEvent event;
- proxy->call_eventFilter(widget, &event);
+ proxy->eventFilter(widget, &event);
}
QCOMPARE(proxy->isVisible(), false);
break;
@@ -592,7 +537,7 @@ void tst_QGraphicsProxyWidget::testEventFilter()
widget->show();
} else {
QShowEvent event;
- proxy->call_eventFilter(widget, &event);
+ proxy->eventFilter(widget, &event);
}
QCOMPARE(proxy->isVisible(), true);
break;
@@ -607,7 +552,7 @@ void tst_QGraphicsProxyWidget::testEventFilter()
QCOMPARE(proxy->isEnabled(), false);
} else {
QEvent event(QEvent::EnabledChange);
- proxy->call_eventFilter(widget, &event);
+ proxy->eventFilter(widget, &event);
// match the widget not the event
QCOMPARE(proxy->isEnabled(), false);
}
@@ -635,7 +580,7 @@ void tst_QGraphicsProxyWidget::testEventFilter()
QTest::keyPress(widget, Qt::Key_A, Qt::NoModifier);
} else {
QKeyEvent event(QEvent::KeyPress, Qt::Key_A, Qt::NoModifier);
- proxy->call_eventFilter(widget, &event);
+ proxy->eventFilter(widget, &event);
}
QCOMPARE(proxy->keyPress, 1);
break;
@@ -695,7 +640,7 @@ void tst_QGraphicsProxyWidget::focusInEvent()
QFocusEvent event(QEvent::FocusIn, Qt::TabFocusReason);
event.ignore();
- proxy->call_focusInEvent(&event);
+ proxy->focusInEvent(&event);
QTRY_COMPARE(widget->hasFocus(), widgetCanHaveFocus);
}
@@ -712,7 +657,7 @@ void tst_QGraphicsProxyWidget::focusInEventNoWidget()
QFocusEvent event(QEvent::FocusIn, Qt::TabFocusReason);
event.ignore();
//should not crash
- proxy->call_focusInEvent(&event);
+ proxy->focusInEvent(&event);
}
void tst_QGraphicsProxyWidget::focusNextPrevChild_data()
@@ -750,15 +695,33 @@ void tst_QGraphicsProxyWidget::focusNextPrevChild()
// otherwise respect the scene
// Respect the widget over the scene!
- SubQGraphicsProxyWidget *proxy = new SubQGraphicsProxyWidget;
-
- QLabel *widget = new QLabel;
- // I can't believe designer adds this much junk!
- widget->setText("<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\"> p, li { white-space: pre-wrap; } </style></head><body style=\" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;\"> <p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><a href=\"http://www.slashdot.org\"><span style=\" text-decoration: underline; color:#0000ff;\">old</span></a> foo <a href=\"http://www.reddit.org\"><span style=\" text-decoration: underline; color:#0000ff;\">new</span></a></p></body></html>");
- widget->setTextInteractionFlags(Qt::TextBrowserInteraction);
+ std::unique_ptr<SubQGraphicsProxyWidget> proxyGuard(new SubQGraphicsProxyWidget);
+ auto *proxy = proxyGuard.get();
- if (hasWidget)
+ if (hasWidget) {
+ QLabel *widget = new QLabel;
+ widget->setText(R"(
+ <html>
+ <head>
+ <meta name=\"qrichtext\" content=\"1\" />
+ <style type=\"text/css\">
+ p, li { white-space: pre-wrap; }
+ </style>
+ </head>
+ <body>
+ <p>
+ <a href=\"http://www.slashdot.org\">
+ <span style=\" text-decoration: underline; color:#0000ff;\">old</span>
+ </a> foo
+ <a href=\"http://www.reddit.org\">
+ <span style=\" text-decoration: underline; color:#0000ff;\">new</span>
+ </a>
+ </p>
+ </body>
+ </html>)");
+ widget->setTextInteractionFlags(Qt::TextBrowserInteraction);
proxy->setWidget(widget);
+ }
QGraphicsScene scene;
QGraphicsView view(&scene);
@@ -766,7 +729,7 @@ void tst_QGraphicsProxyWidget::focusNextPrevChild()
QApplication::setActiveWindow(&view);
QVERIFY(QTest::qWaitForWindowActive(&view));
if (hasScene) {
- scene.addItem(proxy);
+ scene.addItem(proxyGuard.release());
proxy->show();
// widget should take precedence over scene so make scene.focusNextPrevChild return false
@@ -781,12 +744,7 @@ void tst_QGraphicsProxyWidget::focusNextPrevChild()
QVERIFY(proxy->hasFocus());
}
- QCOMPARE(proxy->call_focusNextPrevChild(next), focusNextPrevChild);
-
- if (!hasScene)
- delete proxy;
- if (!hasWidget)
- delete widget;
+ QCOMPARE(proxy->focusNextPrevChild(next), focusNextPrevChild);
}
void tst_QGraphicsProxyWidget::focusOutEvent_data()
@@ -817,11 +775,11 @@ void tst_QGraphicsProxyWidget::focusOutEvent()
QTRY_VERIFY(view.isVisible());
QTRY_COMPARE(QApplication::activeWindow(), (QWidget*)&view);
- QScopedPointer<QWidget> widgetGuard(new QWidget);
- QWidget *widget = widgetGuard.data();
- widget->setFocusPolicy(Qt::WheelFocus);
+ std::unique_ptr<QWidget> widgetGuard(new QWidget);
+ QWidget *widget = widgetGuard.get();
+ widgetGuard->setFocusPolicy(Qt::WheelFocus);
if (hasWidget)
- proxy->setWidget(widgetGuard.take());
+ proxy->setWidget(widgetGuard.release());
proxy->show();
proxy->setFocus();
QVERIFY(proxy->hasFocus());
@@ -832,36 +790,12 @@ void tst_QGraphicsProxyWidget::focusOutEvent()
if (!call) {
QWidget *other = new QLineEdit(&view);
other->show();
- QApplication::processEvents();
QTRY_VERIFY(other->isVisible());
other->setFocus();
QTRY_VERIFY(other->hasFocus());
- qApp->processEvents();
QTRY_COMPARE(proxy->hasFocus(), false);
QVERIFY(proxy->focusOut);
QCOMPARE(widget->hasFocus(), false);
- } else {
- {
- /*
- ### Test doesn't make sense
- QFocusEvent focusEvent(QEvent::FocusOut);
- proxy->call_focusOutEvent(&focusEvent);
- QCOMPARE(focusEvent.isAccepted(), hasWidget);
- qApp->processEvents();
- QCOMPARE(proxy->paintCount, hasWidget ? 1 : 0);
- */
- }
- {
- /*
- ### Test doesn't make sense
- proxy->setFlag(QGraphicsItem::ItemIsFocusable, false);
- QFocusEvent focusEvent(QEvent::FocusOut);
- proxy->call_focusOutEvent(&focusEvent);
- QCOMPARE(focusEvent.isAccepted(), hasWidget);
- qApp->processEvents();
- QCOMPARE(proxy->paintCount, 0);
- */
- }
}
}
@@ -943,19 +877,19 @@ public:
installEventFilter(this);
}
- void enterEvent(QEnterEvent *event)
+ void enterEvent(QEnterEvent *event) override
{
enterCount++;
QWidget::enterEvent(event);
}
- void leaveEvent(QEvent *event )
+ void leaveEvent(QEvent *event ) override
{
leaveCount++;
QWidget::leaveEvent(event);
}
- void mouseMoveEvent(QMouseEvent *event)
+ void mouseMoveEvent(QMouseEvent *event) override
{
event->setAccepted(true);
moveCount++;
@@ -970,7 +904,7 @@ public:
int hoverLeave;
int hoverMove;
protected:
- bool eventFilter(QObject *object, QEvent *event)
+ bool eventFilter(QObject *object, QEvent *event) override
{
switch (event->type()) {
case QEvent::HoverEnter:
@@ -1014,14 +948,14 @@ void tst_QGraphicsProxyWidget::hoverEnterLeaveEvent()
QVERIFY(QTest::qWaitForWindowActive(&view));
SubQGraphicsProxyWidget *proxy = new SubQGraphicsProxyWidget;
- QScopedPointer<EventLogger> widgetGuard(new EventLogger);
- EventLogger *widget = widgetGuard.data();
+ std::unique_ptr<EventLogger> widgetGuard(new EventLogger);
+ EventLogger *widget = widgetGuard.get();
widget->resize(50, 50);
widget->setAttribute(Qt::WA_Hover, hoverEnabled);
widget->setMouseTracking(true);
view.resize(100, 100);
if (hasWidget)
- proxy->setWidget(widgetGuard.take());
+ proxy->setWidget(widgetGuard.release());
proxy->setPos(50, 0);
QSignalSpy sceneChangedSpy(&scene, &QGraphicsScene::changed);
scene.addItem(proxy);
@@ -1048,75 +982,6 @@ void tst_QGraphicsProxyWidget::hoverEnterLeaveEvent()
QTRY_COMPARE(widget->hoverLeave, (hasWidget && hoverEnabled) ? 1 : 0);
}
-void tst_QGraphicsProxyWidget::hoverMoveEvent_data()
-{
- QTest::addColumn<bool>("hasWidget");
- QTest::addColumn<bool>("hoverEnabled");
- QTest::addColumn<bool>("mouseTracking");
- QTest::addColumn<bool>("mouseDown");
- for (int i = 0; i < 2; ++i) {
- for (int j = 0; j < 2; ++j) {
- for (int k = 0; k < 2; ++k) {
- for (int l = 0; l < 2; ++l) {
- bool hasWidget = (i == 0);
- bool hoverEnabled = (j == 0);
- bool mouseTracking = (k == 0);
- bool mouseDown = (l == 0);
- QByteArray name = QByteArrayLiteral("hasWidget:") + (hasWidget ? '1' : '0') + ", hover:"
- + (hoverEnabled ? '1' : '0') + ", mouseTracking:"
- + (mouseTracking ? '1' : '0') + ", mouseDown: " + (mouseDown ? '1' : '0');
- QTest::newRow(name.constData()) << hasWidget << hoverEnabled << mouseTracking << mouseDown;
- }
- }
- }
- }
-}
-
-// protected void hoverMoveEvent(QGraphicsSceneHoverEvent* event)
-void tst_QGraphicsProxyWidget::hoverMoveEvent()
-{
- QFETCH(bool, hasWidget);
- QFETCH(bool, hoverEnabled);
- QFETCH(bool, mouseTracking);
- QFETCH(bool, mouseDown);
-
- QSKIP("Ambiguous test...");
-
- // proxy should translate the move events to what the widget would expect
-
- QGraphicsScene scene;
- QGraphicsView view(&scene);
- view.show();
-
- SubQGraphicsProxyWidget *proxy = new SubQGraphicsProxyWidget;
- proxy->setFlag(QGraphicsItem::ItemIsFocusable, true); // ### remove me!!!
- EventLogger *widget = new EventLogger;
- widget->resize(50, 50);
- widget->setAttribute(Qt::WA_Hover, hoverEnabled);
- if (mouseTracking)
- widget->setMouseTracking(true);
- view.resize(100, 100);
- if (hasWidget)
- proxy->setWidget(widget);
- proxy->setPos(50, 0);
- scene.addItem(proxy);
-
- // in
- QTest::mouseMove(&view, QPoint(50, 50));
- QTest::qWait(12);
-
- if (mouseDown)
- QTest::mousePress(view.viewport(), Qt::LeftButton);
-
- // move a little bit
- QTest::mouseMove(&view, QPoint(60, 60));
- QTRY_COMPARE(widget->hoverEnter, (hasWidget && hoverEnabled) ? 1 : 0);
- QCOMPARE(widget->moveCount, (hasWidget && mouseTracking) || (hasWidget && mouseDown) ? 1 : 0);
-
- if (!hasWidget)
- delete widget;
-}
-
void tst_QGraphicsProxyWidget::keyPressEvent_data()
{
QTest::addColumn<bool>("hasWidget");
@@ -1140,23 +1005,21 @@ void tst_QGraphicsProxyWidget::keyPressEvent()
SubQGraphicsProxyWidget *proxy = new SubQGraphicsProxyWidget;
proxy->setFlag(QGraphicsItem::ItemIsFocusable, true); // ### remove me!!!
- QLineEdit *widget = new QLineEdit;
+ std::unique_ptr<QLineEdit> widgetGuard(new QLineEdit);
+ QLineEdit *widget = widgetGuard.get();
widget->resize(50, 50);
view.resize(100, 100);
- if (hasWidget) {
- proxy->setWidget(widget);
- proxy->show();
- }
- proxy->setPos(50, 0);
+ if (hasWidget)
+ proxy->setWidget(widgetGuard.release());
+
scene.addItem(proxy);
+ proxy->show();
+ proxy->setPos(50, 0);
proxy->setFocus();
QTest::keyPress(view.viewport(), 'x');
QTRY_COMPARE(widget->text(), hasWidget ? QString("x") : QString());
-
- if (!hasWidget)
- delete widget;
}
void tst_QGraphicsProxyWidget::keyReleaseEvent_data()
@@ -1181,12 +1044,12 @@ void tst_QGraphicsProxyWidget::keyReleaseEvent()
SubQGraphicsProxyWidget *proxy = new SubQGraphicsProxyWidget;
proxy->setFlag(QGraphicsItem::ItemIsFocusable, true); // ### remove me!!!
- QPushButton *widget = new QPushButton;
- QSignalSpy spy(widget, SIGNAL(clicked()));
- widget->resize(50, 50);
+ std::unique_ptr<QPushButton> widgetGuard(new QPushButton);
+ QSignalSpy spy(widgetGuard.get(), SIGNAL(clicked()));
+ widgetGuard->resize(50, 50);
view.resize(100, 100);
if (hasWidget) {
- proxy->setWidget(widget);
+ proxy->setWidget(widgetGuard.release());
proxy->show();
}
proxy->setPos(50, 0);
@@ -1196,57 +1059,42 @@ void tst_QGraphicsProxyWidget::keyReleaseEvent()
QTest::keyPress(view.viewport(), Qt::Key_Space);
QTRY_COMPARE(spy.count(), 0);
QTest::keyRelease(view.viewport(), Qt::Key_Space);
- QTRY_COMPARE(spy.count(), (hasWidget) ? 1 : 0);
-
- if (!hasWidget)
- delete widget;
-}
-
-void tst_QGraphicsProxyWidget::mouseDoubleClickEvent_data()
-{
- QTest::addColumn<bool>("hasWidget");
- QTest::newRow("widget") << true;
- QTest::newRow("no widget") << false;
+ QTRY_COMPARE(spy.count(), hasWidget ? 1 : 0);
}
// protected void mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event)
void tst_QGraphicsProxyWidget::mouseDoubleClickEvent()
{
- QFETCH(bool, hasWidget);
-
QGraphicsScene scene;
QGraphicsView view(&scene);
- view.show();
-
- QApplication::setActiveWindow(&view);
- QVERIFY(QTest::qWaitForWindowActive(&view));
- QCOMPARE(QApplication::activeWindow(), (QWidget*)&view);
SubQGraphicsProxyWidget *proxy = new SubQGraphicsProxyWidget;
proxy->setFlag(QGraphicsItem::ItemIsFocusable, true); // ### remove me!!!
QLineEdit *widget = new QLineEdit;
widget->setText("foo");
widget->resize(50, 50);
- view.resize(100, 100);
- if (hasWidget)
- proxy->setWidget(widget);
+ proxy->setWidget(widget);
+
proxy->setPos(50, 0);
QSignalSpy sceneChangedSpy(&scene, &QGraphicsScene::changed);
scene.addItem(proxy);
proxy->setFocus();
+ view.resize(100, 100);
+ view.show();
+
+ QApplication::setActiveWindow(&view);
+ QVERIFY(QTest::qWaitForWindowActive(&view));
+ QCOMPARE(QApplication::activeWindow(), (QWidget*)&view);
// wait for scene to be updated before doing any coordinate mappings on it
QTRY_VERIFY(sceneChangedSpy.count() > 0);
QPoint pointInLineEdit = view.mapFromScene(proxy->mapToScene(15, proxy->boundingRect().center().y()));
- QTest::mousePress(view.viewport(), Qt::LeftButton, 0, pointInLineEdit);
- QTest::mouseRelease(view.viewport(), Qt::LeftButton, 0, pointInLineEdit);
- QTest::mouseDClick(view.viewport(), Qt::LeftButton, 0, pointInLineEdit);
+ QTest::mousePress(view.viewport(), Qt::LeftButton, {}, pointInLineEdit);
+ QTest::mouseRelease(view.viewport(), Qt::LeftButton, {}, pointInLineEdit);
+ QTest::mouseDClick(view.viewport(), Qt::LeftButton, {}, pointInLineEdit);
- QTRY_COMPARE(widget->selectedText(), hasWidget ? QString("foo") : QString());
-
- if (!hasWidget)
- delete widget;
+ QTRY_COMPARE(widget->selectedText(), QString("foo"));
}
void tst_QGraphicsProxyWidget::mousePressReleaseEvent_data()
@@ -1269,11 +1117,11 @@ void tst_QGraphicsProxyWidget::mousePressReleaseEvent()
SubQGraphicsProxyWidget *proxy = new SubQGraphicsProxyWidget;
proxy->setFlag(QGraphicsItem::ItemIsFocusable, true); // ### remove me!!!
- QPushButton *widget = new QPushButton;
- QSignalSpy spy(widget, SIGNAL(clicked()));
- widget->resize(50, 50);
+ std::unique_ptr<QPushButton> widgetGuard(new QPushButton);
+ QSignalSpy spy(widgetGuard.get(), SIGNAL(clicked()));
+ widgetGuard->resize(50, 50);
if (hasWidget)
- proxy->setWidget(widget);
+ proxy->setWidget(widgetGuard.release());
proxy->setPos(50, 0);
QSignalSpy sceneChangedSpy(&scene, &QGraphicsScene::changed);
scene.addItem(proxy);
@@ -1283,13 +1131,10 @@ void tst_QGraphicsProxyWidget::mousePressReleaseEvent()
QTRY_VERIFY(sceneChangedSpy.count() > 0);
QPoint buttonCenter = view.mapFromScene(proxy->mapToScene(proxy->boundingRect().center()));
- QTest::mousePress(view.viewport(), Qt::LeftButton, 0, buttonCenter);
+ QTest::mousePress(view.viewport(), Qt::LeftButton, {}, buttonCenter);
QTRY_COMPARE(spy.count(), 0);
- QTest::mouseRelease(view.viewport(), Qt::LeftButton, 0, buttonCenter);
- QTRY_COMPARE(spy.count(), (hasWidget) ? 1 : 0);
-
- if (!hasWidget)
- delete widget;
+ QTest::mouseRelease(view.viewport(), Qt::LeftButton, {}, buttonCenter);
+ QTRY_COMPARE(spy.count(), hasWidget ? 1 : 0);
}
void tst_QGraphicsProxyWidget::resizeEvent_data()
@@ -1305,19 +1150,17 @@ void tst_QGraphicsProxyWidget::resizeEvent()
QFETCH(bool, hasWidget);
SubQGraphicsProxyWidget proxy;
- QWidget *widget = new QWidget;
+
if (hasWidget)
- proxy.setWidget(widget);
+ proxy.setWidget(new QWidget);
QSize newSize(100, 100);
QGraphicsSceneResizeEvent event;
event.setOldSize(QSize(10, 10));
event.setNewSize(newSize);
- proxy.call_resizeEvent(&event);
+ proxy.resizeEvent(&event);
if (hasWidget)
- QCOMPARE(widget->size(), newSize);
- if (!hasWidget)
- delete widget;
+ QCOMPARE(proxy.widget()->size(), newSize);
}
void tst_QGraphicsProxyWidget::paintEvent()
@@ -1376,48 +1219,13 @@ void tst_QGraphicsProxyWidget::wheelEvent()
}
#endif // QT_CONFIG(wheelevent)
-Q_DECLARE_METATYPE(Qt::SizeHint)
-void tst_QGraphicsProxyWidget::sizeHint_data()
-{
- QTest::addColumn<Qt::SizeHint>("which");
- QTest::addColumn<QSizeF>("constraint");
- QTest::addColumn<QSizeF>("sizeHint");
- QTest::addColumn<bool>("hasWidget");
-
- for (int i = 0; i < 2; ++i) {
- bool hasWidget = (i == 0);
- // ### What should these do?
- QTest::newRow("min") << Qt::MinimumSize << QSizeF() << QSizeF() << hasWidget;
- QTest::newRow("pre") << Qt::PreferredSize << QSizeF() << QSizeF() << hasWidget;
- QTest::newRow("max") << Qt::MaximumSize << QSizeF() << QSizeF() << hasWidget;
- QTest::newRow("mindes") << Qt::MinimumDescent << QSizeF() << QSizeF() << hasWidget;
- QTest::newRow("nsize") << Qt::NSizeHints << QSizeF() << QSizeF() << hasWidget;
- }
-}
-
-// protected QSizeF sizeHint(Qt::SizeHint which, QSizeF const& constraint = QSizeF()) const
-void tst_QGraphicsProxyWidget::sizeHint()
-{
- QFETCH(Qt::SizeHint, which);
- QFETCH(QSizeF, constraint);
- QFETCH(QSizeF, sizeHint);
- QFETCH(bool, hasWidget);
- QSKIP("Broken test");
- SubQGraphicsProxyWidget proxy;
- QWidget *widget = new QWidget;
- if (hasWidget)
- proxy.setWidget(widget);
- QCOMPARE(proxy.call_sizeHint(which, constraint), sizeHint);
- if (!hasWidget)
- delete widget;
-}
-
void tst_QGraphicsProxyWidget::sizePolicy()
{
for (int p = 0; p < 2; ++p) {
bool hasWidget = (p == 0);
- SubQGraphicsProxyWidget proxy;
- QWidget *widget = new QWidget;
+ QGraphicsProxyWidget proxy;
+ std::unique_ptr<QWidget> widgetGuard(new QWidget);
+ QWidget *widget = widgetGuard.get();
QSizePolicy proxyPol(QSizePolicy::Maximum, QSizePolicy::Expanding);
proxy.setSizePolicy(proxyPol);
QSizePolicy widgetPol(QSizePolicy::Fixed, QSizePolicy::Minimum);
@@ -1426,7 +1234,7 @@ void tst_QGraphicsProxyWidget::sizePolicy()
QCOMPARE(proxy.sizePolicy(), proxyPol);
QCOMPARE(widget->sizePolicy(), widgetPol);
if (hasWidget) {
- proxy.setWidget(widget);
+ proxy.setWidget(widgetGuard.release());
QCOMPARE(proxy.sizePolicy(), widgetPol);
} else {
QCOMPARE(proxy.sizePolicy(), proxyPol);
@@ -1439,42 +1247,39 @@ void tst_QGraphicsProxyWidget::sizePolicy()
QCOMPARE(proxy.sizePolicy(), proxyPol);
else
QCOMPARE(proxy.sizePolicy(), widgetPol);
-
- if (!hasWidget)
- delete widget;
}
}
void tst_QGraphicsProxyWidget::minimumSize()
{
- SubQGraphicsProxyWidget proxy;
- QWidget *widget = new QWidget;
+ QGraphicsProxyWidget proxy;
+ std::unique_ptr<QWidget> widgetGuard(new QWidget);
QSize minSize(50, 50);
- widget->setMinimumSize(minSize);
+ widgetGuard->setMinimumSize(minSize);
proxy.resize(30, 30);
- widget->resize(30,30);
+ widgetGuard->resize(30,30);
QCOMPARE(proxy.size(), QSizeF(30, 30));
- proxy.setWidget(widget);
+ proxy.setWidget(widgetGuard.release());
QCOMPARE(proxy.size().toSize(), minSize);
QCOMPARE(proxy.minimumSize().toSize(), minSize);
- widget->setMinimumSize(70, 70);
+ proxy.widget()->setMinimumSize(70, 70);
QCOMPARE(proxy.minimumSize(), QSizeF(70, 70));
QCOMPARE(proxy.size(), QSizeF(70, 70));
}
void tst_QGraphicsProxyWidget::maximumSize()
{
- SubQGraphicsProxyWidget proxy;
- QWidget *widget = new QWidget;
+ QGraphicsProxyWidget proxy;
+ std::unique_ptr<QWidget> widgetGuard(new QWidget);
QSize maxSize(150, 150);
- widget->setMaximumSize(maxSize);
+ widgetGuard->setMaximumSize(maxSize);
proxy.resize(200, 200);
- widget->resize(200,200);
+ widgetGuard->resize(200,200);
QCOMPARE(proxy.size(), QSizeF(200, 200));
- proxy.setWidget(widget);
+ proxy.setWidget(widgetGuard.release());
QCOMPARE(proxy.size().toSize(), maxSize);
QCOMPARE(proxy.maximumSize().toSize(), maxSize);
- widget->setMaximumSize(70, 70);
+ proxy.widget()->setMaximumSize(70, 70);
QCOMPARE(proxy.maximumSize(), QSizeF(70, 70));
QCOMPARE(proxy.size(), QSizeF(70, 70));
}
@@ -1488,7 +1293,7 @@ public:
QRegion paintEventRegion;
int npaints;
protected:
- void paintEvent(QPaintEvent *event)
+ void paintEvent(QPaintEvent *event) override
{
++npaints;
paintEventRegion += event->region();
@@ -1515,7 +1320,7 @@ public slots:
}
protected:
- void paintEvent(QPaintEvent *event)
+ void paintEvent(QPaintEvent *event) override
{
++npaints;
paintEventRegion += event->region();
@@ -2500,28 +2305,29 @@ void tst_QGraphicsProxyWidget::setFocus_complexTwoWidgets()
void tst_QGraphicsProxyWidget::popup_basic()
{
- QScopedPointer<QComboBox> box(new QComboBox);
+ std::unique_ptr<QComboBox> boxGuard(new QComboBox);
QStyleOptionComboBox opt;
- opt.initFrom(box.data());
- opt.editable = box->isEditable();
- if (box->style()->styleHint(QStyle::SH_ComboBox_Popup, &opt))
+ opt.initFrom(boxGuard.get());
+ opt.editable = boxGuard->isEditable();
+ if (boxGuard->style()->styleHint(QStyle::SH_ComboBox_Popup, &opt))
QSKIP("Does not work due to SH_Combobox_Popup");
// ProxyWidget should automatically create proxy's when the widget creates a child
- QGraphicsScene *scene = new QGraphicsScene;
- QGraphicsView view(scene);
+ QGraphicsScene scene;
+ QGraphicsView view(&scene);
view.setAlignment(Qt::AlignLeft | Qt::AlignTop);
view.setGeometry(0, 100, 480, 500);
view.show();
- SubQGraphicsProxyWidget *proxy = new SubQGraphicsProxyWidget;
+ QComboBox *box = boxGuard.get();
+ QGraphicsProxyWidget *proxy = new QGraphicsProxyWidget;
box->setGeometry(0, 0, 320, 40);
box->addItems(QStringList() << "monday" << "tuesday" << "wednesday"
<< "thursday" << "saturday" << "sunday");
QCOMPARE(proxy->childItems().count(), 0);
- proxy->setWidget(box.data());
+ proxy->setWidget(boxGuard.release());
proxy->show();
- scene->addItem(proxy);
+ scene.addItem(proxy);
QCOMPARE(box->pos(), QPoint());
QCOMPARE(proxy->pos(), QPointF());
@@ -2530,7 +2336,7 @@ void tst_QGraphicsProxyWidget::popup_basic()
QTest::qWait(125);
QApplication::processEvents();
- QTest::mousePress(view.viewport(), Qt::LeftButton, 0,
+ QTest::mousePress(view.viewport(), Qt::LeftButton, {},
view.mapFromScene(proxy->mapToScene(proxy->boundingRect().center())));
QTRY_COMPARE(box->pos(), QPoint());
@@ -2539,7 +2345,7 @@ void tst_QGraphicsProxyWidget::popup_basic()
QGraphicsProxyWidget *child = (QGraphicsProxyWidget*)(proxy->childItems())[0];
QVERIFY(child->isWidget());
QVERIFY(child->widget());
- QCOMPARE(child->widget()->parent(), static_cast<QObject*>(box.data()));
+ QCOMPARE(child->widget()->parent(), box);
QTRY_COMPARE(proxy->pos(), QPointF(box->pos()));
QCOMPARE(child->x(), qreal(box->x()));
@@ -2610,7 +2416,7 @@ void tst_QGraphicsProxyWidget::changingCursor_basic()
view.show();
QVERIFY(QTest::qWaitForWindowActive(&view));
- SubQGraphicsProxyWidget *proxy = new SubQGraphicsProxyWidget;
+ QGraphicsProxyWidget *proxy = new QGraphicsProxyWidget;
QLineEdit *widget = new QLineEdit;
proxy->setWidget(widget);
QSignalSpy sceneChangedSpy(&scene, &QGraphicsScene::changed);
@@ -2733,56 +2539,46 @@ void tst_QGraphicsProxyWidget::childPos()
QGraphicsScene scene;
- QComboBox *box = new QComboBox;
- box->addItem("Item 1");
- box->addItem("Item 2");
- box->addItem("Item 3");
- box->addItem("Item 4");
+ QComboBox box;
+ box.addItem("Item 1");
+ box.addItem("Item 2");
+ box.addItem("Item 3");
+ box.addItem("Item 4");
if (moveCombo)
- box->move(comboPos);
+ box.move(comboPos);
- QGraphicsProxyWidget *proxy = scene.addWidget(box);
+ QGraphicsProxyWidget *proxy = scene.addWidget(&box);
proxy->show();
QVERIFY(proxy->isVisible());
- QVERIFY(box->isVisible());
+ QVERIFY(box.isVisible());
if (!moveCombo)
proxy->setPos(proxyPos);
QCOMPARE(proxy->pos(), proxyPos);
- QCOMPARE(box->pos(), comboPos);
+ QCOMPARE(box.pos(), comboPos);
for (int i = 0; i < 2; ++i) {
- box->showPopup();
- QApplication::processEvents();
- QApplication::processEvents();
-
- QWidget *menu = nullptr;
- foreach (QObject *child, box->children()) {
- if ((menu = qobject_cast<QWidget *>(child)))
- break;
- }
+ box.showPopup();
+ QWidget *menu = box.findChild<QWidget *>();
QVERIFY(menu);
- QVERIFY(menu->isVisible());
+ QTRY_VERIFY(menu->isVisible());
QVERIFY(menu->testAttribute(Qt::WA_DontShowOnScreen));
QCOMPARE(proxy->childItems().size(), 1);
- QGraphicsProxyWidget *proxyChild = 0;
- foreach (QGraphicsItem *child, proxy->childItems()) {
- if (child->isWidget() && (proxyChild = qobject_cast<QGraphicsProxyWidget *>(static_cast<QGraphicsWidget *>(child))))
- break;
- }
+ QGraphicsProxyWidget *proxyChild = qobject_cast<QGraphicsProxyWidget *>(
+ static_cast<QGraphicsWidget *>(proxy->childItems().first()));
QVERIFY(proxyChild);
QVERIFY(proxyChild->isVisible());
qreal expectedXPosition = 0.0;
-#if defined(Q_OS_MAC) && !defined(QT_NO_STYLE_MAC)
+
// The Mac style wants the popup to show up at QPoint(4 - 11, 1).
// See QMacStyle::subControlRect SC_ComboBoxListBoxPopup.
if (QApplication::style()->inherits("QMacStyle"))
expectedXPosition = qreal(4 - 11);
-#endif
- QCOMPARE(proxyChild->pos().x(), expectedXPosition);
+
+ QTRY_COMPARE(proxyChild->pos().x(), expectedXPosition);
menu->hide();
}
}
@@ -2830,18 +2626,20 @@ void tst_QGraphicsProxyWidget::windowOpacity()
QVERIFY(widget->isVisible());
widget->setWindowOpacity(0.5);
- QApplication::processEvents();
// Make sure setWindowOpacity triggers an update on the scene,
// and not on the widget or the proxy itself. The entire proxy needs an update
// in case it has a window decoration. Update: QGraphicsItem::CacheMode is
// disabled on platforms without alpha channel support in QPixmap (e.g.,
- // X11 without XRender).
+ // X11 without XRender). On macOS, we always get a paint event.
int paints = 0;
+#ifdef Q_OS_MACOS
+ paints = 1;
+#endif
QTRY_COMPARE(eventSpy.counts[QEvent::UpdateRequest], 0);
QTRY_COMPARE(eventSpy.counts[QEvent::Paint], paints);
- QCOMPARE(signalSpy.count(), 1);
+ QTRY_COMPARE(signalSpy.count(), 1);
const QList<QVariant> arguments = signalSpy.takeFirst();
const QList<QRectF> updateRects = qvariant_cast<QList<QRectF> >(arguments.at(0));
QCOMPARE(updateRects.size(), 1);
@@ -2922,6 +2720,8 @@ void tst_QGraphicsProxyWidget::palettePropagation()
QCOMPARE(editSpy.counts[QEvent::PaletteChange], 3);
QCOMPARE(proxySpy.counts[QEvent::PaletteChange], 1);
QVERIFY(!edit->testAttribute(Qt::WA_SetPalette));
+ if (edit->palette() != palette)
+ QEXPECT_FAIL("", "Test case fails unless run alone", Abort);
QCOMPARE(edit->palette(), palette);
QCOMPARE(edit->palette(), proxy.palette());
QCOMPARE(edit->palette().color(QPalette::Text), QColor(Qt::red));
@@ -3112,10 +2912,10 @@ void tst_QGraphicsProxyWidget::createProxyForChildWidget()
QSignalSpy spy(checkbox, SIGNAL(clicked()));
- QTest::mousePress(view.viewport(), Qt::LeftButton, 0,
+ QTest::mousePress(view.viewport(), Qt::LeftButton, {},
view.mapFromScene(checkboxProxy->mapToScene(QPointF(8,8))));
QTRY_COMPARE(spy.count(), 0);
- QTest::mouseRelease(view.viewport(), Qt::LeftButton, 0,
+ QTest::mouseRelease(view.viewport(), Qt::LeftButton, {},
view.mapFromScene(checkboxProxy->mapToScene(QPointF(8,8))));
QTRY_COMPARE(spy.count(), 1);
@@ -3145,7 +2945,7 @@ public:
bool embeddedPopup;
bool gotContextMenuEvent;
protected:
- bool event(QEvent *event)
+ bool event(QEvent *event) override
{
if (event->type() == QEvent::ContextMenu) {
if (!m_timer) {
@@ -3157,7 +2957,7 @@ protected:
}
return QWidget::event(event);
}
- void contextMenuEvent(QContextMenuEvent *)
+ void contextMenuEvent(QContextMenuEvent *) override
{
gotContextMenuEvent = true;
}
@@ -3284,15 +3084,17 @@ void tst_QGraphicsProxyWidget::bypassGraphicsProxyWidget()
{
QFETCH(bool, bypass);
- QWidget *widget = new QWidget;
+ std::unique_ptr<QWidget> widgetGuard(new QWidget);
+ QWidget *widget = widgetGuard.get();
widget->resize(100, 100);
QGraphicsScene scene;
QGraphicsView view(&scene);
view.show();
+ QApplication::setActiveWindow(&view);
QVERIFY(QTest::qWaitForWindowActive(&view));
- QGraphicsProxyWidget *proxy = scene.addWidget(widget);
+ QGraphicsProxyWidget *proxy = scene.addWidget(widgetGuard.release());
QCOMPARE(proxy->widget(), widget);
QVERIFY(proxy->childItems().isEmpty());
@@ -3312,8 +3114,6 @@ void tst_QGraphicsProxyWidget::bypassGraphicsProxyWidget()
dialog->hide();
QApplication::processEvents();
- delete dialog;
- delete widget;
}
static void makeDndEvent(QGraphicsSceneDragDropEvent *event, QGraphicsView *view, const QPointF &pos)
@@ -3321,7 +3121,7 @@ static void makeDndEvent(QGraphicsSceneDragDropEvent *event, QGraphicsView *view
event->setScenePos(pos);
event->setScreenPos(view->mapToGlobal(view->mapFromScene(pos)));
event->setButtons(Qt::LeftButton);
- event->setModifiers(0);
+ event->setModifiers({});
event->setPossibleActions(Qt::CopyAction);
event->setProposedAction(Qt::CopyAction);
event->setDropAction(Qt::CopyAction);
@@ -3483,7 +3283,7 @@ void tst_QGraphicsProxyWidget::updateAndDelete()
class InputMethod_LineEdit : public QLineEdit
{
- bool event(QEvent *e)
+ bool event(QEvent *e) override
{
if (e->type() == QEvent::InputMethod)
++inputMethodEvents;
@@ -3568,7 +3368,7 @@ void tst_QGraphicsProxyWidget::clickFocus()
QPointF lineEditCenter = proxy->mapToScene(proxy->boundingRect().center());
// Spontaneous mouse click sets focus on a clickable widget.
for (int retry = 0; retry < 50 && !proxy->hasFocus(); retry++)
- QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(lineEditCenter));
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, {}, view.mapFromScene(lineEditCenter));
QVERIFY(proxy->hasFocus());
QVERIFY(proxy->widget()->hasFocus());
QCOMPARE(proxySpy.counts[QEvent::FocusIn], 1);
@@ -3626,7 +3426,7 @@ void tst_QGraphicsProxyWidget::clickFocus()
// Spontaneous click on non-clickable widget does not give focus.
proxy->widget()->setFocusPolicy(Qt::NoFocus);
- QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(lineEditCenter));
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, {}, view.mapFromScene(lineEditCenter));
QVERIFY(!proxy->hasFocus());
QVERIFY(!proxy->widget()->hasFocus());
@@ -3635,8 +3435,8 @@ void tst_QGraphicsProxyWidget::clickFocus()
scene.setFocusItem(0);
QVERIFY(!proxy->hasFocus());
QVERIFY(!proxy->widget()->hasFocus());
- QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(lineEditCenter));
- QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(lineEditCenter));
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, {}, view.mapFromScene(lineEditCenter));
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, {}, view.mapFromScene(lineEditCenter));
QVERIFY(proxy->hasFocus());
QVERIFY(proxy->widget()->hasFocus());
QCOMPARE(widgetSpy.counts[QEvent::FocusIn], 1);
@@ -3647,7 +3447,7 @@ void tst_QGraphicsProxyWidget::clickFocus()
void tst_QGraphicsProxyWidget::windowFrameMargins()
{
// Make sure the top margin is non-zero when passing Qt::Window.
- QGraphicsProxyWidget *proxy = new QGraphicsProxyWidget(0, Qt::Window);
+ QGraphicsProxyWidget *proxy = new QGraphicsProxyWidget(nullptr, Qt::Window);
qreal left, top, right, bottom;
proxy->getWindowFrameMargins(&left, &top, &right, &bottom);
@@ -3667,67 +3467,51 @@ void tst_QGraphicsProxyWidget::windowFrameMargins()
QVERIFY(top > 0);
}
-class HoverButton : public QPushButton
+void tst_QGraphicsProxyWidget::QTBUG_6986_sendMouseEventToAlienWidget()
{
-public:
- HoverButton(QWidget *parent = nullptr) : QPushButton(parent), hoverLeaveReceived(false)
- {}
-
- bool hoverLeaveReceived;
-
- bool event(QEvent* e)
+ struct HoverButton : public QPushButton
{
- if(QEvent::HoverLeave == e->type())
- hoverLeaveReceived = true;
- return QPushButton::event(e);
- }
-};
+ using QPushButton::QPushButton;
+ bool hoverLeaveReceived = false;
-class Scene : public QGraphicsScene
-{
-Q_OBJECT
-public:
- Scene() {
- QWidget *background = new QWidget;
- background->setGeometry(0, 0, 500, 500);
- hoverButton = new HoverButton;
- hoverButton->setParent(background);
- hoverButton->setText("Second button");
- hoverButton->setGeometry(10, 10, 200, 50);
- addWidget(background);
-
- QPushButton *hideButton = new QPushButton("I'm a button with a very very long text");
- hideButton->setGeometry(10, 10, 400, 50);
- topButton = addWidget(hideButton);
- connect(hideButton, &QPushButton::clicked, this, [&]() { topButton->hide(); });
- topButton->setFocus();
- }
-
- QGraphicsProxyWidget *topButton;
- HoverButton *hoverButton;
-};
+ bool event(QEvent* e) override
+ {
+ if (QEvent::HoverLeave == e->type())
+ hoverLeaveReceived = true;
+ return QPushButton::event(e);
+ }
+ };
-void tst_QGraphicsProxyWidget::QTBUG_6986_sendMouseEventToAlienWidget()
-{
- if (QGuiApplication::platformName() == QLatin1String("cocoa")) {
- // The "Second button" does not receive QEvent::HoverLeave
- QSKIP("This test fails only on Cocoa. Investigate why. See QTBUG-69219");
- }
+ QGraphicsScene scene;
+ QWidget *background = new QWidget;
+ background->setGeometry(0, 0, 500, 500);
+ HoverButton *hoverButton = new HoverButton(background);
+ hoverButton->setText("Second button");
+ hoverButton->setGeometry(10, 10, 200, 50);
+ scene.addWidget(background);
+
+ QPushButton *hideButton = new QPushButton("I'm a button with a very very long text");
+ hideButton->setGeometry(10, 10, 400, 50);
+ QGraphicsProxyWidget *topButton = scene.addWidget(hideButton);
+ connect(hideButton, &QPushButton::clicked, &scene, [&]() { topButton->hide(); });
+ topButton->setFocus();
- QGraphicsView view;
- Scene scene;
- view.setScene(&scene);
+ QGraphicsView view(&scene);
view.resize(600, 600);
QApplication::setActiveWindow(&view);
view.show();
QVERIFY(QTest::qWaitForWindowActive(&view));
- QPoint topButtonTopLeftCorner = view.mapFromScene(scene.topButton->scenePos());
- QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, topButtonTopLeftCorner);
+ QPoint topButtonTopLeftCorner = view.mapFromScene(topButton->scenePos());
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, {}, topButtonTopLeftCorner);
// move to the bottom right corner (buttons are placed in the top left corner)
- QCOMPARE(scene.hoverButton->hoverLeaveReceived, false);
+ QCOMPARE(hoverButton->hoverLeaveReceived, false);
QTest::mouseMove(view.viewport(), view.viewport()->rect().bottomRight());
- QTRY_COMPARE(scene.hoverButton->hoverLeaveReceived, true);
+ if (QGuiApplication::platformName() == QLatin1String("cocoa")) {
+ // The "Second button" does not receive QEvent::HoverLeave
+ QEXPECT_FAIL("", "This test fails only on Cocoa. Investigate why. See QTBUG-69219", Continue);
+ }
+ QTRY_COMPARE(hoverButton->hoverLeaveReceived, true);
}
static QByteArray msgPointMismatch(const QPoint &actual, const QPoint &expected)
@@ -3832,7 +3616,7 @@ class TouchWidget : public QWidget
public:
TouchWidget(QWidget *parent = nullptr) : QWidget(parent) {}
- bool event(QEvent *event)
+ bool event(QEvent *event) override
{
switch (event->type()) {
case QEvent::TouchBegin:
@@ -3840,7 +3624,6 @@ public:
case QEvent::TouchEnd:
event->accept();
return true;
- break;
default:
break;
}
@@ -3852,45 +3635,39 @@ public:
// QTBUG_45737
void tst_QGraphicsProxyWidget::forwardTouchEvent()
{
- QGraphicsScene *scene = new QGraphicsScene;
+ QSKIP("Test is currently broken");
- TouchWidget *widget = new TouchWidget;
+ QGraphicsScene scene;
+ TouchWidget *widget = new TouchWidget;
widget->setAttribute(Qt::WA_AcceptTouchEvents);
- QGraphicsProxyWidget *proxy = new QGraphicsProxyWidget;
-
+ QGraphicsProxyWidget *proxy = scene.addWidget(widget);
proxy->setAcceptTouchEvents(true);
- proxy->setWidget(widget);
-
- scene->addItem(proxy);
-
- QGraphicsView *view = new QGraphicsView(scene);
- view->show();
+ QGraphicsView view(&scene);
+ view.show();
+ QVERIFY(QTest::qWaitForWindowActive(&view));
EventSpy eventSpy(widget);
QPointingDevice *device = QTest::createTouchDevice();
+ QVERIFY(device);
QCOMPARE(eventSpy.counts[QEvent::TouchBegin], 0);
QCOMPARE(eventSpy.counts[QEvent::TouchUpdate], 0);
QCOMPARE(eventSpy.counts[QEvent::TouchEnd], 0);
- QTest::touchEvent(view, device).press(0, QPoint(10, 10), view);
- QTest::touchEvent(view, device).move(0, QPoint(15, 15), view);
- QTest::touchEvent(view, device).move(0, QPoint(16, 16), view);
- QTest::touchEvent(view, device).release(0, QPoint(15, 15), view);
+ QTest::touchEvent(&view, device).press(0, QPoint(10, 10), &view);
+ QTest::touchEvent(&view, device).move(0, QPoint(15, 15), &view);
+ QTest::touchEvent(&view, device).move(0, QPoint(16, 16), &view);
+ QTest::touchEvent(&view, device).release(0, QPoint(15, 15), &view);
QApplication::processEvents();
QCOMPARE(eventSpy.counts[QEvent::TouchBegin], 1);
QCOMPARE(eventSpy.counts[QEvent::TouchUpdate], 2);
QCOMPARE(eventSpy.counts[QEvent::TouchEnd], 1);
-
- delete view;
- delete proxy;
- delete scene;
}
QTEST_MAIN(tst_QGraphicsProxyWidget)
diff --git a/tests/auto/widgets/graphicsview/qgraphicswidget/BLACKLIST b/tests/auto/widgets/graphicsview/qgraphicswidget/BLACKLIST
new file mode 100644
index 0000000000..333d9c2bfd
--- /dev/null
+++ b/tests/auto/widgets/graphicsview/qgraphicswidget/BLACKLIST
@@ -0,0 +1,6 @@
+[initStyleOption]
+macos ci
+android
+b2qt
+[updateFocusChainWhenChildDie]
+b2qt
diff --git a/tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp b/tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp
index c22195fada..45aa0f567b 100644
--- a/tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp
@@ -41,6 +41,7 @@
#include <qcommonstyle.h>
#include <qstylefactory.h>
#include <qscreen.h>
+#include <qsignalspy.h>
typedef QList<QGraphicsItem *> QGraphicsItemList;
@@ -57,7 +58,7 @@ public:
int count() const { return _count; }
protected:
- bool eventFilter(QObject *watched, QEvent *event)
+ bool eventFilter(QObject *watched, QEvent *event) override
{
Q_UNUSED(watched);
if (event->type() == spied)
@@ -151,7 +152,6 @@ private slots:
void polishEvent2();
void autoFillBackground();
void initialShow();
- void initialShow2();
void itemChangeEvents();
void itemSendGeometryPosChangesDeactivated();
void fontPropagatesResolveToChildren();
@@ -178,7 +178,7 @@ public:
: QGraphicsWidget(parent, windowFlags), eventCount(0)
{ }
- void initStyleOption(QStyleOption *option) const
+ void initStyleOption(QStyleOption *option) const override
{ QGraphicsWidget::initStyleOption(option); }
void call_changeEvent(QEvent* event)
@@ -232,7 +232,7 @@ public:
int eventCount;
Qt::LayoutDirection m_painterLayoutDirection;
- void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
+ void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override
{
m_painterLayoutDirection = painter->layoutDirection();
QGraphicsWidget::paint(painter, option, widget);
@@ -244,7 +244,7 @@ public:
}
protected:
- bool event(QEvent *event)
+ bool event(QEvent *event) override
{
eventCount++;
return QGraphicsWidget::event(event);
@@ -271,7 +271,7 @@ public:
}
protected:
- QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const
+ QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const override
{
Q_UNUSED(constraint);
return m_sizes[which];
@@ -518,11 +518,14 @@ void tst_QGraphicsWidget::focusWidget2()
class FocusWatchWidget : public QGraphicsWidget
{
public:
- FocusWatchWidget(QGraphicsItem *parent = nullptr) : QGraphicsWidget(parent) { gotFocusInCount = 0; gotFocusOutCount = 0; }
+ FocusWatchWidget(QGraphicsItem *parent = nullptr)
+ : QGraphicsWidget(parent) { gotFocusInCount = 0; gotFocusOutCount = 0; }
int gotFocusInCount, gotFocusOutCount;
protected:
- void focusInEvent(QFocusEvent *fe) { gotFocusInCount++; QGraphicsWidget::focusInEvent(fe); }
- void focusOutEvent(QFocusEvent *fe) { gotFocusOutCount++; QGraphicsWidget::focusOutEvent(fe); }
+ void focusInEvent(QFocusEvent *fe) override
+ { gotFocusInCount++; QGraphicsWidget::focusInEvent(fe); }
+ void focusOutEvent(QFocusEvent *fe) override
+ { gotFocusOutCount++; QGraphicsWidget::focusOutEvent(fe); }
};
void tst_QGraphicsWidget::focusWidget3()
@@ -1216,8 +1219,6 @@ void tst_QGraphicsWidget::palettePropagation()
// These colors are unlikely to be imposed on the default palette of
// QWidget ;-).
- QColor sysPalText(21, 22, 23);
- QColor sysPalToolTipBase(12, 13, 14);
QColor overridePalText(42, 43, 44);
QColor overridePalToolTipBase(45, 46, 47);
QColor sysPalButton(99, 98, 97);
@@ -1375,6 +1376,8 @@ void tst_QGraphicsWidget::setStyle()
// cleanup
widget.setStyle(0);
+#else
+ QSKIP("This test requires the Fusion style");
#endif
}
@@ -1772,7 +1775,7 @@ void tst_QGraphicsWidget::updateFocusChainWhenChildDie()
QVERIFY(w);
const QPoint center(view.viewport()->width() / 2, view.viewport()->height() / 2);
QTest::mouseMove(view.viewport(), center);
- QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, center);
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, {}, center);
#ifdef Q_OS_MAC
QEXPECT_FAIL("", "QTBUG-23699", Continue);
#endif
@@ -2318,7 +2321,7 @@ public:
int ngrab;
int nungrab;
protected:
- bool sceneEvent(QEvent *event)
+ bool sceneEvent(QEvent *event) override
{
switch (event->type()) {
case QEvent::GrabMouse:
@@ -2333,17 +2336,17 @@ protected:
return QGraphicsRectItem::sceneEvent(event);
}
- void mousePressEvent(QGraphicsSceneMouseEvent *)
+ void mousePressEvent(QGraphicsSceneMouseEvent *) override
{
grabMouse();
++npress;
}
- void mouseReleaseEvent(QGraphicsSceneMouseEvent *)
+ void mouseReleaseEvent(QGraphicsSceneMouseEvent *) override
{
ungrabMouse();
++nrelease;
}
- void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *)
+ void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *) override
{
++ndoubleClick;
}
@@ -2369,7 +2372,7 @@ void tst_QGraphicsWidget::doubleClickAfterExplicitMouseGrab()
{
QGraphicsSceneMouseEvent event(QEvent::GraphicsSceneMouseRelease);
event.setButton(Qt::LeftButton);
- event.setButtons(0);
+ event.setButtons({});
event.ignore();
event.setScenePos(QPointF(50, 50));
qApp->sendEvent(&scene, &event);
@@ -2391,7 +2394,7 @@ void tst_QGraphicsWidget::doubleClickAfterExplicitMouseGrab()
{
QGraphicsSceneMouseEvent event(QEvent::GraphicsSceneMouseRelease);
event.setButton(Qt::LeftButton);
- event.setButtons(0);
+ event.setButtons({});
event.ignore();
event.setScenePos(QPointF(50, 50));
qApp->sendEvent(&scene, &event);
@@ -2538,7 +2541,7 @@ void tst_QGraphicsWidget::windowFlags()
QCOMPARE(widget2.windowFlags(), Qt::WindowFlags(outputFlags));
// Reset flags
- widget2.setWindowFlags(0);
+ widget2.setWindowFlags({});
QVERIFY(!widget2.windowFlags());
// Set flags back again
@@ -2555,7 +2558,7 @@ void tst_QGraphicsWidget::windowFlags()
QCOMPARE(widget4.windowFlags(), Qt::WindowFlags(inputFlags | Qt::FramelessWindowHint));
// Reset flags
- widget4.setWindowFlags(0);
+ widget4.setWindowFlags({});
QVERIFY(!widget4.windowFlags());
// Set custom flags back again
@@ -2565,7 +2568,7 @@ void tst_QGraphicsWidget::windowFlags()
QGraphicsWidget *widget5 = new QGraphicsWidget;
widget5->setWindowFlags(Qt::WindowFlags(inputFlags));
QCOMPARE(widget5->windowFlags(), Qt::WindowFlags(outputFlags));
- QGraphicsWidget window(0, Qt::Window);
+ QGraphicsWidget window(nullptr, Qt::Window);
widget5->setParentItem(&window);
QCOMPARE(widget5->windowFlags(), Qt::WindowFlags(outputFlags));
}
@@ -2591,13 +2594,13 @@ public:
: QGraphicsWidget(parent, wFlags)
{}
- void paintWindowFrame(QPainter * painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
+ void paintWindowFrame(QPainter * painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override
{
QCOMPARE(painter->opacity(), 1.0);
painter->setOpacity(0.0);
QGraphicsWidget::paintWindowFrame(painter, option, widget);
}
- void paint(QPainter * painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
+ void paint(QPainter * painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override
{
QCOMPARE(painter->opacity(), 1.0);
painter->drawRect(0, 0, 100, 100);
@@ -2624,7 +2627,7 @@ public:
m_proxyStyle = proxyStyle;
}
- int pixelMetric(QStyle::PixelMetric metric, const QStyleOption *option = 0, const QWidget *widget = 0) const
+ int pixelMetric(QStyle::PixelMetric metric, const QStyleOption *option = 0, const QWidget *widget = 0) const override
{
return m_proxyStyle->pixelMetric(metric, option, widget);
}
@@ -2676,14 +2679,14 @@ public:
int shortcutEvents;
private:
- bool event(QEvent *event)
+ bool event(QEvent *event) override
{
if (event->type() == QEvent::Shortcut)
shortcutEvents++;
return QGraphicsWidget::event(event);
}
- void paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *)
+ void paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *) override
{
if (hasFocus()) {
painter->setPen(QPen(Qt::black, 0, Qt::DashLine));
@@ -2753,7 +2756,7 @@ public:
QList<QGraphicsItem *> drawnItems;
protected:
void drawItems(QPainter *painter, int numItems, QGraphicsItem *items[],
- const QStyleOptionGraphicsItem options[], QWidget *widget = 0)
+ const QStyleOptionGraphicsItem options[], QWidget *widget = 0) override
{
drawnItems.clear();
for (int i = 0; i < numItems; ++i)
@@ -2768,7 +2771,7 @@ public:
RectWidget(Qt::GlobalColor color, QGraphicsItem *parent=0) : QGraphicsWidget(parent), mColor(color) {}
- void paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *)
+ void paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *) override
{
painter->setBrush(QBrush(mColor));
painter->drawRect(boundingRect());
@@ -2783,10 +2786,10 @@ public:
RectItem(Qt::GlobalColor color, QGraphicsItem *parent=0) : QGraphicsItem(parent), mColor(color) {}
- QRectF boundingRect() const
+ QRectF boundingRect() const override
{return QRectF(10,10,50,50);}
- void paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *)
+ void paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *) override
{
painter->setBrush(QBrush(mColor));
painter->drawRect(boundingRect());
@@ -2844,7 +2847,7 @@ public:
QList<QVariant> values;
QList<QVariant> oldValues;
protected:
- QVariant itemChange(GraphicsItemChange change, const QVariant &value)
+ QVariant itemChange(GraphicsItemChange change, const QVariant &value) override
{
changes << change;
values << value;
@@ -2864,7 +2867,7 @@ protected:
void tst_QGraphicsWidget::widgetSendsGeometryChanges()
{
ItemChangeTester widget;
- widget.setFlags(0);
+ widget.setFlags({});
widget.clear();
QPointF pos(10, 10);
@@ -2906,7 +2909,7 @@ public:
setSizePolicy(sp);
}
- void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
+ void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override
{
Q_UNUSED(option);
Q_UNUSED(widget);
@@ -2918,7 +2921,7 @@ public:
}
protected:
- QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const
+ QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const override
{
qreal w = constraint.width();
switch (which) {
@@ -2941,9 +2944,6 @@ protected:
void tst_QGraphicsWidget::respectHFW()
{
-#if defined(Q_OS_DARWIN)
- QSKIP("This test is platform dependent, it fails on Apple platforms. Please fix.");
-#else
QGraphicsScene scene;
HFWWidget *window = new HFWWidget;
scene.addItem(window);
@@ -2958,7 +2958,7 @@ void tst_QGraphicsWidget::respectHFW()
{ // here we go - simulate a interactive resize of the window
QTest::mouseMove(view.data(), view->mapFromScene(71, 71)); // bottom right corner
- QTest::mousePress(view->viewport(), Qt::LeftButton, 0, view->mapFromScene(71, 71), 200);
+ QTest::mousePress(view->viewport(), Qt::LeftButton, {}, view->mapFromScene(71, 71), 200);
view->grabMouse();
// move both mouse cursor and set correct event in order to emulate resize
QTest::mouseMove(view->viewport(), view->mapFromScene(60, 30), 200);
@@ -2972,8 +2972,10 @@ void tst_QGraphicsWidget::respectHFW()
}
const QSizeF winSize = window->size();
qreal minHFW = window->effectiveSizeHint(Qt::MinimumSize, QSizeF(winSize.width(), -1)).height();
- QTRY_VERIFY(qAbs(minHFW - winSize.height()) < 1);
+#ifdef Q_OS_DARWIN
+ QEXPECT_FAIL("", "This test is known to fail on Apple platforms.", Continue);
#endif
+ QTRY_VERIFY(qAbs(minHFW - winSize.height()) < 1);
}
class PolishWidget : public QGraphicsWidget
@@ -2985,13 +2987,13 @@ public:
{
}
- void paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *)
+ void paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *) override
{
painter->setBrush(QBrush(mColor));
painter->drawRect(boundingRect());
}
- void polishEvent()
+ void polishEvent() override
{
if (!parentWidget()) {
//We add a child in the polish event for the parent
@@ -3031,9 +3033,9 @@ void tst_QGraphicsWidget::polishEvent()
{
class MyGraphicsWidget : public QGraphicsWidget
{ public:
- void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *)
+ void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *) override
{ events << QEvent::Paint; }
- void polishEvent()
+ void polishEvent() override
{ events << QEvent::Polish; }
QList<QEvent::Type> events;
};
@@ -3058,7 +3060,7 @@ void tst_QGraphicsWidget::polishEvent2()
{
class MyGraphicsWidget : public QGraphicsWidget
{ public:
- void polishEvent()
+ void polishEvent() override
{ events << QEvent::Polish; }
QList<QEvent::Type> events;
};
@@ -3107,31 +3109,8 @@ void tst_QGraphicsWidget::initialShow()
{ public:
MyGraphicsWidget() : repaints(0) {}
int repaints;
- void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget*) { ++repaints; }
- void polishEvent() { update(); }
- };
-
- QGraphicsScene scene;
- MyGraphicsWidget *widget = new MyGraphicsWidget;
-
- QGraphicsView view(&scene);
- view.show();
- qApp->setActiveWindow(&view);
- QVERIFY(QTest::qWaitForWindowActive(&view));
-
- scene.addItem(widget);
-
- QTRY_COMPARE(widget->repaints, 1);
-}
-
-void tst_QGraphicsWidget::initialShow2()
-{
- class MyGraphicsWidget : public QGraphicsWidget
- { public:
- MyGraphicsWidget() : repaints(0) {}
- int repaints;
- void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget*) { ++repaints; }
- void polishEvent() { update(); }
+ void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget*) override { ++repaints; }
+ void polishEvent() override { update(); }
};
// Don't let paint events triggered by the windowing system
@@ -3172,7 +3151,7 @@ void tst_QGraphicsWidget::itemChangeEvents()
{ public:
TestGraphicsWidget() : QGraphicsWidget() {}
QHash<QEvent::Type, QVariant> valueDuringEvents;
- bool event(QEvent *event) {
+ bool event(QEvent *event) override {
Q_UNUSED(event);
switch (event->type()) {
case QEvent::EnabledChange: {
@@ -3203,11 +3182,11 @@ void tst_QGraphicsWidget::itemChangeEvents()
}
return true;
}
- void showEvent(QShowEvent *event) {
+ void showEvent(QShowEvent *event) override {
Q_UNUSED(event);
valueDuringEvents.insert(QEvent::Show, isVisible());
}
- void hideEvent(QHideEvent *event) {
+ void hideEvent(QHideEvent *event) override {
Q_UNUSED(event);
valueDuringEvents.insert(QEvent::Hide, isVisible());
}
@@ -3293,8 +3272,8 @@ public:
void verifyTabFocus(QGraphicsScene *scene, const QList<QGraphicsWidget *> &chain, bool wrapsAround)
{
- QKeyEvent tabEvent(QEvent::KeyPress, Qt::Key_Tab, 0);
- QKeyEvent backtabEvent(QEvent::KeyPress, Qt::Key_Backtab, 0);
+ QKeyEvent tabEvent(QEvent::KeyPress, Qt::Key_Tab, {});
+ QKeyEvent backtabEvent(QEvent::KeyPress, Qt::Key_Backtab, {});
for (int i = 0; i < chain.size(); ++i)
chain.at(i)->clearFocus();