@@ -198,6 +198,19 @@ void QgsSymbolV2::dump()
198198 }
199199}
200200
201+ QgsSymbolLayerV2List QgsSymbolV2::cloneLayers () const
202+ {
203+ QgsSymbolLayerV2List lst;
204+ for (QgsSymbolLayerV2List::const_iterator it = mLayers .begin (); it != mLayers .end (); ++it)
205+ {
206+ QgsSymbolLayerV2* layer = (*it)->clone ();
207+ layer->setLocked ( (*it)->isLocked () );
208+ lst.append ( layer );
209+ }
210+ return lst;
211+ }
212+
213+
201214// /////////////////
202215
203216
@@ -263,10 +276,7 @@ void QgsMarkerSymbolV2::renderPoint(const QPointF& point, QgsRenderContext& cont
263276
264277QgsSymbolV2* QgsMarkerSymbolV2::clone () const
265278{
266- QgsSymbolLayerV2List lst;
267- for (QgsSymbolLayerV2List::const_iterator it = mLayers .begin (); it != mLayers .end (); ++it)
268- lst.append ( (*it)->clone () );
269- return new QgsMarkerSymbolV2 (lst);
279+ return new QgsMarkerSymbolV2 ( cloneLayers () );
270280}
271281
272282
@@ -315,10 +325,7 @@ void QgsLineSymbolV2::renderPolyline(const QPolygonF& points, QgsRenderContext&
315325
316326QgsSymbolV2* QgsLineSymbolV2::clone () const
317327{
318- QgsSymbolLayerV2List lst;
319- for (QgsSymbolLayerV2List::const_iterator it = mLayers .begin (); it != mLayers .end (); ++it)
320- lst.append ( (*it)->clone () );
321- return new QgsLineSymbolV2 (lst);
328+ return new QgsLineSymbolV2 ( cloneLayers () );
322329}
323330
324331// /////////////////
@@ -343,8 +350,5 @@ void QgsFillSymbolV2::renderPolygon(const QPolygonF& points, QList<QPolygonF>* r
343350
344351QgsSymbolV2* QgsFillSymbolV2::clone () const
345352{
346- QgsSymbolLayerV2List lst;
347- for (QgsSymbolLayerV2List::const_iterator it = mLayers .begin (); it != mLayers .end (); ++it)
348- lst.append ( (*it)->clone () );
349- return new QgsFillSymbolV2 (lst);
353+ return new QgsFillSymbolV2 ( cloneLayers () );
350354}
0 commit comments