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() ) );

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

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

// sorting columns are now (QGIS 3.14+) handled in a dedicated list
QVector<QgsLayoutTableColumn *> sortColumns;
Q_NOWARN_DEPRECATED_PUSH
std::copy_if( layoutItem->mColumns.begin(), layoutItem->mColumns.end(), std::back_inserter( sortColumns ), []( QgsLayoutTableColumn * col ) {return col->sortByRank() > 0;} );
std::sort( sortColumns.begin(), sortColumns.end(), []( QgsLayoutTableColumn * a, QgsLayoutTableColumn * b ) {return a->sortByRank() < b->sortByRank();} );
std::copy_if( layoutItem->mColumns.begin(), layoutItem->mColumns.end(), std::back_inserter( layoutItem->mSortColumns ), []( QgsLayoutTableColumn * col ) {return col->sortByRank() > 0;} );
std::sort( layoutItem->mSortColumns.begin(), layoutItem->mSortColumns.end(), []( QgsLayoutTableColumn * a, QgsLayoutTableColumn * b ) {return a->sortByRank() < b->sortByRank();} );
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 );
mSortColumns.clear();
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" ) );
for ( int i = 0; i < columnEntryList.size(); ++i )
{
Expand All @@ -195,12 +195,10 @@ bool QgsLayoutTable::readPropertiesFromElement( const QDomElement &itemElem, con
else
{
// backward compatibility for QGIS < 3.14
QVector<QgsLayoutTableColumn *> sortColumns;
Q_NOWARN_DEPRECATED_PUSH
std::copy_if( mColumns.begin(), mColumns.end(), std::back_inserter( sortColumns ), []( QgsLayoutTableColumn * col ) {return col->sortByRank() > 0;} );
std::sort( sortColumns.begin(), sortColumns.end(), []( QgsLayoutTableColumn * a, QgsLayoutTableColumn * b ) {return a->sortByRank() < b->sortByRank();} );
std::copy_if( mColumns.begin(), mColumns.end(), std::back_inserter( mSortColumns ), []( QgsLayoutTableColumn * col ) {return col->sortByRank() > 0;} );
std::sort( mSortColumns.begin(), mSortColumns.end(), []( QgsLayoutTableColumn * a, QgsLayoutTableColumn * b ) {return a->sortByRank() < b->sortByRank();} );
Q_NOWARN_DEPRECATED_POP
// TODO remove comment: mSortColumns = sortColumns;
}

//restore cell styles
Expand Down

0 comments on commit 525661c

Please sign in to comment.