summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2019-11-15 20:50:44 +0100
committerGravatar Dirk Hohndel <dirk@hohndel.org>2019-11-16 08:29:53 -0800
commitf0a89759bf38375d32ad70ba4710a98d30a47e5d (patch)
treee49f74e6d4fad9a19c05384138edb061dcda69c1
parent12c7c5ea961bcdc866dbf6ce121c428d43c3730b (diff)
downloadsubsurface-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.cpp7
-rw-r--r--profile-widget/divetooltipitem.h1
-rw-r--r--profile-widget/profilewidget2.cpp1
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);