From 0be0f08afa953d850b504e22dc7a66dfd9573dfd Mon Sep 17 00:00:00 2001 From: Mark Liversedge Date: Fri, 20 Jun 2014 17:24:41 +0100 Subject: [PATCH] Fix LTMCanvasPicker SEGV on delete tab .. not always, but sometimes ! --- src/LTMCanvasPicker.cpp | 7 +++---- src/LTMCanvasPicker.h | 2 ++ 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/LTMCanvasPicker.cpp b/src/LTMCanvasPicker.cpp index 4c80b6736..c0f63a977 100644 --- a/src/LTMCanvasPicker.cpp +++ b/src/LTMCanvasPicker.cpp @@ -19,8 +19,7 @@ LTMCanvasPicker::LTMCanvasPicker(QwtPlot *plot): d_selectedCurve(NULL), d_selectedPoint(-1) { - QwtPlotCanvas *canvas = static_cast(plot->canvas()); - + canvas = static_cast(plot->canvas()); canvas->installEventFilter(this); @@ -41,8 +40,8 @@ bool LTMCanvasPicker::event(QEvent *e) bool LTMCanvasPicker::eventFilter(QObject *object, QEvent *e) { - if ( object != (QObject *)plot()->canvas() ) - return false; + // for our canvas ? + if (object != canvas) return false; switch(e->type()) { diff --git a/src/LTMCanvasPicker.h b/src/LTMCanvasPicker.h index 33c780e19..26742038c 100644 --- a/src/LTMCanvasPicker.h +++ b/src/LTMCanvasPicker.h @@ -11,6 +11,7 @@ class QPoint; class QCustomEvent; class QwtPlot; class QwtPlotCurve; +class QwtPlotCanvas; class LTMCanvasPicker: public QObject { @@ -27,6 +28,7 @@ signals: void pointHover(QwtPlotCurve *, int); private: + QwtPlotCanvas *canvas; void select(const QPoint &, bool); QwtPlot *plot() { return (QwtPlot *)parent(); } const QwtPlot *plot() const { return (QwtPlot *)parent(); }