Use more ScopeGuards.
[dcpomatic.git] / src / wx / language_tag_widget.cc
index 567b1fefab15b31eb935e6bdd50ae571addec84c..f28046bd9be59628fe952734a6a7939f5fef8730 100644 (file)
@@ -23,6 +23,7 @@
 #include "language_tag_dialog.h"
 #include "language_tag_widget.h"
 #include "wx_util.h"
+#include "lib/scope_guard.h"
 #include <dcp/warnings.h>
 LIBDCP_DISABLE_WARNINGS
 #include <wx/wx.h>
@@ -66,10 +67,11 @@ void
 LanguageTagWidget::edit ()
 {
        auto d = new LanguageTagDialog(_parent, _tag.get_value_or(dcp::LanguageTag("en")));
-       d->ShowModal ();
-       set (d->get());
-       Changed (d->get());
-       d->Destroy ();
+       ScopeGuard sg = [d]() { d->Destroy(); };
+       if (d->ShowModal() == wxID_OK) {
+               set(d->get());
+               Changed(d->get());
+       }
 }