Cleanup: move variable assignment that happens in every branch.
[dcpomatic.git] / src / wx / text_panel.cc
index ba6c07e76ca15d556a57a7c96e1445402390398b..2fdcbb51f5d03733abdbce3d9950d5c1ad089acd 100644 (file)
@@ -781,11 +781,10 @@ TextPanel::appearance_dialog_clicked ()
        auto c = _parent->selected_text ();
        DCPOMATIC_ASSERT (c.size() == 1);
 
-       auto d = new SubtitleAppearanceDialog (this, _parent->film(), c.front(), c.front()->text_of_original_type(_original_type));
-       if (d->ShowModal () == wxID_OK) {
-               d->apply ();
+       SubtitleAppearanceDialog dialog(this, _parent->film(), c.front(), c.front()->text_of_original_type(_original_type));
+       if (dialog.ShowModal() == wxID_OK) {
+               dialog.apply();
        }
-       d->Destroy ();
 }
 
 
@@ -810,13 +809,16 @@ TextPanel::try_to_load_analysis ()
        }
 
        _loading_analysis = true;
+       ScopeGuard sg = [this]() {
+               _loading_analysis = false;
+               setup_sensitivity();
+       };
+
        setup_sensitivity ();
        _analysis.reset ();
 
        auto content = _analysis_content.lock ();
        if (!content) {
-               _loading_analysis = false;
-               setup_sensitivity ();
                return;
        }
 
@@ -824,7 +826,7 @@ TextPanel::try_to_load_analysis ()
 
        if (!boost::filesystem::exists(path)) {
                for (auto i: JobManager::instance()->get()) {
-                       if (dynamic_pointer_cast<AnalyseSubtitlesJob>(i)) {
+                       if (dynamic_pointer_cast<AnalyseSubtitlesJob>(i) && !i->finished()) {
                                i->cancel ();
                        }
                }
@@ -843,11 +845,9 @@ TextPanel::try_to_load_analysis ()
                        _parent->film(), content, _analysis_finished_connection, bind(&TextPanel::analysis_finished, this)
                        );
                return;
-        }
+       }
 
        update_outline_subtitles_in_viewer ();
-       _loading_analysis = false;
-       setup_sensitivity ();
 }
 
 
@@ -886,9 +886,10 @@ TextPanel::clear_outline_subtitles ()
 void
 TextPanel::analysis_finished ()
 {
+       _loading_analysis = false;
+
        auto content = _analysis_content.lock ();
        if (!content) {
-               _loading_analysis = false;
                setup_sensitivity ();
                return;
        }
@@ -899,12 +900,10 @@ TextPanel::analysis_finished ()
                */
                error_dialog (_parent->window(), _("Could not analyse subtitles."));
                clear_outline_subtitles ();
-               _loading_analysis = false;
                setup_sensitivity ();
                return;
        }
 
-       _loading_analysis = false;
        try_to_load_analysis ();
 }