Skip to content

Commit f53f468

Browse files
committed
Disconnect itemChanged signal for composer scalebar if scalebar widget does the change
1 parent 778e7d7 commit f53f468

File tree

2 files changed

+50
-4
lines changed

2 files changed

+50
-4
lines changed

src/app/composer/qgscomposerscalebarwidget.cpp

Lines changed: 47 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,7 @@
2525
QgsComposerScaleBarWidget::QgsComposerScaleBarWidget( QgsComposerScaleBar* scaleBar ): QWidget(), mComposerScaleBar( scaleBar )
2626
{
2727
setupUi( this );
28-
if ( scaleBar )
29-
{
30-
QObject::connect( scaleBar, SIGNAL( itemChanged() ), this, SLOT( setGuiElements() ) );
31-
}
28+
connectUpdateSignal();
3229

3330
//add widget for general composer item properties
3431
QgsComposerItemWidget* itemPropertiesWidget = new QgsComposerItemWidget( this, scaleBar );
@@ -147,8 +144,10 @@ void QgsComposerScaleBarWidget::on_mMapComboBox_activated( const QString& text )
147144

148145
//set it to scale bar
149146
mComposerScaleBar->beginCommand( tr( "Scalebar map changed" ) );
147+
disconnectUpdateSignal();
150148
mComposerScaleBar->setComposerMap( composerMap );
151149
mComposerScaleBar->update();
150+
connectUpdateSignal();
152151
mComposerScaleBar->endCommand();
153152
}
154153

@@ -204,10 +203,12 @@ void QgsComposerScaleBarWidget::on_mLineWidthSpinBox_valueChanged( double d )
204203
}
205204

206205
mComposerScaleBar->beginCommand( tr( "Scalebar line width" ), QgsComposerMergeCommand::ScaleBarLineWidth );
206+
disconnectUpdateSignal();
207207
QPen newPen( QColor( 0, 0, 0 ) );
208208
newPen.setWidthF( d );
209209
mComposerScaleBar->setPen( newPen );
210210
mComposerScaleBar->update();
211+
connectUpdateSignal();
211212
mComposerScaleBar->endCommand();
212213
}
213214

@@ -219,8 +220,10 @@ void QgsComposerScaleBarWidget::on_mSegmentSizeSpinBox_valueChanged( double d )
219220
}
220221

221222
mComposerScaleBar->beginCommand( tr( "Scalebar segment size" ), QgsComposerMergeCommand::ScaleBarSegmentSize );
223+
disconnectUpdateSignal();
222224
mComposerScaleBar->setNumUnitsPerSegment( d );
223225
mComposerScaleBar->update();
226+
connectUpdateSignal();
224227
mComposerScaleBar->endCommand();
225228
}
226229

@@ -232,8 +235,10 @@ void QgsComposerScaleBarWidget::on_mSegmentsLeftSpinBox_valueChanged( int i )
232235
}
233236

234237
mComposerScaleBar->beginCommand( tr( "Scalebar segments left" ), QgsComposerMergeCommand::ScaleBarSegmentsLeft );
238+
disconnectUpdateSignal();
235239
mComposerScaleBar->setNumSegmentsLeft( i );
236240
mComposerScaleBar->update();
241+
connectUpdateSignal();
237242
mComposerScaleBar->endCommand();
238243
}
239244

@@ -245,8 +250,10 @@ void QgsComposerScaleBarWidget::on_mNumberOfSegmentsSpinBox_valueChanged( int i
245250
}
246251

247252
mComposerScaleBar->beginCommand( tr( "Scalebar n segments" ), QgsComposerMergeCommand::ScaleBarNSegments );
253+
disconnectUpdateSignal();
248254
mComposerScaleBar->setNumSegments( i );
249255
mComposerScaleBar->update();
256+
connectUpdateSignal();
250257
mComposerScaleBar->endCommand();
251258
}
252259

@@ -257,8 +264,10 @@ void QgsComposerScaleBarWidget::on_mHeightSpinBox_valueChanged( int i )
257264
return;
258265
}
259266
mComposerScaleBar->beginCommand( tr( "Scalebar height changed" ), QgsComposerMergeCommand::ScaleBarHeight );
267+
disconnectUpdateSignal();
260268
mComposerScaleBar->setHeight( i );
261269
mComposerScaleBar->update();
270+
connectUpdateSignal();
262271
mComposerScaleBar->endCommand();
263272
}
264273

@@ -280,7 +289,9 @@ void QgsComposerScaleBarWidget::on_mFontButton_clicked()
280289
if ( dialogAccepted )
281290
{
282291
mComposerScaleBar->beginCommand( tr( "Scalebar font changed" ) );
292+
disconnectUpdateSignal();
283293
mComposerScaleBar->setFont( newFont );
294+
connectUpdateSignal();
284295
mComposerScaleBar->endCommand();
285296
}
286297
mComposerScaleBar->update();
@@ -302,9 +313,11 @@ void QgsComposerScaleBarWidget::on_mColorPushButton_clicked()
302313
}
303314

304315
mComposerScaleBar->beginCommand( tr( "Scalebar color changed" ) );
316+
disconnectUpdateSignal();
305317
QBrush newBrush( newColor );
306318
mComposerScaleBar->setBrush( newBrush );
307319
mComposerScaleBar->update();
320+
connectUpdateSignal();
308321
mComposerScaleBar->endCommand();
309322
}
310323

@@ -316,8 +329,10 @@ void QgsComposerScaleBarWidget::on_mUnitLabelLineEdit_textChanged( const QString
316329
}
317330

318331
mComposerScaleBar->beginCommand( tr( "Scalebar unit text" ), QgsComposerMergeCommand::ScaleBarUnitText );
332+
disconnectUpdateSignal();
319333
mComposerScaleBar->setUnitLabeling( text );
320334
mComposerScaleBar->update();
335+
connectUpdateSignal();
321336
mComposerScaleBar->endCommand();
322337
}
323338

@@ -329,8 +344,10 @@ void QgsComposerScaleBarWidget::on_mMapUnitsPerBarUnitSpinBox_valueChanged( doub
329344
}
330345

331346
mComposerScaleBar->beginCommand( tr( "Scalebar map units per segment" ), QgsComposerMergeCommand::ScaleBarMapUnitsSegment );
347+
disconnectUpdateSignal();
332348
mComposerScaleBar->setNumMapUnitsPerScaleBarUnit( d );
333349
mComposerScaleBar->update();
350+
connectUpdateSignal();
334351
mComposerScaleBar->endCommand();
335352
}
336353

@@ -342,6 +359,7 @@ void QgsComposerScaleBarWidget::on_mStyleComboBox_currentIndexChanged( const QSt
342359
}
343360

344361
mComposerScaleBar->beginCommand( tr( "Scalebar style changed" ) );
362+
disconnectUpdateSignal();
345363
QString untranslatedStyleName;
346364
if ( text == tr( "Single Box" ) )
347365
{
@@ -373,6 +391,7 @@ void QgsComposerScaleBarWidget::on_mStyleComboBox_currentIndexChanged( const QSt
373391
}
374392
mComposerScaleBar->setStyle( untranslatedStyleName );
375393
mComposerScaleBar->update();
394+
connectUpdateSignal();
376395
mComposerScaleBar->endCommand();
377396
}
378397

@@ -384,8 +403,10 @@ void QgsComposerScaleBarWidget::on_mLabelBarSpaceSpinBox_valueChanged( double d
384403
}
385404

386405
mComposerScaleBar->beginCommand( tr( "Scalebar label bar space" ), QgsComposerMergeCommand::ScaleBarLabelBarSize );
406+
disconnectUpdateSignal();
387407
mComposerScaleBar->setLabelBarSpace( d );
388408
mComposerScaleBar->update();
409+
connectUpdateSignal();
389410
mComposerScaleBar->endCommand();
390411
}
391412

@@ -397,8 +418,10 @@ void QgsComposerScaleBarWidget::on_mBoxSizeSpinBox_valueChanged( double d )
397418
}
398419

399420
mComposerScaleBar->beginCommand( tr( "Scalebar box content space" ), QgsComposerMergeCommand::ScaleBarBoxContentSpace );
421+
disconnectUpdateSignal();
400422
mComposerScaleBar->setBoxContentSpace( d );
401423
mComposerScaleBar->update();
424+
connectUpdateSignal();
402425
mComposerScaleBar->endCommand();
403426
}
404427

@@ -410,7 +433,9 @@ void QgsComposerScaleBarWidget::on_mAlignmentComboBox_currentIndexChanged( int i
410433
}
411434

412435
mComposerScaleBar->beginCommand( tr( "Scalebar alignment" ) );
436+
disconnectUpdateSignal();
413437
mComposerScaleBar->setAlignment(( QgsComposerScaleBar::Alignment ) index );
438+
connectUpdateSignal();
414439
mComposerScaleBar->endCommand();
415440
}
416441

@@ -428,8 +453,10 @@ void QgsComposerScaleBarWidget::on_mUnitsComboBox_currentIndexChanged( int index
428453
}
429454

430455
mComposerScaleBar->beginCommand( tr( "Scalebar unit changed" ) );
456+
disconnectUpdateSignal();
431457
mComposerScaleBar->setUnits(( QgsComposerScaleBar::ScaleBarUnits )unitData.toInt() );
432458
mComposerScaleBar->update();
459+
connectUpdateSignal();
433460
mComposerScaleBar->endCommand();
434461
}
435462

@@ -449,3 +476,19 @@ void QgsComposerScaleBarWidget::blockMemberSignals( bool block )
449476
mAlignmentComboBox->blockSignals( block );
450477
mUnitsComboBox->blockSignals( block );
451478
}
479+
480+
void QgsComposerScaleBarWidget::connectUpdateSignal()
481+
{
482+
if ( mComposerScaleBar )
483+
{
484+
QObject::connect( mComposerScaleBar, SIGNAL( itemChanged() ), this, SLOT( setGuiElements() ) );
485+
}
486+
}
487+
488+
void QgsComposerScaleBarWidget::disconnectUpdateSignal()
489+
{
490+
if ( mComposerScaleBar )
491+
{
492+
QObject::disconnect( mComposerScaleBar, SIGNAL( itemChanged() ), this, SLOT( setGuiElements() ) );
493+
}
494+
}

src/app/composer/qgscomposerscalebarwidget.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,9 @@ class QgsComposerScaleBarWidget: public QWidget, private Ui::QgsComposerScaleBar
6161
void refreshMapComboBox();
6262
/**Enables/disables the signals of the input gui elements*/
6363
void blockMemberSignals( bool enable );
64+
65+
void connectUpdateSignal();
66+
void disconnectUpdateSignal();
6467
};
6568

6669
#endif //QGSCOMPOSERSCALEBARWIDGET_H

0 commit comments

Comments
 (0)