diff options
author | Liang Qi <liang.qi@qt.io> | 2016-11-25 20:33:35 +0100 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2016-11-25 20:33:35 +0100 |
commit | 01ec7b7ae4cdfabf2228911a96f57e2da8f333bb (patch) | |
tree | 7adf14d8084c434ba0065ba12d53db6a81164876 | |
parent | 44ac0a336550b45a02cd9b9330d23d7c393b1342 (diff) | |
parent | af8709305d0f6fc899cb8c9dd19c7c2cc67a6d4b (diff) |
Merge remote-tracking branch 'origin/5.6' into 5.75.7
Change-Id: I45103a81acb60cbc0d2f5aeb786ab0de0b99f7d2
19 files changed, 55 insertions, 19 deletions
diff --git a/src/charts/chartitem.cpp b/src/charts/chartitem.cpp index fda019c9..fd6e8610 100644 --- a/src/charts/chartitem.cpp +++ b/src/charts/chartitem.cpp @@ -47,6 +47,11 @@ AbstractDomain* ChartItem::domain() const return m_series->domain(); } +void ChartItem::cleanup() +{ + disconnect(); +} + void ChartItem::handleDomainUpdated() { qWarning() << __FUNCTION__<< "Slot not implemented"; diff --git a/src/charts/chartitem_p.h b/src/charts/chartitem_p.h index ad4266d3..b6b30118 100644 --- a/src/charts/chartitem_p.h +++ b/src/charts/chartitem_p.h @@ -52,6 +52,8 @@ class ChartItem : public ChartElement public: ChartItem(QAbstractSeriesPrivate *series,QGraphicsItem* item); AbstractDomain* domain() const; + virtual void cleanup(); + public Q_SLOTS: virtual void handleDomainUpdated(); diff --git a/src/charts/chartpresenter.cpp b/src/charts/chartpresenter.cpp index 15e83b84..cd2c58d4 100644 --- a/src/charts/chartpresenter.cpp +++ b/src/charts/chartpresenter.cpp @@ -146,7 +146,7 @@ void ChartPresenter::handleSeriesRemoved(QAbstractSeries *series) { ChartItem *chart = series->d_ptr->m_item.take(); chart->hide(); - chart->disconnect(); + chart->cleanup(); series->disconnect(chart); chart->deleteLater(); if (chart->animation()) diff --git a/src/charts/piechart/piechartitem.cpp b/src/charts/piechart/piechartitem.cpp index 49a913f3..2433447c 100644 --- a/src/charts/piechart/piechartitem.cpp +++ b/src/charts/piechart/piechartitem.cpp @@ -68,15 +68,7 @@ PieChartItem::PieChartItem(QPieSeries *series, QGraphicsItem* item) PieChartItem::~PieChartItem() { - // slices deleted automatically through QGraphicsItem - if (m_series) { - m_series->disconnect(this); - QPieSeriesPrivate::fromSeries(m_series)->disconnect(this); - } - foreach (QPieSlice *slice, m_sliceItems.keys()) { - slice->disconnect(this); - QPieSlicePrivate::fromSlice(slice)->disconnect(this); - } + cleanup(); } void PieChartItem::setAnimation(PieAnimation *animation) @@ -89,6 +81,23 @@ ChartAnimation *PieChartItem::animation() const return m_animation; } +void PieChartItem::cleanup() +{ + ChartItem::cleanup(); + + // slice items deleted automatically through QGraphicsItem + if (m_series) { + m_series->disconnect(this); + QPieSeriesPrivate::fromSeries(m_series)->disconnect(this); + m_series = 0; + } + foreach (QPieSlice *slice, m_sliceItems.keys()) { + slice->disconnect(this); + QPieSlicePrivate::fromSlice(slice)->disconnect(this); + } + m_sliceItems.clear(); +} + void PieChartItem::handleDomainUpdated() { QRectF rect(QPointF(0,0),domain()->size()); diff --git a/src/charts/piechart/piechartitem_p.h b/src/charts/piechart/piechartitem_p.h index bfbbb77a..63f9bb57 100644 --- a/src/charts/piechart/piechartitem_p.h +++ b/src/charts/piechart/piechartitem_p.h @@ -79,6 +79,8 @@ public Q_SLOTS: void setAnimation(PieAnimation *animation); ChartAnimation *animation() const; + // From ChartItem + void cleanup(); private: PieSliceData updateSliceGeometry(QPieSlice *slice); diff --git a/tests/auto/auto.pri b/tests/auto/auto.pri index a04f5b23..946b0e4a 100644 --- a/tests/auto/auto.pri +++ b/tests/auto/auto.pri @@ -2,6 +2,7 @@ error( "Couldn't find the tests.pri file!" ) } +CONFIG += testcase QT += testlib widgets !contains(TARGET, ^tst_.*):TARGET = $$join(TARGET,,"tst_") diff --git a/tests/auto/inc/tst_definitions.h b/tests/auto/inc/tst_definitions.h index e12dac18..a35d53e4 100644 --- a/tests/auto/inc/tst_definitions.h +++ b/tests/auto/inc/tst_definitions.h @@ -63,14 +63,16 @@ QT_END_NAMESPACE #define SKIP_IF_CANNOT_TEST_MOUSE_EVENTS() { \ do { \ QPushButton b; \ - b.resize(100, 100); \ + b.resize(120, 100); \ b.show(); \ QTest::qWaitForWindowShown(&b); \ QSignalSpy spy(&b, SIGNAL(clicked())); \ QTest::mouseClick(&b, Qt::LeftButton, 0, b.rect().center()); \ + QApplication::processEvents(); \ if (spy.count() == 0) \ QSKIP("Cannot test mouse events in this environment"); \ } while (0); \ + QApplication::processEvents(); \ } #define SKIP_ON_POLAR() { \ @@ -83,6 +85,12 @@ QT_END_NAMESPACE QSKIP("Test not supported by cartesian chart"); \ } +// Synthetic mouse moves do not trigger hover events reliably in many virtual machines, +// so we skip tests involving mouse moves. + #define SKIP_IF_FLAKY_MOUSE_MOVE() { \ + QSKIP("Skipping test with synthetic mouse moves."); \ + } + static inline bool isPolarTest() { static bool isPolar = false; diff --git a/tests/auto/qareaseries/tst_qareaseries.cpp b/tests/auto/qareaseries/tst_qareaseries.cpp index e03989c0..16fa94b3 100644 --- a/tests/auto/qareaseries/tst_qareaseries.cpp +++ b/tests/auto/qareaseries/tst_qareaseries.cpp @@ -78,6 +78,9 @@ void tst_QAreaSeries::init() m_axisY = new QValueAxis; m_axisX->setRange(0, 4); m_axisY->setRange(0, 10); + // Hide axes so they don't confuse color checks + m_axisX->setVisible(false); + m_axisY->setVisible(false); m_chart->addAxis(m_axisX, Qt::AlignBottom); m_chart->addAxis(m_axisY, Qt::AlignRight); } diff --git a/tests/auto/qbarseries/tst_qbarseries.cpp b/tests/auto/qbarseries/tst_qbarseries.cpp index 2eb4fe7d..8922af25 100644 --- a/tests/auto/qbarseries/tst_qbarseries.cpp +++ b/tests/auto/qbarseries/tst_qbarseries.cpp @@ -627,6 +627,7 @@ void tst_QBarSeries::mousehovered_data() void tst_QBarSeries::mousehovered() { SKIP_IF_CANNOT_TEST_MOUSE_EVENTS(); + SKIP_IF_FLAKY_MOUSE_MOVE(); QBarSeries* series = new QBarSeries(); diff --git a/tests/auto/qchartview/tst_qchartview.cpp b/tests/auto/qchartview/tst_qchartview.cpp index 4ad4d6f6..6a300391 100644 --- a/tests/auto/qchartview/tst_qchartview.cpp +++ b/tests/auto/qchartview/tst_qchartview.cpp @@ -143,6 +143,9 @@ void tst_QChartView::rubberBand_data() void tst_QChartView::rubberBand() { + SKIP_IF_CANNOT_TEST_MOUSE_EVENTS(); + SKIP_IF_FLAKY_MOUSE_MOVE(); + QFETCH(QChartView::RubberBands, rubberBand); QFETCH(int, Xcount); QFETCH(int, Ycount); diff --git a/tests/auto/qhorizontalbarseries/tst_qhorizontalbarseries.cpp b/tests/auto/qhorizontalbarseries/tst_qhorizontalbarseries.cpp index cc6ff8c4..d6e7976b 100644 --- a/tests/auto/qhorizontalbarseries/tst_qhorizontalbarseries.cpp +++ b/tests/auto/qhorizontalbarseries/tst_qhorizontalbarseries.cpp @@ -574,6 +574,7 @@ void tst_QHorizontalBarSeries::mousehovered_data() void tst_QHorizontalBarSeries::mousehovered() { SKIP_IF_CANNOT_TEST_MOUSE_EVENTS(); + SKIP_IF_FLAKY_MOUSE_MOVE(); QHorizontalBarSeries* series = new QHorizontalBarSeries(); diff --git a/tests/auto/qhorizontalpercentbarseries/tst_qhorizontalpercentbarseries.cpp b/tests/auto/qhorizontalpercentbarseries/tst_qhorizontalpercentbarseries.cpp index b432ceff..a7359288 100644 --- a/tests/auto/qhorizontalpercentbarseries/tst_qhorizontalpercentbarseries.cpp +++ b/tests/auto/qhorizontalpercentbarseries/tst_qhorizontalpercentbarseries.cpp @@ -321,6 +321,7 @@ void tst_QHorizontalPercentBarSeries::mousehovered_data() void tst_QHorizontalPercentBarSeries::mousehovered() { SKIP_IF_CANNOT_TEST_MOUSE_EVENTS(); + SKIP_IF_FLAKY_MOUSE_MOVE(); QHorizontalPercentBarSeries* series = new QHorizontalPercentBarSeries(); diff --git a/tests/auto/qhorizontalstackedbarseries/tst_qhorizontalstackedbarseries.cpp b/tests/auto/qhorizontalstackedbarseries/tst_qhorizontalstackedbarseries.cpp index a95f2aa7..8e5ad06c 100644 --- a/tests/auto/qhorizontalstackedbarseries/tst_qhorizontalstackedbarseries.cpp +++ b/tests/auto/qhorizontalstackedbarseries/tst_qhorizontalstackedbarseries.cpp @@ -325,6 +325,7 @@ void tst_QHorizontalStackedBarSeries::mousehovered_data() void tst_QHorizontalStackedBarSeries::mousehovered() { SKIP_IF_CANNOT_TEST_MOUSE_EVENTS(); + SKIP_IF_FLAKY_MOUSE_MOVE(); QHorizontalStackedBarSeries* series = new QHorizontalStackedBarSeries(); diff --git a/tests/auto/qlegend/tst_qlegend.cpp b/tests/auto/qlegend/tst_qlegend.cpp index 014c4e0d..605de863 100644 --- a/tests/auto/qlegend/tst_qlegend.cpp +++ b/tests/auto/qlegend/tst_qlegend.cpp @@ -506,8 +506,9 @@ void tst_QLegend::xyMarkerPropertiesScatter() void tst_QLegend::markerSignals() { SKIP_ON_POLAR(); - SKIP_IF_CANNOT_TEST_MOUSE_EVENTS(); + SKIP_IF_FLAKY_MOUSE_MOVE(); + QChart *chart = newQChartOrQPolarChart(); QLegend *legend = chart->legend(); diff --git a/tests/auto/qml-qtquicktest/qml-qtquicktest.pro b/tests/auto/qml-qtquicktest/qml-qtquicktest.pro index d9a1e74f..d4919c1d 100644 --- a/tests/auto/qml-qtquicktest/qml-qtquicktest.pro +++ b/tests/auto/qml-qtquicktest/qml-qtquicktest.pro @@ -4,6 +4,7 @@ TEMPLATE = app CONFIG += warn_on qmltestcase +CONFIG -= testcase SOURCES += main.cpp OTHER_FILES += tst_*.qml DEFINES += QUICK_TEST_SOURCE_DIR=\"\\\"$$PWD\\\"\" diff --git a/tests/auto/qpercentbarseries/tst_qpercentbarseries.cpp b/tests/auto/qpercentbarseries/tst_qpercentbarseries.cpp index b60ba92b..12c97b4b 100644 --- a/tests/auto/qpercentbarseries/tst_qpercentbarseries.cpp +++ b/tests/auto/qpercentbarseries/tst_qpercentbarseries.cpp @@ -323,6 +323,7 @@ void tst_QPercentBarSeries::mousehovered_data() void tst_QPercentBarSeries::mousehovered() { SKIP_IF_CANNOT_TEST_MOUSE_EVENTS(); + SKIP_IF_FLAKY_MOUSE_MOVE(); QPercentBarSeries* series = new QPercentBarSeries(); diff --git a/tests/auto/qpieseries/tst_qpieseries.cpp b/tests/auto/qpieseries/tst_qpieseries.cpp index 1a808385..b3fc6d12 100644 --- a/tests/auto/qpieseries/tst_qpieseries.cpp +++ b/tests/auto/qpieseries/tst_qpieseries.cpp @@ -563,6 +563,7 @@ void tst_qpieseries::hoverSignal() // Just for different signals. SKIP_IF_CANNOT_TEST_MOUSE_EVENTS(); + SKIP_IF_FLAKY_MOUSE_MOVE(); // add some slices m_series->append("slice 1", 1); @@ -576,13 +577,6 @@ void tst_qpieseries::hoverSignal() m_view->show(); QTest::qWaitForWindowShown(m_view); - // try to ensure focus - QApplication::setActiveWindow(m_view); - m_view->setFocus(); - QApplication::processEvents(); - QVERIFY(m_view->isActiveWindow()); - QVERIFY(m_view->hasFocus()); - // move inside the slices m_series->setPieSize(1.0); QRectF pieRect = m_view->chart()->plotArea(); diff --git a/tests/auto/qpieslice/tst_qpieslice.cpp b/tests/auto/qpieslice/tst_qpieslice.cpp index 913eb641..5e1dd099 100644 --- a/tests/auto/qpieslice/tst_qpieslice.cpp +++ b/tests/auto/qpieslice/tst_qpieslice.cpp @@ -279,6 +279,7 @@ void tst_qpieslice::hoverSignal() // Just for different signals. SKIP_IF_CANNOT_TEST_MOUSE_EVENTS(); + SKIP_IF_FLAKY_MOUSE_MOVE(); // add some slices QPieSeries *series = new QPieSeries(); diff --git a/tests/auto/qstackedbarseries/tst_qstackedbarseries.cpp b/tests/auto/qstackedbarseries/tst_qstackedbarseries.cpp index 8135fdd1..287106cd 100644 --- a/tests/auto/qstackedbarseries/tst_qstackedbarseries.cpp +++ b/tests/auto/qstackedbarseries/tst_qstackedbarseries.cpp @@ -325,6 +325,7 @@ void tst_QStackedBarSeries::mousehovered_data() void tst_QStackedBarSeries::mousehovered() { SKIP_IF_CANNOT_TEST_MOUSE_EVENTS(); + SKIP_IF_FLAKY_MOUSE_MOVE(); QStackedBarSeries* series = new QStackedBarSeries(); |