Fix crash when closing and reopening plots

This commit is contained in:
Gaute Lindkvist 2019-11-22 15:42:40 +01:00
parent f130163ee8
commit 293290827b
9 changed files with 20 additions and 22 deletions

View File

@ -198,7 +198,7 @@ void RimGridCrossPlot::calculateZoomRangeAndUpdateQwt()
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimGridCrossPlot::reattachCurvesToQwtAndReplot() void RimGridCrossPlot::reattachAllCurves()
{ {
if ( m_plotWidget ) if ( m_plotWidget )
{ {

View File

@ -70,15 +70,17 @@ public:
QImage snapshotWindowContent() override; QImage snapshotWindowContent() override;
void zoomAll() override; void zoomAll() override;
void calculateZoomRangeAndUpdateQwt(); void calculateZoomRangeAndUpdateQwt();
void reattachCurvesToQwtAndReplot();
QString createAutoName() const override; QString createAutoName() const override;
bool showInfoBox() const; bool showInfoBox() const;
caf::PdmFieldHandle* userDescriptionField() override; caf::PdmFieldHandle* userDescriptionField() override;
void detachAllCurves() override;
void performAutoNameUpdate() override; void detachAllCurves() override;
void updateCurveNamesAndPlotTitle(); void reattachAllCurves() override;
void swapAxes();
void performAutoNameUpdate() override;
void updateCurveNamesAndPlotTitle();
void swapAxes();
QString asciiDataForPlotExport() const override; QString asciiDataForPlotExport() const override;
QString asciiTitleForPlotExport( int dataSetIndex ) const; QString asciiTitleForPlotExport( int dataSetIndex ) const;

View File

@ -147,7 +147,7 @@ void RimGridCrossPlotCurve::updateLegendsInPlot()
this->firstAncestorOrThisOfType( plot ); this->firstAncestorOrThisOfType( plot );
if ( plot ) if ( plot )
{ {
plot->reattachCurvesToQwtAndReplot(); plot->reattachAllCurves();
} }
RimPlotCurve::updateLegendsInPlot(); RimPlotCurve::updateLegendsInPlot();
} }

View File

@ -1216,7 +1216,7 @@ void RimGridCrossPlotDataSet::triggerPlotNameUpdateAndReplot()
if ( parent ) if ( parent )
{ {
parent->updateCurveNamesAndPlotTitle(); parent->updateCurveNamesAndPlotTitle();
parent->reattachCurvesToQwtAndReplot(); parent->reattachAllCurves();
parent->updateConnectedEditors(); parent->updateConnectedEditors();
} }
} }

View File

@ -78,7 +78,8 @@ public:
virtual QString asciiDataForPlotExport() const = 0; virtual QString asciiDataForPlotExport() const = 0;
virtual void detachAllCurves() = 0; virtual void reattachAllCurves() = 0;
virtual void detachAllCurves() = 0;
virtual caf::PdmObject* findPdmObjectFromQwtCurve( const QwtPlotCurve* curve ) const = 0; virtual caf::PdmObject* findPdmObjectFromQwtCurve( const QwtPlotCurve* curve ) const = 0;

View File

@ -126,7 +126,7 @@ public:
TrajectoryType formationTrajectoryType() const; TrajectoryType formationTrajectoryType() const;
void detachAllCurves() override; void detachAllCurves() override;
void reattachAllCurves(); void reattachAllCurves() override;
void setAndUpdateWellPathFormationNamesData( RimCase* rimCase, RimWellPath* wellPath ); void setAndUpdateWellPathFormationNamesData( RimCase* rimCase, RimWellPath* wellPath );

View File

@ -102,7 +102,7 @@ public:
size_t curveCount() const; size_t curveCount() const;
void detachAllCurves() override; void detachAllCurves() override;
void reattachAllCurves(); void reattachAllCurves() override;
void updateCaseNameHasChanged(); void updateCaseNameHasChanged();
void updateAxes() override; void updateAxes() override;

View File

@ -527,6 +527,10 @@ bool RiuQwtPlotWidget::eventFilter( QObject* watched, QEvent* event )
void RiuQwtPlotWidget::hideEvent( QHideEvent* event ) void RiuQwtPlotWidget::hideEvent( QHideEvent* event )
{ {
resetCurveHighlighting(); resetCurveHighlighting();
if ( m_plotDefinition )
{
m_plotDefinition->detachAllCurves();
}
QwtPlot::hideEvent( event ); QwtPlot::hideEvent( event );
} }
@ -541,19 +545,11 @@ void RiuQwtPlotWidget::showEvent( QShowEvent* event )
m_canvasStyleSheet = createCanvasStyleSheet(); m_canvasStyleSheet = createCanvasStyleSheet();
m_canvasStyleSheet.applyToWidget( canvas() ); m_canvasStyleSheet.applyToWidget( canvas() );
QwtPlot::showEvent( event );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuQwtPlotWidget::closeEvent( QCloseEvent* event )
{
if ( m_plotDefinition ) if ( m_plotDefinition )
{ {
m_plotDefinition->detachAllCurves(); m_plotDefinition->reattachAllCurves();
} }
QwtPlot::closeEvent( event ); QwtPlot::showEvent( event );
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@ -106,7 +106,6 @@ protected:
bool eventFilter( QObject* watched, QEvent* event ) override; bool eventFilter( QObject* watched, QEvent* event ) override;
void hideEvent( QHideEvent* event ) override; void hideEvent( QHideEvent* event ) override;
void showEvent( QShowEvent* event ) override; void showEvent( QShowEvent* event ) override;
void closeEvent( QCloseEvent* event ) override;
void applyAxisTitleToQwt( QwtPlot::Axis axis ); void applyAxisTitleToQwt( QwtPlot::Axis axis );