Fix crash when exporting layout

Fixes #29798
This commit is contained in:
Alessandro Pasotti 2019-05-28 11:21:17 +02:00 committed by Nyall Dawson
parent 9434be7859
commit 3b7c0f8579

View File

@ -385,20 +385,23 @@ void QgsLayoutMultiFrame::handlePageChange()
}
}
//page number of the last item
QgsLayoutFrame *lastFrame = mFrameItems.last();
int lastItemPage = mLayout->pageCollection()->predictPageNumberForPoint( lastFrame->pos() );
for ( int i = lastItemPage + 1; i < mLayout->pageCollection()->pageCount(); ++i )
if ( mFrameItems.count( ) )
{
//copy last frame to current page
std::unique_ptr< QgsLayoutFrame > newFrame = qgis::make_unique< QgsLayoutFrame >( mLayout, this );
//page number of the last item
QgsLayoutFrame *lastFrame = mFrameItems.last();
int lastItemPage = mLayout->pageCollection()->predictPageNumberForPoint( lastFrame->pos() );
newFrame->attemptSetSceneRect( QRectF( lastFrame->pos().x(),
mLayout->pageCollection()->page( i )->pos().y() + lastFrame->pagePos().y(),
lastFrame->rect().width(), lastFrame->rect().height() ) );
lastFrame = newFrame.get();
addFrame( newFrame.release(), false );
for ( int i = lastItemPage + 1; i < mLayout->pageCollection()->pageCount(); ++i )
{
//copy last frame to current page
std::unique_ptr< QgsLayoutFrame > newFrame = qgis::make_unique< QgsLayoutFrame >( mLayout, this );
newFrame->attemptSetSceneRect( QRectF( lastFrame->pos().x(),
mLayout->pageCollection()->page( i )->pos().y() + lastFrame->pagePos().y(),
lastFrame->rect().width(), lastFrame->rect().height() ) );
lastFrame = newFrame.get();
addFrame( newFrame.release(), false );
}
}
recalculateFrameSizes();