Fix crash when adding cinemas while a search is in force (#2378).
[dcpomatic.git] / src / wx / text_panel.cc
index 8cb4166c11bd7f51446ba961c87f3468499f4151..7e6557ba9c88bd0d678887c12eef705b62e3417f 100644 (file)
@@ -126,10 +126,10 @@ TextPanel::create ()
        _y_scale->SetRange (0, 1000);
        _line_spacing->SetRange (0, 1000);
 
-       _reference->Bind                (wxEVT_CHECKBOX, boost::bind (&TextPanel::reference_clicked, this));
-       _use->Bind                      (wxEVT_CHECKBOX, boost::bind (&TextPanel::use_toggled, this));
+       _reference->bind(&TextPanel::reference_clicked, this);
+       _use->bind(&TextPanel::use_toggled, this);
        _type->Bind                     (wxEVT_CHOICE,   boost::bind (&TextPanel::type_changed, this));
-       _burn->Bind                     (wxEVT_CHECKBOX, boost::bind (&TextPanel::burn_toggled, this));
+       _burn->bind(&TextPanel::burn_toggled, this);
        _x_offset->Bind                 (wxEVT_SPINCTRL, boost::bind (&TextPanel::x_offset_changed, this));
        _y_offset->Bind                 (wxEVT_SPINCTRL, boost::bind (&TextPanel::y_offset_changed, this));
        _x_scale->Bind                  (wxEVT_SPINCTRL, boost::bind (&TextPanel::x_scale_changed, this));
@@ -162,7 +162,7 @@ TextPanel::setup_visibility ()
                }
                if (!_outline_subtitles) {
                        _outline_subtitles = new CheckBox (this, _("Show subtitle area"));
-                       _outline_subtitles->Bind (wxEVT_CHECKBOX, boost::bind (&TextPanel::outline_subtitles_changed, this));
+                       _outline_subtitles->bind(&TextPanel::outline_subtitles_changed, this);
                        _grid->Add (_outline_subtitles, wxGBPosition(_outline_subtitles_row, 0), wxGBSpan(1, 2));
                }
                if (!_language) {
@@ -863,22 +863,19 @@ TextPanel::try_to_load_analysis ()
 void
 TextPanel::update_outline_subtitles_in_viewer ()
 {
-       auto fv = _parent->film_viewer().lock();
-       if (!fv) {
-               return;
-       }
+       auto& fv = _parent->film_viewer();
 
        if (_analysis) {
                auto rect = _analysis->bounding_box ();
                if (rect) {
                        auto content = _analysis_content.lock ();
                        DCPOMATIC_ASSERT (content);
-                       rect->x += content->text.front()->x_offset();
-                       rect->y += content->text.front()->y_offset();
+                       rect->x += content->text.front()->x_offset() - _analysis->analysis_x_offset();
+                       rect->y += content->text.front()->y_offset() - _analysis->analysis_y_offset();
                }
-               fv->set_outline_subtitles (rect);
+               fv.set_outline_subtitles(rect);
        } else {
-               fv->set_outline_subtitles (optional<dcpomatic::Rect<double> >());
+               fv.set_outline_subtitles({});
        }
 }