Skip to content

Commit cbeacb7

Browse files
committedJun 2, 2015
Advanced digitizing: Create new MessageBarItem for every item shown
The QgsMessageBar takes ownership Fix #12849
1 parent a9aade2 commit cbeacb7

File tree

2 files changed

+13
-13
lines changed

2 files changed

+13
-13
lines changed
 

‎src/app/qgsadvanceddigitizingdockwidget.cpp

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ QgsAdvancedDigitizingDockWidget::QgsAdvancedDigitizingDockWidget( QgsMapCanvas*
9292
, mCadPointList( QList<QgsPoint>() )
9393
, mSnappedToVertex( false )
9494
, mSnappedSegment( QList<QgsPoint>() )
95+
, mErrorMessage( 0 )
9596
{
9697
setupUi( this );
9798

@@ -136,11 +137,6 @@ QgsAdvancedDigitizingDockWidget::QgsAdvancedDigitizingDockWidget( QgsMapCanvas*
136137
connect( mXLineEdit, SIGNAL( returnPressed() ), this, SLOT( lockConstraint() ) );
137138
connect( mYLineEdit, SIGNAL( returnPressed() ), this, SLOT( lockConstraint() ) );
138139

139-
// errors messages
140-
mErrorMessage = new QgsMessageBarItem( tr( "CAD tools" ),
141-
tr( "Some constraints are incompatible. Resulting point might be incorrect." ),
142-
QgsMessageBar::WARNING, 0 );
143-
mErrorMessageDisplayed = false;
144140
mapToolChanged( NULL );
145141

146142
// config menu
@@ -268,9 +264,10 @@ void QgsAdvancedDigitizingDockWidget::activateCad( bool enabled )
268264
{
269265
enabled &= mCurrentMapTool != 0;
270266

271-
if ( mErrorMessageDisplayed )
267+
if ( mErrorMessage )
272268
{
273269
QgisApp::instance()->messageBar()->popWidget( mErrorMessage );
270+
mErrorMessage = 0;
274271
}
275272
QSettings().setValue( "/Cad/SessionActive", enabled );
276273

@@ -866,10 +863,10 @@ bool QgsAdvancedDigitizingDockWidget::canvasReleaseEventFilter( QgsMapMouseEvent
866863
if ( !mCadEnabled )
867864
return false;
868865

869-
if ( mErrorMessageDisplayed )
866+
if ( mErrorMessage )
870867
{
871868
QgisApp::instance()->messageBar()->popWidget( mErrorMessage );
872-
mErrorMessageDisplayed = false;
869+
mErrorMessage = 0;
873870
}
874871

875872
if ( e->button() == Qt::RightButton )
@@ -915,16 +912,20 @@ bool QgsAdvancedDigitizingDockWidget::canvasMoveEventFilter( QgsMapMouseEvent* e
915912

916913
if ( !applyConstraints( e ) )
917914
{
918-
if ( !mErrorMessageDisplayed )
915+
if ( !mErrorMessage )
919916
{
917+
// errors messages
918+
mErrorMessage = new QgsMessageBarItem( tr( "CAD tools" ),
919+
tr( "Some constraints are incompatible. Resulting point might be incorrect." ),
920+
QgsMessageBar::WARNING, 0 );
921+
920922
QgisApp::instance()->messageBar()->pushItem( mErrorMessage );
921-
mErrorMessageDisplayed = true;
922923
}
923924
}
924-
else if ( mErrorMessageDisplayed )
925+
else if ( mErrorMessage )
925926
{
926927
QgisApp::instance()->messageBar()->popWidget( mErrorMessage );
927-
mErrorMessageDisplayed = false;
928+
mErrorMessage = 0;
928929
}
929930

930931
// perpendicular/parallel constraint

‎src/app/qgsadvanceddigitizingdockwidget.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,6 @@ class APP_EXPORT QgsAdvancedDigitizingDockWidget : public QDockWidget, private U
257257

258258
// error message
259259
QgsMessageBarItem* mErrorMessage;
260-
bool mErrorMessageDisplayed;
261260

262261
// UI
263262
QAction* mEnableAction;

0 commit comments

Comments
 (0)
Please sign in to comment.