diff --git a/src/core/qgsmaplayer.cpp b/src/core/qgsmaplayer.cpp index 682d4667812..2ad230caa3f 100644 --- a/src/core/qgsmaplayer.cpp +++ b/src/core/qgsmaplayer.cpp @@ -1909,7 +1909,10 @@ void QgsMapLayer::setLegend( QgsMapLayerLegend *legend ) mLegend = legend; if ( mLegend ) + { + mLegend->setParent( this ); connect( mLegend, &QgsMapLayerLegend::itemsChanged, this, &QgsMapLayer::legendChanged ); + } emit legendChanged(); } diff --git a/src/core/qgsmaplayerstylemanager.h b/src/core/qgsmaplayerstylemanager.h index c187e03aa64..d97fb200c21 100644 --- a/src/core/qgsmaplayerstylemanager.h +++ b/src/core/qgsmaplayerstylemanager.h @@ -25,6 +25,7 @@ class QgsMapLayer; #include #include "qgis_core.h" +#include "qgis_sip.h" class QDomElement; @@ -96,8 +97,12 @@ class CORE_EXPORT QgsMapLayerStyleManager : public QObject { Q_OBJECT public: - //! Construct a style manager associated with a map layer (must not be null) - QgsMapLayerStyleManager( QgsMapLayer *layer ); + + /** + * Construct a style manager associated with a map layer (must not be null). + * The style manager will be parented to \a layer. + */ + QgsMapLayerStyleManager( QgsMapLayer *layer SIP_TRANSFERTHIS ); //! Get pointer to the associated map layer QgsMapLayer *layer() const { return mLayer; } diff --git a/src/core/qgsvectorlayer.cpp b/src/core/qgsvectorlayer.cpp index 2693628b7f9..b14708d1bfe 100644 --- a/src/core/qgsvectorlayer.cpp +++ b/src/core/qgsvectorlayer.cpp @@ -147,6 +147,7 @@ QgsVectorLayer::QgsVectorLayer( const QString &vectorLayerPath, mConditionalStyles = new QgsConditionalLayerStyles(); mJoinBuffer = new QgsVectorLayerJoinBuffer( this ); + mJoinBuffer->setParent( this ); connect( mJoinBuffer, &QgsVectorLayerJoinBuffer::joinedFieldsChanged, this, &QgsVectorLayer::onJoinedFieldsChanged ); mExpressionFieldBuffer = new QgsExpressionFieldBuffer(); @@ -1553,6 +1554,7 @@ bool QgsVectorLayer::setDataProvider( QString const &provider ) return false; } + mDataProvider->setParent( this ); connect( mDataProvider, &QgsVectorDataProvider::raiseError, this, &QgsVectorLayer::raiseError ); QgsDebugMsgLevel( QStringLiteral( "Instantiated the data provider plugin" ), 2 ); @@ -4405,6 +4407,7 @@ void QgsVectorLayer::setAuxiliaryLayer( QgsAuxiliaryLayer *alayer ) } mAuxiliaryLayer.reset( alayer ); + mAuxiliaryLayer->setParent( this ); updateFields(); } diff --git a/src/core/raster/qgsrasterlayer.cpp b/src/core/raster/qgsrasterlayer.cpp index a72a1ed5ca7..569ec483f2c 100644 --- a/src/core/raster/qgsrasterlayer.cpp +++ b/src/core/raster/qgsrasterlayer.cpp @@ -614,6 +614,7 @@ void QgsRasterLayer::setDataProvider( QString const &provider ) return; } QgsDebugMsgLevel( "Data provider created", 4 ); + mDataProvider->setParent( this ); // Set data provider into pipe even if not valid so that it is deleted with pipe (with layer) mPipe.set( mDataProvider );