#5007 Janitor : Do not call virtual methods from destructors

This commit is contained in:
Magne Sjaastad 2019-11-07 08:48:11 +01:00
parent 0caaaf7159
commit a413f672ec
12 changed files with 99 additions and 30 deletions

View File

@ -41,8 +41,6 @@ RifEclipseRestartFilesetAccess::RifEclipseRestartFilesetAccess()
//--------------------------------------------------------------------------------------------------
RifEclipseRestartFilesetAccess::~RifEclipseRestartFilesetAccess()
{
close();
for ( size_t i = 0; i < m_ecl_files.size(); i++ )
{
if ( m_ecl_files[i] )

View File

@ -116,7 +116,11 @@ RimFlowCharacteristicsPlot::~RimFlowCharacteristicsPlot()
{
removeMdiWindowFromMdiArea();
deleteViewWidget();
if ( m_flowCharPlotWidget )
{
m_flowCharPlotWidget->deleteLater();
m_flowCharPlotWidget = nullptr;
}
}
//--------------------------------------------------------------------------------------------------

View File

@ -69,7 +69,11 @@ RimTofAccumulatedPhaseFractionsPlot::~RimTofAccumulatedPhaseFractionsPlot()
{
removeMdiWindowFromMdiArea();
deleteViewWidget();
if ( m_tofAccumulatedPhaseFractionsPlotWidget )
{
m_tofAccumulatedPhaseFractionsPlotWidget->deleteLater();
m_tofAccumulatedPhaseFractionsPlotWidget = nullptr;
}
}
//--------------------------------------------------------------------------------------------------

View File

@ -57,7 +57,11 @@ RimTotalWellAllocationPlot::~RimTotalWellAllocationPlot()
{
removeMdiWindowFromMdiArea();
deleteViewWidget();
if ( m_wellTotalAllocationPlotWidget )
{
m_wellTotalAllocationPlotWidget->deleteLater();
m_wellTotalAllocationPlotWidget = nullptr;
}
}
//--------------------------------------------------------------------------------------------------

View File

@ -140,7 +140,11 @@ RimWellAllocationPlot::~RimWellAllocationPlot()
delete m_totalWellAllocationPlot();
delete m_tofAccumulatedPhaseFractionsPlot();
deleteViewWidget();
if ( m_wellAllocationPlotWidget )
{
m_wellAllocationPlotWidget->deleteLater();
m_wellAllocationPlotWidget = nullptr;
}
}
//--------------------------------------------------------------------------------------------------

View File

@ -87,7 +87,7 @@ RimGridCrossPlot::RimGridCrossPlot()
RimGridCrossPlot::~RimGridCrossPlot()
{
removeMdiWindowFromMdiArea();
deleteViewWidget();
cleanupBeforeClose();
}
//--------------------------------------------------------------------------------------------------
@ -481,12 +481,7 @@ QWidget* RimGridCrossPlot::createViewWidget( QWidget* mainWindowParent )
//--------------------------------------------------------------------------------------------------
void RimGridCrossPlot::deleteViewWidget()
{
detachAllCurves();
if ( m_plotWidget )
{
m_plotWidget->deleteLater();
m_plotWidget = nullptr;
}
cleanupBeforeClose();
}
//--------------------------------------------------------------------------------------------------
@ -1115,6 +1110,23 @@ void RimGridCrossPlot::updatePlotTitle()
updateCurveNamesAndPlotTitle();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimGridCrossPlot::cleanupBeforeClose()
{
for ( auto dataSet : m_crossPlotDataSets() )
{
dataSet->detachAllCurves();
}
if ( m_plotWidget )
{
m_plotWidget->deleteLater();
m_plotWidget = nullptr;
}
}
//--------------------------------------------------------------------------------------------------
/// Name Configuration
///

View File

@ -153,6 +153,9 @@ protected:
void updatePlotTitle() override;
private:
void cleanupBeforeClose();
private:
caf::PdmField<bool> m_showInfoBox;
caf::PdmField<bool> m_showLegend_OBSOLETE;

View File

@ -164,7 +164,8 @@ Rim3dView::~Rim3dView( void )
}
removeMdiWindowFromMdiArea();
deleteViewWidget();
delete m_viewer;
m_viewer = nullptr;
}
//--------------------------------------------------------------------------------------------------

View File

@ -66,7 +66,7 @@ RimGridPlotWindow::~RimGridPlotWindow()
removeMdiWindowFromMdiArea();
m_plots.deleteAllChildObjects();
deleteViewWidget();
cleanupBeforeClose();
}
//--------------------------------------------------------------------------------------------------
@ -389,13 +389,7 @@ QWidget* RimGridPlotWindow::createViewWidget( QWidget* mainWindowParent )
//--------------------------------------------------------------------------------------------------
void RimGridPlotWindow::deleteViewWidget()
{
detachAllCurves();
if ( m_viewer )
{
m_viewer->deleteLater();
m_viewer = nullptr;
}
cleanupBeforeClose();
}
//--------------------------------------------------------------------------------------------------
@ -624,6 +618,24 @@ void RimGridPlotWindow::detachAllCurves()
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimGridPlotWindow::cleanupBeforeClose()
{
auto plotVector = plots();
for ( size_t tIdx = 0; tIdx < plotVector.size(); ++tIdx )
{
plotVector[tIdx]->detachAllCurves();
}
if ( m_viewer )
{
m_viewer->deleteLater();
m_viewer = nullptr;
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -118,6 +118,8 @@ protected:
private:
void detachAllCurves() override;
void cleanupBeforeClose();
static RimPlotInterface* toPlotInterfaceAsserted( caf::PdmObject* pdmObject );
static const RimPlotInterface* toPlotInterfaceAsserted( const caf::PdmObject* pdmObject );
static caf::PdmObject* toPdmObjectAsserted( RimPlotInterface* plotInterface );

View File

@ -226,7 +226,7 @@ RimSummaryPlot::~RimSummaryPlot()
{
removeMdiWindowFromMdiArea();
deleteViewWidget();
cleanupBeforeClose();
m_summaryCurves_OBSOLETE.deleteAllChildObjects();
m_curveFilters_OBSOLETE.deleteAllChildObjects();
@ -1508,6 +1508,35 @@ std::set<RimPlotAxisPropertiesInterface*> RimSummaryPlot::allPlotAxes() const
return {m_timeAxisProperties, m_bottomAxisProperties, m_leftYAxisProperties, m_rightYAxisProperties};
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimSummaryPlot::cleanupBeforeClose()
{
if ( m_summaryCurveCollection )
{
m_summaryCurveCollection->detachQwtCurves();
}
m_ensembleCurveSetCollection->detachQwtCurves();
for ( RimGridTimeHistoryCurve* curve : m_gridTimeHistoryCurves )
{
curve->detachQwtCurve();
}
for ( RimAsciiDataCurve* curve : m_asciiDataCurves )
{
curve->detachQwtCurve();
}
if ( m_plotWidget )
{
m_plotWidget->deleteLater();
m_plotWidget = nullptr;
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -1736,13 +1765,7 @@ QWidget* RimSummaryPlot::createViewWidget( QWidget* mainWindowParent )
//--------------------------------------------------------------------------------------------------
void RimSummaryPlot::deleteViewWidget()
{
detachAllCurves();
if ( m_plotWidget )
{
m_plotWidget->deleteLater();
m_plotWidget = nullptr;
}
cleanupBeforeClose();
}
//--------------------------------------------------------------------------------------------------

View File

@ -224,6 +224,8 @@ private:
std::set<RimPlotAxisPropertiesInterface*> allPlotAxes() const;
void cleanupBeforeClose();
private:
caf::PdmField<bool> m_normalizeCurveYValues;