Skip to content

Commit ae34158

Browse files
committed
Don't open multiple composer manager windows, don't hide the composer manager when showing/duplicating a composer
1 parent c8575e0 commit ae34158

File tree

3 files changed

+36
-11
lines changed

3 files changed

+36
-11
lines changed

src/app/composer/qgscomposermanager.cpp

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,8 @@ QgsComposerManager::~QgsComposerManager()
101101

102102
void QgsComposerManager::refreshComposers()
103103
{
104+
QString selName = mComposerListWidget->currentItem() ? mComposerListWidget->currentItem()->text() : "";
105+
104106
mItemComposerMap.clear();
105107
mComposerListWidget->clear();
106108

@@ -113,6 +115,16 @@ void QgsComposerManager::refreshComposers()
113115
mItemComposerMap.insert( item, *it );
114116
}
115117
mComposerListWidget->sortItems();
118+
119+
// Restore selection
120+
if ( !selName.isEmpty() )
121+
{
122+
QList<QListWidgetItem*> items = mComposerListWidget->findItems( selName, Qt::MatchExactly );
123+
if ( !items.isEmpty() )
124+
{
125+
mComposerListWidget->setCurrentItem( items.first() );
126+
}
127+
}
116128
}
117129

118130
QMap<QString, QString> QgsComposerManager::defaultTemplates( bool fromUser ) const
@@ -299,7 +311,6 @@ void QgsComposerManager::show_clicked()
299311
{
300312
// extra activation steps for Windows
301313
bool shown = c->isVisible();
302-
hide();
303314

304315
c->activate();
305316

@@ -344,7 +355,6 @@ void QgsComposerManager::show_clicked()
344355
c->activate();
345356
}
346357
#endif //0
347-
close();
348358
}
349359

350360
void QgsComposerManager::duplicate_clicked()
@@ -388,11 +398,7 @@ void QgsComposerManager::duplicate_clicked()
388398
if ( newComposer )
389399
{
390400
// extra activation steps for Windows
391-
hide();
392401
newComposer->activate();
393-
394-
// no need to add new composer to list widget, if just closing this->exec();
395-
close();
396402
}
397403
else
398404
{

src/app/qgisapp.cpp

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -452,6 +452,7 @@ QgisApp::QgisApp( QSplashScreen *splash, bool restorePlugins, QWidget * parent,
452452
#ifdef Q_OS_WIN
453453
, mSkipNextContextMenuEvent( 0 )
454454
#endif
455+
, mComposerManager( 0 )
455456
, mpGpsWidget( 0 )
456457
{
457458
if ( smInstance )
@@ -776,6 +777,7 @@ QgisApp::QgisApp( )
776777
, mInternalClipboard( 0 )
777778
, mpMaptip( 0 )
778779
, mPythonUtils( 0 )
780+
, mComposerManager( 0 )
779781
, mpGpsWidget( 0 )
780782
{
781783
smInstance = this;
@@ -845,6 +847,8 @@ QgisApp::~QgisApp()
845847

846848
delete mOverviewMapCursor;
847849

850+
delete mComposerManager;
851+
848852
deletePrintComposers();
849853
removeAnnotationItems();
850854

@@ -3919,11 +3923,20 @@ void QgisApp::newPrintComposer()
39193923

39203924
void QgisApp::showComposerManager()
39213925
{
3922-
QgsComposerManager* m = new QgsComposerManager( this, Qt::Window );
3923-
connect( m, SIGNAL( finished( int ) ), m, SLOT( deleteLater() ) );
3924-
m->show();
3925-
m->raise();
3926-
m->activateWindow();
3926+
if ( !mComposerManager )
3927+
{
3928+
mComposerManager = new QgsComposerManager( this, Qt::Window );
3929+
connect( mComposerManager, SIGNAL( finished( int ) ), this, SLOT( deleteComposerManager() ) );
3930+
}
3931+
mComposerManager->show();
3932+
mComposerManager->raise();
3933+
mComposerManager->activateWindow();
3934+
}
3935+
3936+
void QgisApp::deleteComposerManager()
3937+
{
3938+
delete mComposerManager;
3939+
mComposerManager = 0;
39273940
}
39283941

39293942
void QgisApp::saveMapAsImage()

src/app/qgisapp.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ class QgsAnnotationItem;
4242
class QgsClipboard;
4343
class QgsComposer;
4444
class QgsComposerView;
45+
class QgsComposerManager;
4546
class QgsContrastEnhancement;
4647
class QgsGeometry;
4748
class QgsFeature;
@@ -1172,6 +1173,9 @@ class APP_EXPORT QgisApp : public QMainWindow, private Ui::MainWindow
11721173
//! catch MapCanvas keyPress event so we can check if selected feature collection must be deleted
11731174
void mapCanvas_keyPressed( QKeyEvent *e );
11741175

1176+
//! Deletes the active QgsComposerManager instance
1177+
void deleteComposerManager();
1178+
11751179
signals:
11761180
/** emitted when a key is pressed and we want non widget sublasses to be able
11771181
to pick up on this (e.g. maplayer) */
@@ -1513,6 +1517,8 @@ class APP_EXPORT QgisApp : public QMainWindow, private Ui::MainWindow
15131517

15141518
QgsPluginManager* mPluginManager;
15151519

1520+
QgsComposerManager* mComposerManager;
1521+
15161522
//! Persistent tile scale slider
15171523
QgsTileScaleWidget * mpTileScaleWidget;
15181524

0 commit comments

Comments
 (0)