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