summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2016-11-25 20:33:35 +0100
committerLiang Qi <liang.qi@qt.io>2016-11-25 20:33:35 +0100
commit01ec7b7ae4cdfabf2228911a96f57e2da8f333bb (patch)
tree7adf14d8084c434ba0065ba12d53db6a81164876
parent44ac0a336550b45a02cd9b9330d23d7c393b1342 (diff)
parentaf8709305d0f6fc899cb8c9dd19c7c2cc67a6d4b (diff)
Merge remote-tracking branch 'origin/5.6' into 5.75.7
-rw-r--r--src/charts/chartitem.cpp5
-rw-r--r--src/charts/chartitem_p.h2
-rw-r--r--src/charts/chartpresenter.cpp2
-rw-r--r--src/charts/piechart/piechartitem.cpp27
-rw-r--r--src/charts/piechart/piechartitem_p.h2
-rw-r--r--tests/auto/auto.pri1
-rw-r--r--tests/auto/inc/tst_definitions.h10
-rw-r--r--tests/auto/qareaseries/tst_qareaseries.cpp3
-rw-r--r--tests/auto/qbarseries/tst_qbarseries.cpp1
-rw-r--r--tests/auto/qchartview/tst_qchartview.cpp3
-rw-r--r--tests/auto/qhorizontalbarseries/tst_qhorizontalbarseries.cpp1
-rw-r--r--tests/auto/qhorizontalpercentbarseries/tst_qhorizontalpercentbarseries.cpp1
-rw-r--r--tests/auto/qhorizontalstackedbarseries/tst_qhorizontalstackedbarseries.cpp1
-rw-r--r--tests/auto/qlegend/tst_qlegend.cpp3
-rw-r--r--tests/auto/qml-qtquicktest/qml-qtquicktest.pro1
-rw-r--r--tests/auto/qpercentbarseries/tst_qpercentbarseries.cpp1
-rw-r--r--tests/auto/qpieseries/tst_qpieseries.cpp8
-rw-r--r--tests/auto/qpieslice/tst_qpieslice.cpp1
-rw-r--r--tests/auto/qstackedbarseries/tst_qstackedbarseries.cpp1
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();