Skip to content

Commit

Permalink
fix backward compatibility and fix leak
Browse files Browse the repository at this point in the history
  • Loading branch information
3nids committed May 6, 2020
1 parent 03f4cb9 commit 525661c
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 10 deletions.
10 changes: 6 additions & 4 deletions src/core/layout/qgscompositionconverter.cpp
Expand Up @@ -1428,7 +1428,11 @@ bool QgsCompositionConverter::readTableXml( QgsLayoutItemAttributeTable *layoutI
layoutItem->setWrapBehavior( static_cast<QgsLayoutTable::WrapBehavior>( itemElem.attribute( QStringLiteral( "wrapBehavior" ), QStringLiteral( "0" ) ).toInt() ) ); layoutItem->setWrapBehavior( static_cast<QgsLayoutTable::WrapBehavior>( itemElem.attribute( QStringLiteral( "wrapBehavior" ), QStringLiteral( "0" ) ).toInt() ) );


//restore column specifications //restore column specifications
qDeleteAll( layoutItem->mColumns );
layoutItem->mColumns.clear(); layoutItem->mColumns.clear();
qDeleteAll( layoutItem->mSortColumns );
layoutItem->mSortColumns.clear();

QDomNodeList columnsList = itemElem.elementsByTagName( QStringLiteral( "displayColumns" ) ); QDomNodeList columnsList = itemElem.elementsByTagName( QStringLiteral( "displayColumns" ) );
if ( !columnsList.isEmpty() ) if ( !columnsList.isEmpty() )
{ {
Expand Down Expand Up @@ -1464,12 +1468,10 @@ bool QgsCompositionConverter::readTableXml( QgsLayoutItemAttributeTable *layoutI
layoutItem->mColumns.append( column ); layoutItem->mColumns.append( column );


// sorting columns are now (QGIS 3.14+) handled in a dedicated list // sorting columns are now (QGIS 3.14+) handled in a dedicated list
QVector<QgsLayoutTableColumn *> sortColumns;
Q_NOWARN_DEPRECATED_PUSH Q_NOWARN_DEPRECATED_PUSH
std::copy_if( layoutItem->mColumns.begin(), layoutItem->mColumns.end(), std::back_inserter( sortColumns ), []( QgsLayoutTableColumn * col ) {return col->sortByRank() > 0;} ); std::copy_if( layoutItem->mColumns.begin(), layoutItem->mColumns.end(), std::back_inserter( layoutItem->mSortColumns ), []( QgsLayoutTableColumn * col ) {return col->sortByRank() > 0;} );
std::sort( sortColumns.begin(), sortColumns.end(), []( QgsLayoutTableColumn * a, QgsLayoutTableColumn * b ) {return a->sortByRank() < b->sortByRank();} ); std::sort( layoutItem->mSortColumns.begin(), layoutItem->mSortColumns.end(), []( QgsLayoutTableColumn * a, QgsLayoutTableColumn * b ) {return a->sortByRank() < b->sortByRank();} );
Q_NOWARN_DEPRECATED_POP Q_NOWARN_DEPRECATED_POP
// TODO remove comment: layoutItem->mSortColumns = sortColumns;
} }
} }


Expand Down
10 changes: 4 additions & 6 deletions src/core/layout/qgslayouttable.cpp
Expand Up @@ -180,9 +180,9 @@ bool QgsLayoutTable::readPropertiesFromElement( const QDomElement &itemElem, con
qDeleteAll( mSortColumns ); qDeleteAll( mSortColumns );
mSortColumns.clear(); mSortColumns.clear();
QDomNodeList sortColumnsList = itemElem.elementsByTagName( QStringLiteral( "sortColumns" ) ); QDomNodeList sortColumnsList = itemElem.elementsByTagName( QStringLiteral( "sortColumns" ) );
if ( !columnsList.isEmpty() ) if ( !sortColumnsList.isEmpty() )
{ {
QDomElement columnsElem = columnsList.at( 0 ).toElement(); QDomElement columnsElem = sortColumnsList.at( 0 ).toElement();
QDomNodeList columnEntryList = columnsElem.elementsByTagName( QStringLiteral( "column" ) ); QDomNodeList columnEntryList = columnsElem.elementsByTagName( QStringLiteral( "column" ) );
for ( int i = 0; i < columnEntryList.size(); ++i ) for ( int i = 0; i < columnEntryList.size(); ++i )
{ {
Expand All @@ -195,12 +195,10 @@ bool QgsLayoutTable::readPropertiesFromElement( const QDomElement &itemElem, con
else else
{ {
// backward compatibility for QGIS < 3.14 // backward compatibility for QGIS < 3.14
QVector<QgsLayoutTableColumn *> sortColumns;
Q_NOWARN_DEPRECATED_PUSH Q_NOWARN_DEPRECATED_PUSH
std::copy_if( mColumns.begin(), mColumns.end(), std::back_inserter( sortColumns ), []( QgsLayoutTableColumn * col ) {return col->sortByRank() > 0;} ); std::copy_if( mColumns.begin(), mColumns.end(), std::back_inserter( mSortColumns ), []( QgsLayoutTableColumn * col ) {return col->sortByRank() > 0;} );
std::sort( sortColumns.begin(), sortColumns.end(), []( QgsLayoutTableColumn * a, QgsLayoutTableColumn * b ) {return a->sortByRank() < b->sortByRank();} ); std::sort( mSortColumns.begin(), mSortColumns.end(), []( QgsLayoutTableColumn * a, QgsLayoutTableColumn * b ) {return a->sortByRank() < b->sortByRank();} );
Q_NOWARN_DEPRECATED_POP Q_NOWARN_DEPRECATED_POP
// TODO remove comment: mSortColumns = sortColumns;
} }


//restore cell styles //restore cell styles
Expand Down

0 comments on commit 525661c

Please sign in to comment.