Skip to content

Commit e7ab7a1

Browse files
marcomach0
authored andcommitted
Refresh map list in composer table widget in showEvent. Ticket #4496
1 parent 278679b commit e7ab7a1

File tree

2 files changed

+42
-14
lines changed

2 files changed

+42
-14
lines changed

src/app/composer/qgscomposertablewidget.cpp

Lines changed: 38 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,35 @@ QgsComposerTableWidget::QgsComposerTableWidget( QgsComposerAttributeTable* table
4747
}
4848
}
4949

50-
//insert composer maps into combo
51-
mLayerComboBox->blockSignals( true );
50+
refreshMapComboBox();
51+
52+
updateGuiElements();
53+
on_mComposerMapComboBox_activated( mComposerMapComboBox->currentIndex() );
54+
55+
if ( mComposerTable )
56+
{
57+
QObject::connect( mComposerTable, SIGNAL( maximumNumerOfFeaturesChanged( int ) ), this, SLOT( setMaximumNumberOfFeatures( int ) ) );
58+
QObject::connect( mComposerTable, SIGNAL( itemChanged ), this, SLOT( updateGuiElements() ) );
59+
}
60+
}
61+
62+
QgsComposerTableWidget::~QgsComposerTableWidget()
63+
{
64+
65+
}
66+
67+
void QgsComposerTableWidget::showEvent( QShowEvent* event )
68+
{
69+
refreshMapComboBox();
70+
}
71+
72+
void QgsComposerTableWidget::refreshMapComboBox()
73+
{
74+
//save the current entry in case it is still present after refresh
75+
QString saveCurrentComboText = mComposerMapComboBox->currentText();
76+
77+
mComposerMapComboBox->blockSignals( true );
78+
mComposerMapComboBox->clear();
5279
if ( mComposerTable )
5380
{
5481
const QgsComposition* tableComposition = mComposerTable->composition();
@@ -63,21 +90,18 @@ QgsComposerTableWidget::QgsComposerTableWidget( QgsComposerAttributeTable* table
6390
}
6491
}
6592
}
66-
mLayerComboBox->blockSignals( false );
93+
mComposerMapComboBox->blockSignals( false );
6794

68-
updateGuiElements();
69-
on_mComposerMapComboBox_activated( mComposerMapComboBox->currentIndex() );
70-
71-
if ( mComposerTable )
95+
if ( mComposerMapComboBox->findText( saveCurrentComboText ) == -1 )
7296
{
73-
QObject::connect( mComposerTable, SIGNAL( maximumNumerOfFeaturesChanged( int ) ), this, SLOT( setMaximumNumberOfFeatures( int ) ) );
74-
QObject::connect( mComposerTable, SIGNAL( itemChanged ), this, SLOT( updateGuiElements() ) );
97+
//the former entry is no longer present. Inform the scalebar about the changed composer map
98+
on_mComposerMapComboBox_activated( mComposerMapComboBox->currentIndex() );
99+
}
100+
else
101+
{
102+
//the former entry is still present. Make it the current entry again
103+
mComposerMapComboBox->setCurrentIndex( mComposerMapComboBox->findText( saveCurrentComboText ) );
75104
}
76-
}
77-
78-
QgsComposerTableWidget::~QgsComposerTableWidget()
79-
{
80-
81105
}
82106

83107
void QgsComposerTableWidget::on_mLayerComboBox_currentIndexChanged( int index )

src/app/composer/qgscomposertablewidget.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,15 @@ class QgsComposerTableWidget: public QWidget, private Ui::QgsComposerTableWidget
2929
QgsComposerTableWidget( QgsComposerAttributeTable* table );
3030
~QgsComposerTableWidget();
3131

32+
protected:
33+
void showEvent( QShowEvent * event );
34+
3235
private:
3336
QgsComposerAttributeTable* mComposerTable;
3437

3538
/**Blocks / unblocks the signals of all GUI elements*/
3639
void blockAllSignals( bool b );
40+
void refreshMapComboBox();
3741

3842
private slots:
3943
void on_mLayerComboBox_currentIndexChanged( int index );

0 commit comments

Comments
 (0)