2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
SET(CPACK_PACKAGE_VERSION_MAJOR "2")
SET(CPACK_PACKAGE_VERSION_MINOR "8")
SET(CPACK_PACKAGE_VERSION_PATCH "4")
SET(CPACK_PACKAGE_VERSION_PATCH "5")
SET(COMPLETE_VERSION ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH})
SET(RELEASE_NAME "Wien")
IF (POLICY CMP0048) # in CMake 3.0.0+
Expand Down
57 changes: 57 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,60 @@
rldhont <rldhont@gmail.com> 2015-12-18

[BUGFIX] WFS GetCapabilities respons misses <keywords> key

Fixes #13037 WFS GetCapabilities respons misses <keywords> key

Replace KeywordList by Keywords in WFS Getcapabilities and keywords in WCS GetCapabilities.

rldhont <rldhont@gmail.com> 2015-12-15

Dont set content-length header on streamed response. Fixes #13991

Thanks to @AsgerPetersen to help fixing #13991
closes #2582

Juergen E. Fischer <jef@norbit.de> 2015-12-14

debian packaging update (partly reverts 245659f; fixes #13981)

(cherry picked from commit 24a61ff48d16309d4a43fe5e12d7e110984f2655)

rldhont <rldhont@gmail.com> 2015-12-14

[BUGFIX][QGIS Server] Update Layer order from group in GetPrint

Update commit da5e73ef4a4508c4b215dd726380a8a94bd73ada

Juergen E. Fischer <jef@norbit.de> 2015-12-14

dxf export: trim whitespace from layernames

(cherry picked from commit 36267f59350881e10e2eae0aa9f110019a5e8d8c)

Juergen E. Fischer <jef@norbit.de> 2015-12-06

debian packaging update
* sync other branches
* avoid testing and installing twice
* manually merge PR#2524

Juergen E. Fischer <jef@norbit.de> 2015-12-02

sip bindings: fix QgsFeatureIds typedef (fixes missing signal
QgsVectorLayer.featuresDeleted and others; fixes #13740)

(backported from commit b5794b2)

Juergen E. Fischer <jef@norbit.de> 2015-11-29

legend interface: guard layer dereferences (fixes #13899)

(cherry picked from commit 3b2d7173f66ee260021a262167f571eb7ff72788)

Juergen E. Fischer <jef@norbit.de> 2015-11-27

Release of 2.8.4

Juergen E. Fischer <jef@norbit.de> 2015-11-26

release.pl: point releases don't need a new splash
Expand Down
10 changes: 8 additions & 2 deletions debian/changelog
Original file line number Diff line number Diff line change
@@ -1,8 +1,14 @@
qgis (2.8.4) UNRELEASED; urgency=medium
qgis (2.8.5) UNRELEASED; urgency=medium

* Release of 2.8.5

-- Jürgen E. Fischer <jef@norbit.de> Fri, 18 Dec 2015 14:18:20 +0100

qgis (2.8.4) unstable; urgency=medium

* Release of 2.8.4

-- Jürgen E. Fischer <jef@norbit.de> Fri, 27 Nov 2015 12:59:37 +0100
-- Jürgen E. Fischer <jef@norbit.de> Fri, 18 Dec 2015 14:18:20 +0100

qgis (2.8.3-1) unstable; urgency=medium

Expand Down
13 changes: 7 additions & 6 deletions debian/control.in
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ Build-Depends:
bison,
cmake (>= 2.8),
#sid stretch jessie wheezy saucy trusty utopic vivid wily# debhelper (>= 9),
#sid stretch jessie trusty vivid wily# dh-python,
#precise# debhelper (>= 7),
flex,
grass-dev,
Expand All @@ -17,14 +18,14 @@ Build-Depends:
#saucy# libgdal-dev (>= 1.9.0),
#wheezy# libgdal1-dev,
libgeos-dev (>= 3.0.0),
libgsl0-dev,
libgsl-dev | libgsl0-dev,
libpq-dev,
libproj-dev,
libqt4-dev (>= 4.7.0),
libqt4-opengl-dev,
libqtwebkit-dev,
#stretch jessie wheezy# libqwt-dev,
#precise saucy trusty utopic vivid wily stretch sid# libqwt5-qt4-dev,
#precise saucy trusty utopic vivid wily sid# libqwt5-qt4-dev,
libspatialite-dev,
libsqlite3-dev,
libspatialindex-dev,
Expand All @@ -38,7 +39,7 @@ Build-Depends:
#saucy wheezy# python-dev,
#saucy# libpython2.7-dev,
#sid stretch jessie trusty utopic vivid wily# python-all (>= 2.6.6-3~), python-all-dev (>= 2.6.6-3~),
#sid stretch jessie# pyqt4.qsci-dev,
#sid stretch jessie wily# pyqt4.qsci-dev,
#sid stretch jessie trusty utopic vivid wily# python-pyspatialite,
python-sip (>= 4.5.0),
python-sip-dev (>= 4.5.0),
Expand Down Expand Up @@ -220,7 +221,7 @@ Depends:
#saucy# libgdal-dev (>= 1.9.0),
#wheezy# libgdal1-dev,
libgeos-dev (>= 3.0.0),
libgsl0-dev,
libgsl-dev | libgsl0-dev,
libpq-dev,
libproj-dev,
libqgis-core{QGIS_ABI} (= ${binary:Version}),
Expand Down Expand Up @@ -253,8 +254,8 @@ Depends:
qgis (= ${binary:Version}),
${shlibs:Depends},
${misc:Depends}
#grass7#Breaks: qgis-plugin-grass
#grass7#Replaces: qgis-plugin-grass
#grass7#Breaks: qgis-plugin-grass (<< 1:2.8.4)
#grass7#Replaces: qgis-plugin-grass (<< 1:2.8.4)
Description: GRASS plugin for QGIS
QGIS is a Geographic Information System (GIS) which manages, analyzes and
display databases of geographic information.
Expand Down
4 changes: 2 additions & 2 deletions debian/qgis-provider-grass.lintian-overrides
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
qgis-plugin-grass: package-name-doesnt-match-sonames
qgis-plugin-grass: no-symbols-control-file
qgis-provider-grass: package-name-doesnt-match-sonames
qgis-provider-grass: no-symbols-control-file
28 changes: 16 additions & 12 deletions debian/rules
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ DEB_BUILD_MULTIARCH ?= $(shell dpkg-architecture -qDEB_BUILD_MULTIARCH)
QT_PLUGIN_DIR = usr/lib/$(DEB_BUILD_MULTIARCH)/qt4/plugins

DEB_TEST_TARGET ?= Experimental
BUILDDIR ?= debian/build
QGIS_BUILDDIR ?= debian/build

QGIS_VERSION=$(shell dpkg-parsechangelog | sed -ne 's/^Version: \(.*\)-.*/\1/p')
QGIS_VERSION=$(shell dpkg-parsechangelog | sed -ne 's/^Version: \([0-9]\+:\)\?\([^+-]\+\).*$$/\2/p')

ifeq (,$(DISTRIBUTION))
DISTRIBUTION := $(shell dpkg-parsechangelog --format rfc822 | sed -ne "s/^Distribution: //p")
Expand Down Expand Up @@ -77,7 +77,7 @@ ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
MAKEFLAGS += -j$(NUMJOBS)
endif

ifneq (,$(findstring $(DISTRIBUTION),"wheezy jessie sid precise"))
ifneq (,$(findstring $(DISTRIBUTION),"wheezy precise"))
CMAKE_OPTS += -DWITH_PYSPATIALITE=TRUE
endif

Expand All @@ -103,9 +103,6 @@ endif

ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
CMAKE_OPTS += -DCMAKE_BUILD_TYPE=Debug
ifneq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
CMAKE_OPTS += -DENABLE_COVERAGE=TRUE
endif
endif

ifneq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
Expand Down Expand Up @@ -139,6 +136,7 @@ ifneq (,$(findstring profile,$(DEB_BUILD_OPTIONS)))
LDFLAGS += -pg
endif


# multi distribution support:
# - remove lines with applicable excludes
# - remove prefixes with applicable includes
Expand Down Expand Up @@ -179,7 +177,7 @@ cleantemplates:
$(MAKE) -f debian/rules debian/control debian/compat

binary binary-arch binary-indep build build-arch build-indep clean install install-arch install-indep:
dh $@ --with python2 --parallel --builddirectory=$(BUILDDIR)
dh $@ --with python2 --parallel --builddirectory=$(QGIS_BUILDDIR)

override_dh_clean: cleantemplates
dh_clean
Expand All @@ -188,25 +186,27 @@ override_dh_clean: cleantemplates
-$(RM) $(CURDIR)/src/core/qgscontexthelp_texts.cpp
-$(RM) $(CURDIR)/src/core/qgsexpression_texts.cpp

-$(RM) -r $(CURDIR)/$(BUILDDIR)/
-$(RM) -r $(CURDIR)/$(QGIS_BUILDDIR)/

override_dh_auto_configure: templates
dh_auto_configure -- $(CMAKE_OPTS)

override_dh_auto_test: test-stamp

test-stamp:
ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
override_dh_auto_test:
# Code to run the package test suite - and ignore the outcome for now
mkdir -p debian/tmp/locale/
localedef -f UTF-8 -i en_US ./debian/tmp/locale/en_US.UTF-8/
-LOCPATH=$(CURDIR)/debian/tmp/locale/ \
LC_ALL=en_US.UTF-8 \
LD_LIBRARY_PATH=$(CURDIR)/$(BUILDDIR)/output/lib:$(LD_LIBRARY_PATH) \
LD_LIBRARY_PATH=$(CURDIR)/$(QGIS_BUILDDIR)/output/lib:$(LD_LIBRARY_PATH) \
PATH=/usr/sbin:$(PATH) \
$(TESTMAKE) -C $(BUILDDIR) $(DEB_TEST_TARGET)
$(TESTMAKE) -C $(QGIS_BUILDDIR) $(DEB_TEST_TARGET)
else
override_dh_auto_test:
@echo Skipping tests.
endif
touch test-stamp

override_dh_auto_install:
dh_auto_install
Expand Down Expand Up @@ -298,3 +298,7 @@ override_dh_makeshlibs:

override_dh_shlibdeps:
dh_shlibdeps -l/usr/lib/$(GRASS)/lib

override_dh_strip:
dh_strip --dbg-package=qgis-dbg

2 changes: 1 addition & 1 deletion python/core/qgsfeature.sip
Original file line number Diff line number Diff line change
Expand Up @@ -440,4 +440,4 @@ class QgsFeature

}; // class QgsFeature

typedef QSet<QgsFeatureId> QgsFeatureIds;
typedef QSet<qint64> QgsFeatureIds;
26 changes: 22 additions & 4 deletions src/app/legend/qgsapplegendinterface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -75,8 +75,11 @@ void QgsAppLegendInterface::removeGroup( int groupIndex )
parentGroup->removeChildNode( group );
}

void QgsAppLegendInterface::moveLayer( QgsMapLayer * ml, int groupIndex )
void QgsAppLegendInterface::moveLayer( QgsMapLayer *ml, int groupIndex )
{
if ( !ml )
return;

QgsLayerTreeGroup* group = groupIndexToNode( groupIndex );
if ( !group )
return;
Expand Down Expand Up @@ -155,14 +158,20 @@ int QgsAppLegendInterface::groupNodeToIndex( QgsLayerTreeGroup* group )
return _groupNodeToIndex( group, mLayerTreeView->layerTreeModel()->rootGroup(), currentIndex );
}

void QgsAppLegendInterface::setLayerVisible( QgsMapLayer * ml, bool visible )
void QgsAppLegendInterface::setLayerVisible( QgsMapLayer *ml, bool visible )
{
if ( !ml )
return;

if ( QgsLayerTreeLayer* nodeLayer = mLayerTreeView->layerTreeModel()->rootGroup()->findLayer( ml->id() ) )
nodeLayer->setVisible( visible ? Qt::Checked : Qt::Unchecked );
}

void QgsAppLegendInterface::setLayerExpanded( QgsMapLayer * ml, bool expand )
{
if ( !ml )
return;

if ( QgsLayerTreeLayer* nodeLayer = mLayerTreeView->layerTreeModel()->rootGroup()->findLayer( ml->id() ) )
setExpanded( nodeLayer, expand );
}
Expand Down Expand Up @@ -247,17 +256,23 @@ bool QgsAppLegendInterface::isGroupVisible( int groupIndex )
return false;
}

bool QgsAppLegendInterface::isLayerExpanded( QgsMapLayer * ml )
bool QgsAppLegendInterface::isLayerExpanded( QgsMapLayer *ml )
{
if ( !ml )
return false;

if ( QgsLayerTreeLayer* nodeLayer = mLayerTreeView->layerTreeModel()->rootGroup()->findLayer( ml->id() ) )
return nodeLayer->isExpanded();

return false;
}


bool QgsAppLegendInterface::isLayerVisible( QgsMapLayer * ml )
bool QgsAppLegendInterface::isLayerVisible( QgsMapLayer *ml )
{
if ( !ml )
return false;

if ( QgsLayerTreeLayer* nodeLayer = mLayerTreeView->layerTreeModel()->rootGroup()->findLayer( ml->id() ) )
return nodeLayer->isVisible() == Qt::Checked;

Expand All @@ -283,6 +298,9 @@ QList< QgsMapLayer * > QgsAppLegendInterface::layers() const

void QgsAppLegendInterface::refreshLayerSymbology( QgsMapLayer *ml )
{
if ( !ml )
return;

mLayerTreeView->refreshLayerSymbology( ml->id() );
}

Expand Down
2 changes: 1 addition & 1 deletion src/core/dxf/qgsdxfexport.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4050,7 +4050,7 @@ QString QgsDxfExport::dxfLayerName( const QString& name )
layerName.replace( "=", "_" );
layerName.replace( "\'", "_" );

return layerName;
return layerName.trimmed();
}

bool QgsDxfExport::layerIsScaleBasedVisible( const QgsMapLayer* layer ) const
Expand Down
1 change: 1 addition & 0 deletions src/server/qgshttprequesthandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -461,6 +461,7 @@ bool QgsHttpRequestHandler::startGetFeatureResponse( QByteArray* ba, const QStri
format = "text/xml";

setInfoFormat( format );
sendHeaders();
appendBody( *ba );
// Streaming
sendResponse();
Expand Down
42 changes: 30 additions & 12 deletions src/server/qgsserverprojectparser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -420,22 +420,40 @@ void QgsServerProjectParser::serviceCapabilities( QDomElement& parentElement, QD
QDomElement keywordListElem = propertiesElement.firstChildElement( "WMSKeywordList" );
if ( !keywordListElem.isNull() && !keywordListElem.text().isEmpty() )
{
QDomElement wmsKeywordElem = doc.createElement( "KeywordList" );
QDomNodeList keywordList = keywordListElem.elementsByTagName( "value" );
for ( int i = 0; i < keywordList.size(); ++i )
if ( service.compare( "WMS", Qt::CaseInsensitive ) == 0 )
{
QDomElement keywordElem = doc.createElement( "Keyword" );
QDomText keywordText = doc.createTextNode( keywordList.at( i ).toElement().text() );
keywordElem.appendChild( keywordText );
if ( sia2045 )
QDomElement wmsKeywordElem = doc.createElement( "KeywordList" );
QDomNodeList keywordList = keywordListElem.elementsByTagName( "value" );
for ( int i = 0; i < keywordList.size(); ++i )
{
keywordElem.setAttribute( "vocabulary", "SIA_Geo405" );
QDomElement keywordElem = doc.createElement( "Keyword" );
QDomText keywordText = doc.createTextNode( keywordList.at( i ).toElement().text() );
keywordElem.appendChild( keywordText );
if ( sia2045 )
{
keywordElem.setAttribute( "vocabulary", "SIA_Geo405" );
}
wmsKeywordElem.appendChild( keywordElem );
}
wmsKeywordElem.appendChild( keywordElem );
}

if ( keywordList.size() > 0 )
if ( keywordList.size() > 0 )
{
serviceElem.appendChild( wmsKeywordElem );
}
}
else
{
QDomNodeList keywordNodeList = keywordListElem.elementsByTagName( "value" );
QStringList keywordList;
for ( int i = 0; i < keywordNodeList.size(); ++i )
{
keywordList.push_back( keywordNodeList.at( i ).toElement().text() );
}
QDomElement wmsKeywordElem = doc.createElement( "Keywords" );
if ( service.compare( "WCS", Qt::CaseInsensitive ) == 0 )
wmsKeywordElem = doc.createElement( "keywords" );
QDomText keywordText = doc.createTextNode( keywordList.join( ", " ) );
wmsKeywordElem.appendChild( keywordText );
serviceElem.appendChild( wmsKeywordElem );
}
}
Expand Down Expand Up @@ -1068,7 +1086,7 @@ QSet<QString> QgsServerProjectParser::findRestrictedLayers() const
}
}
}

// wmsLayerRestrictionValues contains LayerIDs
if ( mUseLayerIDs )
{
Expand Down
2 changes: 1 addition & 1 deletion src/server/qgswmsconfigparser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ QgsComposition* QgsWMSConfigParser::createPrintComposition( const QString& compo

QList<QgsMapLayer*> layerList = mapLayerFromStyle( wmsLayer, styleName, allowCaching );
int listIndex;
for ( listIndex = layerList.size() - 1; listIndex >= 0; listIndex-- )
for ( listIndex = 0; listIndex < layerList.size(); listIndex++ )
{
QgsMapLayer* layer = layerList.at( listIndex );
if ( layer )
Expand Down