Skip to content

Commit 3869a6c

Browse files
committed
Fix loading of composer map preview states after template read. Ticket #5961
1 parent f3edf04 commit 3869a6c

File tree

2 files changed

+37
-17
lines changed

2 files changed

+37
-17
lines changed

src/app/composer/qgscomposer.cpp

+29-17
Original file line numberDiff line numberDiff line change
@@ -1094,23 +1094,8 @@ void QgsComposer::showEvent( QShowEvent* event )
10941094
{
10951095
if ( event->spontaneous() ) //event from the window system
10961096
{
1097-
//go through maps and restore original preview modes (show on demand after loading from project file)
1098-
QMap< QgsComposerMap*, int >::iterator mapIt = mMapsToRestore.begin();
1099-
for ( ; mapIt != mMapsToRestore.end(); ++mapIt )
1100-
{
1101-
mapIt.key()->setPreviewMode(( QgsComposerMap::PreviewMode )( mapIt.value() ) );
1102-
mapIt.key()->cache();
1103-
mapIt.key()->update();
1104-
}
1105-
mMapsToRestore.clear();
1106-
1107-
//create composer picture widget previews
1108-
QList< QgsComposerPictureWidget* >::iterator picIt = mPicturePreviews.begin();
1109-
for ( ; picIt != mPicturePreviews.end(); ++picIt )
1110-
{
1111-
( *picIt )->addStandardDirectoriesToPreview();
1112-
}
1113-
mPicturePreviews.clear();
1097+
restoreComposerMapStates();
1098+
initialiseComposerPicturePreviews();
11141099
}
11151100

11161101
#ifdef Q_WS_MAC
@@ -1505,6 +1490,9 @@ void QgsComposer::cleanupAfterTemplateRead()
15051490
}
15061491
}
15071492
}
1493+
1494+
restoreComposerMapStates();
1495+
initialiseComposerPicturePreviews();
15081496
}
15091497

15101498
void QgsComposer::on_mActionPageSetup_triggered()
@@ -1517,3 +1505,27 @@ void QgsComposer::on_mActionPageSetup_triggered()
15171505
QPageSetupDialog pageSetupDialog( &mPrinter, this );
15181506
pageSetupDialog.exec();
15191507
}
1508+
1509+
void QgsComposer::restoreComposerMapStates()
1510+
{
1511+
//go through maps and restore original preview modes (show on demand after loading from project file)
1512+
QMap< QgsComposerMap*, int >::iterator mapIt = mMapsToRestore.begin();
1513+
for ( ; mapIt != mMapsToRestore.end(); ++mapIt )
1514+
{
1515+
mapIt.key()->setPreviewMode(( QgsComposerMap::PreviewMode )( mapIt.value() ) );
1516+
mapIt.key()->cache();
1517+
mapIt.key()->update();
1518+
}
1519+
mMapsToRestore.clear();
1520+
}
1521+
1522+
void QgsComposer::initialiseComposerPicturePreviews()
1523+
{
1524+
//create composer picture widget previews
1525+
QList< QgsComposerPictureWidget* >::iterator picIt = mPicturePreviews.begin();
1526+
for ( ; picIt != mPicturePreviews.end(); ++picIt )
1527+
{
1528+
( *picIt )->addStandardDirectoriesToPreview();
1529+
}
1530+
mPicturePreviews.clear();
1531+
}

src/app/composer/qgscomposer.h

+8
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,14 @@ class QgsComposer: public QMainWindow, private Ui::QgsComposerBase
289289
//! Removes all the item from the graphics scene and deletes them
290290
void deleteItems();
291291

292+
//! Restores composer map preview states.
293+
//! Initially after reading from xml, states are set to rectangle to achieve faster project loading.
294+
void restoreComposerMapStates();
295+
296+
//! Fills icons into composer picture widgets
297+
//! To make loading from project faster, the previews are generated when the composer becomes visible.
298+
void initialiseComposerPicturePreviews();
299+
292300
/**Composer title*/
293301
QString mTitle;
294302

0 commit comments

Comments
 (0)