diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2020-12-24 19:21:30 +0100 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2021-01-10 15:57:39 -0800 |
commit | 02fbaffe4c5c4e60c2b84b71f4f4b00ecb78ef9f (patch) | |
tree | 07b08e1fa905c097e952e62cac91636163430c70 | |
parent | e61466e178e9062a7202f24f609baa12d21df5ea (diff) | |
download | subsurface-02fbaffe4c5c4e60c2b84b71f4f4b00ecb78ef9f.tar.gz |
profile: explicitly clear profile items
In contrast to most other items, which are cleared in the
setEmptyState() function, the profile items are cleared
indirectly via a signal from the model. Very hard to follow
and indeed, I thought I could just remove the slot.
Do this explicitly instead for deterministic code.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
-rw-r--r-- | profile-widget/diveprofileitem.cpp | 15 | ||||
-rw-r--r-- | profile-widget/diveprofileitem.h | 2 | ||||
-rw-r--r-- | profile-widget/profilewidget2.cpp | 2 |
3 files changed, 10 insertions, 9 deletions
diff --git a/profile-widget/diveprofileitem.cpp b/profile-widget/diveprofileitem.cpp index c69e08489..54acee86b 100644 --- a/profile-widget/diveprofileitem.cpp +++ b/profile-widget/diveprofileitem.cpp @@ -18,12 +18,18 @@ AbstractProfilePolygonItem::AbstractProfilePolygonItem(const DivePlotDataModel & { setCacheMode(DeviceCoordinateCache); connect(&dataModel, &DivePlotDataModel::dataChanged, this, &AbstractProfilePolygonItem::modelDataChanged); - connect(&dataModel, &DivePlotDataModel::rowsAboutToBeRemoved, this, &AbstractProfilePolygonItem::modelDataRemoved); connect(&hAxis, &DiveCartesianAxis::sizeChanged, this, &AbstractProfilePolygonItem::replot); connect(&vAxis, &DiveCartesianAxis::sizeChanged, this, &AbstractProfilePolygonItem::replot); connect(&vAxis, &DiveCartesianAxis::maxChanged, this, &AbstractProfilePolygonItem::replot); } +void AbstractProfilePolygonItem::clear() +{ + setPolygon(QPolygonF()); + qDeleteAll(texts); + texts.clear(); +} + void AbstractProfilePolygonItem::replot() { modelDataChanged(); @@ -34,13 +40,6 @@ void AbstractProfilePolygonItem::setVisible(bool visible) QGraphicsPolygonItem::setVisible(visible); } -void AbstractProfilePolygonItem::modelDataRemoved(const QModelIndex&, int, int) -{ - setPolygon(QPolygonF()); - qDeleteAll(texts); - texts.clear(); -} - bool AbstractProfilePolygonItem::shouldCalculateStuff(const QModelIndex &topLeft, const QModelIndex &bottomRight) { if (dataModel.rowCount() == 0) diff --git a/profile-widget/diveprofileitem.h b/profile-widget/diveprofileitem.h index 0b928514c..d85ec64fe 100644 --- a/profile-widget/diveprofileitem.h +++ b/profile-widget/diveprofileitem.h @@ -37,10 +37,10 @@ class AbstractProfilePolygonItem : public QObject, public QGraphicsPolygonItem { public: AbstractProfilePolygonItem(const DivePlotDataModel &model, const DiveCartesianAxis &hAxis, int hColumn, const DiveCartesianAxis &vAxis, int vColumn); virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0) = 0; + void clear(); public slots: virtual void modelDataChanged(const QModelIndex &topLeft = QModelIndex(), const QModelIndex &bottomRight = QModelIndex()); - virtual void modelDataRemoved(const QModelIndex &parent, int from, int to); void replot(); void setVisible(bool visible); diff --git a/profile-widget/profilewidget2.cpp b/profile-widget/profilewidget2.cpp index a9d78f5ee..20897b674 100644 --- a/profile-widget/profilewidget2.cpp +++ b/profile-widget/profilewidget2.cpp @@ -1123,6 +1123,8 @@ void ProfileWidget2::setEmptyState() heartBeatAxis->setVisible(false); heartBeatItem->setVisible(false); #endif + for (AbstractProfilePolygonItem *item: profileItems) + item->clear(); #ifndef SUBSURFACE_MOBILE hideAll(allTissues); |