diff --git a/src/mapserver/qgsconfigparser.cpp b/src/mapserver/qgsconfigparser.cpp index a189270b14a..a7262104f1f 100644 --- a/src/mapserver/qgsconfigparser.cpp +++ b/src/mapserver/qgsconfigparser.cpp @@ -33,6 +33,7 @@ QgsConfigParser::QgsConfigParser() , mOutputUnits( QgsMapRenderer::Millimeters ) { setDefaultLegendSettings(); + mSelectionColor = QColor( 255, 255, 0 ); //yellow opaque is default selection color } QgsConfigParser::~QgsConfigParser() diff --git a/src/mapserver/qgsconfigparser.h b/src/mapserver/qgsconfigparser.h index 81b64533499..bea118d4889 100644 --- a/src/mapserver/qgsconfigparser.h +++ b/src/mapserver/qgsconfigparser.h @@ -19,6 +19,7 @@ #define QGSCONFIGPARSER_H #include "qgsmaprenderer.h" +#include #include #include #include @@ -113,6 +114,9 @@ class QgsConfigParser /**Appends service metadata to the capabilities document*/ virtual void serviceCapabilities( QDomElement& parentElement, QDomDocument& doc ) const; + QColor selectionColor() const { return mSelectionColor; } + void setSelectionColor( const QColor& c ) { mSelectionColor = c; } + protected: /**Parser to forward not resolved requests (e.g. SLD parser based on user request might have a fallback parser with admin configuration)*/ QgsConfigParser* mFallbackParser; @@ -150,6 +154,8 @@ class QgsConfigParser double mLegendSymbolWidth; double mLegendSymbolHeight; + QColor mSelectionColor; + /**Transforms layer extent to epsg 4326 and appends ExGeographicBoundingBox and BoundingBox elements to the layer element*/ void appendLayerBoundingBoxes( QDomElement& layerElem, QDomDocument& doc, const QgsRectangle& layerExtent, const QgsCoordinateReferenceSystem& layerCRS ) const; diff --git a/src/mapserver/qgsprojectparser.cpp b/src/mapserver/qgsprojectparser.cpp index c9cbc578db1..e1f1e2c8acd 100644 --- a/src/mapserver/qgsprojectparser.cpp +++ b/src/mapserver/qgsprojectparser.cpp @@ -1449,7 +1449,7 @@ void QgsProjectParser::setSelectionColor() } } - QgsRenderer::setSelectionColor( QColor( red, green, blue, alpha ) ); + mSelectionColor = QColor( red, green, blue, alpha ); } const QgsCoordinateReferenceSystem& QgsProjectParser::projectCRS() const diff --git a/src/mapserver/qgsprojectparser.h b/src/mapserver/qgsprojectparser.h index 65e5384f828..6f44a662ba0 100644 --- a/src/mapserver/qgsprojectparser.h +++ b/src/mapserver/qgsprojectparser.h @@ -154,14 +154,14 @@ class QgsProjectParser: public QgsConfigParser /**Converts a (possibly relative) path to absolute*/ QString convertToAbsolutePath( const QString& file ) const; - /**Sets global selection color from the project or yellow if not defined in project*/ - void setSelectionColor(); - /**Returns mapcanvas output CRS from project file*/ const QgsCoordinateReferenceSystem& projectCRS() const; /**Returns bbox of layer in project CRS (or empty rectangle in case of error)*/ QgsRectangle layerBoundingBoxInProjectCRS( const QDomElement& layerElem ) const; + + /**Reads selection color from project and sets it to QgsConfigParser::mSelectionColor*/ + void setSelectionColor(); }; #endif // QGSPROJECTPARSER_H diff --git a/src/mapserver/qgswmsserver.cpp b/src/mapserver/qgswmsserver.cpp index e133259a1f5..7d6f825a815 100644 --- a/src/mapserver/qgswmsserver.cpp +++ b/src/mapserver/qgswmsserver.cpp @@ -966,6 +966,9 @@ QImage* QgsWMSServer::initializeRendering( QStringList& layersList, QStringList& QgsDebugMsg( QString( "Number of layers to be rendered. %1" ).arg( layerIdList.count() ) ); #endif mMapRenderer->setLayerSet( layerIdList ); + + //set selection color prior to each render to avoid problems with caching (selection color is a global property of QgsRenderer) + QgsRenderer::setSelectionColor( mConfigParser->selectionColor() ); return theImage; }