@@ -100,7 +100,9 @@ bool QgsFeatureAction::viewFeatureForm( QgsHighlight *h )
100
100
101
101
QgsAttributeDialog *dialog = newDialog ( true );
102
102
dialog->setHighlight ( h );
103
- dialog->show (); // will also delete the dialog on close (show() is overridden)
103
+ // delete the dialog when it is closed
104
+ dialog->setAttribute ( Qt::WA_DeleteOnClose );
105
+ dialog->show ();
104
106
105
107
return true ;
106
108
}
@@ -110,22 +112,27 @@ bool QgsFeatureAction::editFeature( bool showModal )
110
112
if ( !mLayer )
111
113
return false ;
112
114
113
- QgsAttributeDialog *dialog = newDialog ( false );
114
-
115
- if ( !mFeature ->isValid () )
116
- dialog->setMode ( QgsAttributeForm::AddFeatureMode );
117
-
118
115
if ( showModal )
119
116
{
120
- dialog->setAttribute ( Qt::WA_DeleteOnClose );
121
- int rv = dialog->exec ();
117
+ QScopedPointer<QgsAttributeDialog> dialog ( newDialog ( false ) );
118
+
119
+ if ( !mFeature ->isValid () )
120
+ dialog->setMode ( QgsAttributeForm::AddFeatureMode );
122
121
122
+ int rv = dialog->exec ();
123
123
mFeature ->setAttributes ( dialog->feature ()->attributes () );
124
124
return rv;
125
125
}
126
126
else
127
127
{
128
- dialog->show (); // will also delete the dialog on close (show() is overridden)
128
+ QgsAttributeDialog* dialog = newDialog ( false );
129
+
130
+ if ( !mFeature ->isValid () )
131
+ dialog->setMode ( QgsAttributeForm::AddFeatureMode );
132
+
133
+ // delete the dialog when it is closed
134
+ dialog->setAttribute ( Qt::WA_DeleteOnClose );
135
+ dialog->show ();
129
136
}
130
137
131
138
return true ;
@@ -205,6 +212,8 @@ bool QgsFeatureAction::addFeature( const QgsAttributeMap& defaultAttributes, boo
205
212
else
206
213
{
207
214
QgsAttributeDialog *dialog = newDialog ( false );
215
+ // delete the dialog when it is closed
216
+ dialog->setAttribute ( Qt::WA_DeleteOnClose );
208
217
dialog->setMode ( QgsAttributeForm::AddFeatureMode );
209
218
dialog->setEditCommandMessage ( text () );
210
219
@@ -213,12 +222,11 @@ bool QgsFeatureAction::addFeature( const QgsAttributeMap& defaultAttributes, boo
213
222
if ( !showModal )
214
223
{
215
224
setParent ( dialog ); // keep dialog until the dialog is closed and destructed
216
- dialog->show (); // will also delete the dialog on close (show() is overridden)
225
+ dialog->show ();
217
226
mFeature = nullptr ;
218
227
return true ;
219
228
}
220
229
221
- dialog->setAttribute ( Qt::WA_DeleteOnClose );
222
230
dialog->exec ();
223
231
}
224
232
0 commit comments