diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2019-11-15 20:50:44 +0100 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2019-11-16 08:29:53 -0800 |
commit | f0a89759bf38375d32ad70ba4710a98d30a47e5d (patch) | |
tree | e49f74e6d4fad9a19c05384138edb061dcda69c1 | |
parent | 12c7c5ea961bcdc866dbf6ce121c428d43c3730b (diff) | |
download | subsurface-f0a89759bf38375d32ad70ba4710a98d30a47e5d.tar.gz |
Profile: clear tooltip's plotInfo in ProfileWidget2::setEmptyState
The tooltip's plotInfo was not cleared when clearing the profile.
With the new cylinder code, this lead to crashes, because the
displayed_dive's cylinder array is now cleared. The old code would
happily read stale data from the fixed-size cylinders array.
Clear the plotInfo explicitly.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
-rw-r--r-- | profile-widget/divetooltipitem.cpp | 7 | ||||
-rw-r--r-- | profile-widget/divetooltipitem.h | 1 | ||||
-rw-r--r-- | profile-widget/profilewidget2.cpp | 1 |
3 files changed, 8 insertions, 1 deletions
diff --git a/profile-widget/divetooltipitem.cpp b/profile-widget/divetooltipitem.cpp index 16be94c15..908f40070 100644 --- a/profile-widget/divetooltipitem.cpp +++ b/profile-widget/divetooltipitem.cpp @@ -139,7 +139,7 @@ ToolTipItem::ToolTipItem(QGraphicsItem *parent) : QGraphicsRectItem(parent), timeAxis(0), lastTime(-1) { - memset(&pInfo, 0, sizeof(pInfo)); + clearPlotInfo(); entryToolTip.first = NULL; entryToolTip.second = NULL; setFlags(ItemIgnoresTransformations | ItemIsMovable | ItemClipsChildrenToShape); @@ -223,6 +223,11 @@ void ToolTipItem::setPlotInfo(const plot_info &plot) pInfo = plot; } +void ToolTipItem::clearPlotInfo() +{ + memset(&pInfo, 0, sizeof(pInfo)); +} + void ToolTipItem::setTimeAxis(DiveCartesianAxis *axis) { timeAxis = axis; diff --git a/profile-widget/divetooltipitem.h b/profile-widget/divetooltipitem.h index 714782843..0ae399bcb 100644 --- a/profile-widget/divetooltipitem.h +++ b/profile-widget/divetooltipitem.h @@ -44,6 +44,7 @@ public: void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); void setTimeAxis(DiveCartesianAxis *axis); void setPlotInfo(const plot_info &plot); + void clearPlotInfo(); void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); public slots: diff --git a/profile-widget/profilewidget2.cpp b/profile-widget/profilewidget2.cpp index 54225a0fc..a85410892 100644 --- a/profile-widget/profilewidget2.cpp +++ b/profile-widget/profilewidget2.cpp @@ -1134,6 +1134,7 @@ void ProfileWidget2::setEmptyState() ccrsensor3GasItem->setVisible(false); ocpo2GasItem->setVisible(false); #ifndef SUBSURFACE_MOBILE + toolTipItem->clearPlotInfo(); toolTipItem->setVisible(false); diveCeiling->setVisible(false); decoModelParameters->setVisible(false); |