From 2d9e45ef588a392380bccadfe1d4a61bc3fe4e59 Mon Sep 17 00:00:00 2001 From: uclaros Date: Wed, 9 Oct 2024 11:44:00 +0300 Subject: [PATCH] Delete equality operator of QgsMapLayerRef and make its bool operator explicit This will avoid implicit conversion to bool when comparing QLists in the future. --- src/3d/qgs3dmapsettings.cpp | 12 ++++-------- src/core/qgsmaplayerref.h | 7 ++++++- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/3d/qgs3dmapsettings.cpp b/src/3d/qgs3dmapsettings.cpp index a6e050a405b1..702bb2ca4abc 100644 --- a/src/3d/qgs3dmapsettings.cpp +++ b/src/3d/qgs3dmapsettings.cpp @@ -31,6 +31,7 @@ #include "qgsrasterlayer.h" #include "qgspointlightsettings.h" #include "qgsdirectionallightsettings.h" +#include "qgsmaplayerlistutils_p.h" #include #include @@ -546,17 +547,12 @@ double Qgs3DMapSettings::terrainVerticalScale() const void Qgs3DMapSettings::setLayers( const QList &layers ) { - QList lst; - lst.reserve( layers.count() ); - for ( QgsMapLayer *layer : layers ) - { - lst.append( layer ); - } + const QList raw = _qgis_listRefToRaw( mLayers ); - if ( mLayers == lst ) + if ( layers == raw ) return; - mLayers = lst; + mLayers = _qgis_listRawToRef( layers ); emit layersChanged(); } diff --git a/src/core/qgsmaplayerref.h b/src/core/qgsmaplayerref.h index 941fc5bb8512..7c0e6f5d6073 100644 --- a/src/core/qgsmaplayerref.h +++ b/src/core/qgsmaplayerref.h @@ -85,11 +85,16 @@ struct _LayerRef provider = l && l->dataProvider() ? l->dataProvider()->name() : QString(); } + /** + * Equality operator is deleted to avoid confusion as there are multiple ways two _LayerRef objects can be considered equal. + */ + bool operator==( const _LayerRef &other ) = delete; + /** * Returns TRUE if the layer reference is resolved and contains a reference to an existing * map layer. */ - operator bool() const + explicit operator bool() const { return static_cast< bool >( layer.data() ); }