@@ -42,6 +42,13 @@ QgsMapStylingWidget::QgsMapStylingWidget( QgsMapCanvas* canvas, QWidget *parent
4242
4343 mAutoApplyTimer = new QTimer ( this );
4444 mAutoApplyTimer ->setSingleShot ( true );
45+
46+ mUndoWidget = new QgsUndoWidget ( this , mMapCanvas );
47+ mUndoWidget ->setObjectName ( " Undo Styles" );
48+ mUndoWidget ->hide ();
49+ connect ( mUndoButton , SIGNAL ( pressed () ), mUndoWidget , SLOT ( undo () ) );
50+ connect ( mRedoButton , SIGNAL ( pressed () ), mUndoWidget , SLOT ( redo () ) );
51+
4552 connect ( mAutoApplyTimer , SIGNAL ( timeout () ), this , SLOT ( apply () ) );
4653
4754 connect ( mOptionsListWidget , SIGNAL ( currentRowChanged ( int ) ), this , SLOT ( updateCurrentWidgetLayer () ) );
@@ -168,6 +175,8 @@ void QgsMapStylingWidget::updateCurrentWidgetLayer()
168175
169176 QgsMapLayer* layer = mCurrentLayer ;
170177
178+ mUndoWidget ->setUndoStack ( layer->undoStackStyles () );
179+
171180 mLayerTitleLabel ->setText ( layer->name () );
172181
173182 if ( layer->type () == QgsMapLayer::VectorLayer )
@@ -181,6 +190,10 @@ void QgsMapStylingWidget::updateCurrentWidgetLayer()
181190 {
182191 mLabelingWidget = widget;
183192 }
193+ else if ( QgsUndoWidget* widget = qobject_cast<QgsUndoWidget*>( current ) )
194+ {
195+ mUndoWidget = widget;
196+ }
184197 else
185198 {
186199 current->deleteLater ();
@@ -208,11 +221,6 @@ void QgsMapStylingWidget::updateCurrentWidgetLayer()
208221 break ;
209222 }
210223 case 2 : // History
211- mUndoWidget = new QgsUndoWidget ( mOptionsListWidget , mMapCanvas );
212- mUndoWidget ->setObjectName ( " Undo Styles" );
213- mUndoWidget ->setUndoStack ( layer->undoStackStyles () );
214- connect ( mUndoButton , SIGNAL ( pressed () ), mUndoWidget , SLOT ( undo () ) );
215- connect ( mRedoButton , SIGNAL ( pressed () ), mUndoWidget , SLOT ( redo () ) );
216224 mWidgetArea ->setWidget ( mUndoWidget );
217225 break ;
218226 default :
@@ -235,6 +243,10 @@ void QgsMapStylingWidget::updateCurrentWidgetLayer()
235243 {
236244 mRasterStyleWidget = widget;
237245 }
246+ else if ( QgsUndoWidget* widget = qobject_cast<QgsUndoWidget*>( current ) )
247+ {
248+ mUndoWidget = widget;
249+ }
238250 else
239251 {
240252 current->deleteLater ();
@@ -276,12 +288,6 @@ void QgsMapStylingWidget::updateCurrentWidgetLayer()
276288 break ;
277289 }
278290 case 3 : // History
279- mUndoWidget = new QgsUndoWidget ( mOptionsListWidget , mMapCanvas );
280- mUndoWidget ->setObjectName ( " Undo Styles" );
281- mUndoWidget ->setUndoStack ( layer->undoStackStyles () );
282-
283- connect ( mUndoButton , SIGNAL ( pressed () ), mUndoWidget , SLOT ( undo () ) );
284- connect ( mRedoButton , SIGNAL ( pressed () ), mUndoWidget , SLOT ( redo () ) );
285291 mWidgetArea ->setWidget ( mUndoWidget );
286292 break ;
287293 default :
0 commit comments