Fix crashes when dropping analysis plots into Multiplots

This commit is contained in:
Gaute Lindkvist
2020-09-16 19:33:44 +02:00
committed by Magne Sjaastad
parent ab3e43d8fb
commit 93baf776a1
50 changed files with 360 additions and 255 deletions

View File

@@ -391,20 +391,6 @@ void RimGridCrossPlot::onAxisSelected( int axis, bool toggle )
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimGridCrossPlot::doRemoveFromCollection()
{
RimGridCrossPlotCollection* crossPlotCollection = nullptr;
this->firstAncestorOrThisOfType( crossPlotCollection );
if ( crossPlotCollection )
{
crossPlotCollection->removeGridCrossPlot( this );
crossPlotCollection->updateAllRequiredEditors();
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@@ -141,7 +141,6 @@ private:
void doUpdateLayout() override;
void cleanupBeforeClose();
void doRemoveFromCollection() override;
QString generateInfoBoxText() const;
void connectAxisSignals( RimPlotAxisProperties* axis );

View File

@@ -43,17 +43,17 @@ RimGridCrossPlotCollection::~RimGridCrossPlotCollection()
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimGridCrossPlotCollection::deleteAllChildObjects()
std::vector<RimGridCrossPlot*> RimGridCrossPlotCollection::plots() const
{
m_gridCrossPlots.deleteAllChildObjects();
return m_gridCrossPlots.childObjects();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<RimGridCrossPlot*> RimGridCrossPlotCollection::gridCrossPlots() const
size_t RimGridCrossPlotCollection::plotCount() const
{
return m_gridCrossPlots.childObjects();
return m_gridCrossPlots.size();
}
//--------------------------------------------------------------------------------------------------
@@ -65,22 +65,22 @@ RimGridCrossPlot* RimGridCrossPlotCollection::createGridCrossPlot()
plot->setAsPlotMdiWindow();
// plot->setDescription(QString("Summary Cross Plot %1").arg(m_gridCrossPlots.size()));
addGridCrossPlot( plot );
addPlot( plot );
return plot;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimGridCrossPlotCollection::addGridCrossPlot( RimGridCrossPlot* plot )
void RimGridCrossPlotCollection::insertPlot( RimGridCrossPlot* plot, size_t index )
{
m_gridCrossPlots().push_back( plot );
m_gridCrossPlots.insert( index, plot );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimGridCrossPlotCollection::removeGridCrossPlot( RimGridCrossPlot* plot )
void RimGridCrossPlotCollection::removePlot( RimGridCrossPlot* plot )
{
m_gridCrossPlots.removeChildObject( plot );
}

View File

@@ -17,16 +17,17 @@
/////////////////////////////////////////////////////////////////////////////////
#pragma once
#include "RimAbstractPlotCollection.h"
#include "RimGridCrossPlot.h"
#include "cafPdmChildArrayField.h"
#include "cafPdmObject.h"
class RimGridCrossPlot;
//==================================================================================================
///
///
//==================================================================================================
class RimGridCrossPlotCollection : public caf::PdmObject
class RimGridCrossPlotCollection : public caf::PdmObject, public RimTypedPlotCollection<RimGridCrossPlot>
{
CAF_PDM_HEADER_INIT;
@@ -34,12 +35,12 @@ public:
RimGridCrossPlotCollection();
~RimGridCrossPlotCollection() override;
void deleteAllChildObjects();
std::vector<RimGridCrossPlot*> plots() const final;
size_t plotCount() const final;
void insertPlot( RimGridCrossPlot* plot, size_t index ) final;
void removePlot( RimGridCrossPlot* plot ) final;
std::vector<RimGridCrossPlot*> gridCrossPlots() const;
RimGridCrossPlot* createGridCrossPlot();
void addGridCrossPlot( RimGridCrossPlot* plot );
void removeGridCrossPlot( RimGridCrossPlot* plot );
RimGridCrossPlot* createGridCrossPlot();
private:
caf::PdmChildArrayField<RimGridCrossPlot*> m_gridCrossPlots;

View File

@@ -108,11 +108,19 @@ std::vector<RimSaturationPressurePlot*>
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<RimSaturationPressurePlot*> RimSaturationPressurePlotCollection::plots()
std::vector<RimSaturationPressurePlot*> RimSaturationPressurePlotCollection::plots() const
{
return m_saturationPressurePlots.childObjects();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
size_t RimSaturationPressurePlotCollection::plotCount() const
{
return m_saturationPressurePlots.size();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@@ -38,7 +38,8 @@ public:
std::vector<RimSaturationPressurePlot*> createSaturationPressurePlots( RimEclipseResultCase* eclipseResultCase,
int timeStep );
std::vector<RimSaturationPressurePlot*> plots();
std::vector<RimSaturationPressurePlot*> plots() const;
size_t plotCount() const;
void deleteAllChildObjects();
private: