diff --git a/ApplicationCode/ModelVisualization/Riv3dWellLogCurveGeomertyGenerator.cpp b/ApplicationCode/ModelVisualization/Riv3dWellLogCurveGeomertyGenerator.cpp index 9088d2f5db..4d0dcc4b49 100644 --- a/ApplicationCode/ModelVisualization/Riv3dWellLogCurveGeomertyGenerator.cpp +++ b/ApplicationCode/ModelVisualization/Riv3dWellLogCurveGeomertyGenerator.cpp @@ -57,6 +57,10 @@ void Riv3dWellLogCurveGeometryGenerator::createCurveDrawables(const caf::Display { m_planeWidth = planeWidth; + // Make sure all drawables are cleared in case we return early to avoid a + // previous drawable being "stuck" when changing result type. + clearCurvePointsAndGeometry(); + if (!wellPathGeometry()) return; if (wellPathGeometry()->m_wellPathPoints.empty()) return; if (!wellPathClipBoundingBox.isValid()) return; @@ -172,6 +176,17 @@ void Riv3dWellLogCurveGeometryGenerator::createCurveDrawables(const caf::Display m_curveDrawable->setVertexArray(vertexArray.p()); } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void Riv3dWellLogCurveGeometryGenerator::clearCurvePointsAndGeometry() +{ + m_curveDrawable = nullptr; + m_curveVertices.clear(); + m_curveMeasuredDepths.clear(); + m_curveValues.clear(); +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/ModelVisualization/Riv3dWellLogCurveGeomertyGenerator.h b/ApplicationCode/ModelVisualization/Riv3dWellLogCurveGeomertyGenerator.h index 0f09fca27a..5905300657 100644 --- a/ApplicationCode/ModelVisualization/Riv3dWellLogCurveGeomertyGenerator.h +++ b/ApplicationCode/ModelVisualization/Riv3dWellLogCurveGeomertyGenerator.h @@ -55,6 +55,8 @@ public: double planeWidth, double minResultValue, double maxResultValue); + + void clearCurvePointsAndGeometry(); const RigWellPath* wellPathGeometry() const; @@ -67,9 +69,10 @@ public: private: caf::PdmPointer m_wellPath; + double m_planeWidth; + cvf::ref m_curveDrawable; std::vector m_curveVertices; std::vector m_curveMeasuredDepths; std::vector m_curveValues; - double m_planeWidth; };