Skip to content

Commit c9e05f9

Browse files
committed
Fix #11455 (Crash when setting transparency for WMS layer)
Layer transparency instance was not copied when renderers were cloned.
1 parent 6db04b4 commit c9e05f9

5 files changed

+6
-5
lines changed

src/core/raster/qgsmultibandcolorrenderer.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ QgsRasterInterface * QgsMultiBandColorRenderer::clone() const
5757
}
5858
renderer->setOpacity( mOpacity );
5959
renderer->setAlphaBand( mAlphaBand );
60-
renderer->setRasterTransparency( mRasterTransparency );
60+
renderer->setRasterTransparency( new QgsRasterTransparency( *mRasterTransparency ) );
6161

6262
return renderer;
6363
}

src/core/raster/qgspalettedrasterrenderer.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ QgsRasterInterface * QgsPalettedRasterRenderer::clone() const
5151
QgsPalettedRasterRenderer * renderer = new QgsPalettedRasterRenderer( 0, mBand, rgbArray(), mNColors );
5252
renderer->setOpacity( mOpacity );
5353
renderer->setAlphaBand( mAlphaBand );
54-
renderer->setRasterTransparency( mRasterTransparency );
54+
renderer->setRasterTransparency( new QgsRasterTransparency( *mRasterTransparency ) );
5555
renderer->mLabels = mLabels;
5656
return renderer;
5757
}

src/core/raster/qgssinglebandcolordatarenderer.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
***************************************************************************/
1717

1818
#include "qgssinglebandcolordatarenderer.h"
19+
#include "qgsrastertransparency.h"
1920
#include "qgsrasterviewport.h"
2021
#include <QDomDocument>
2122
#include <QDomElement>
@@ -36,7 +37,7 @@ QgsRasterInterface * QgsSingleBandColorDataRenderer::clone() const
3637
QgsSingleBandColorDataRenderer * renderer = new QgsSingleBandColorDataRenderer( 0, mBand );
3738
renderer->setOpacity( mOpacity );
3839
renderer->setAlphaBand( mAlphaBand );
39-
renderer->setRasterTransparency( mRasterTransparency );
40+
renderer->setRasterTransparency( new QgsRasterTransparency( *mRasterTransparency ) );
4041
return renderer;
4142
}
4243

src/core/raster/qgssinglebandgrayrenderer.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ QgsRasterInterface * QgsSingleBandGrayRenderer::clone() const
3737
QgsSingleBandGrayRenderer * renderer = new QgsSingleBandGrayRenderer( 0, mGrayBand );
3838
renderer->setOpacity( mOpacity );
3939
renderer->setAlphaBand( mAlphaBand );
40-
renderer->setRasterTransparency( mRasterTransparency );
40+
renderer->setRasterTransparency( new QgsRasterTransparency( *mRasterTransparency ) );
4141
renderer->setGradient( mGradient );
4242
if ( mContrastEnhancement )
4343
{

src/core/raster/qgssinglebandpseudocolorrenderer.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ QgsRasterInterface * QgsSingleBandPseudoColorRenderer::clone() const
6363

6464
renderer->setOpacity( mOpacity );
6565
renderer->setAlphaBand( mAlphaBand );
66-
renderer->setRasterTransparency( mRasterTransparency );
66+
renderer->setRasterTransparency( new QgsRasterTransparency( *mRasterTransparency ) );
6767

6868
return renderer;
6969
}

0 commit comments

Comments
 (0)