From f68a5f1ddd60ade2ed9a68d180ecf553e94b853f Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Mon, 26 Sep 2016 12:33:40 +0100 Subject: Fix multi-select in the timeline (#954). --- src/wx/content_panel.cc | 13 +++++++++++++ src/wx/content_panel.h | 1 + src/wx/timeline.cc | 2 +- 3 files changed, 15 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/wx/content_panel.cc b/src/wx/content_panel.cc index b28d9ca22..7bea51687 100644 --- a/src/wx/content_panel.cc +++ b/src/wx/content_panel.cc @@ -465,6 +465,19 @@ ContentPanel::set_selection (weak_ptr wc) } } +void +ContentPanel::set_selection (ContentList cl) +{ + ContentList content = _film->content (); + for (size_t i = 0; i < content.size(); ++i) { + if (find(cl.begin(), cl.end(), content[i]) != cl.end()) { + _content->SetItemState (i, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED); + } else { + _content->SetItemState (i, 0, wxLIST_STATE_SELECTED); + } + } +} + void ContentPanel::film_content_changed (int property) { diff --git a/src/wx/content_panel.h b/src/wx/content_panel.h index e1a66770c..e8b31b7f4 100644 --- a/src/wx/content_panel.h +++ b/src/wx/content_panel.h @@ -48,6 +48,7 @@ public: void set_film (boost::shared_ptr); void set_general_sensitivity (bool s); void set_selection (boost::weak_ptr); + void set_selection (ContentList cl); void film_changed (Film::Property p); void film_content_changed (int p); diff --git a/src/wx/timeline.cc b/src/wx/timeline.cc index 30c2dbddc..f93953737 100644 --- a/src/wx/timeline.cc +++ b/src/wx/timeline.cc @@ -383,9 +383,9 @@ Timeline::left_up (wxMouseEvent& ev) if (_down_view) { _down_view->content()->set_change_signals_frequent (false); - _content_panel->set_selection (_down_view->content ()); } + _content_panel->set_selection (selected_content ()); set_position_from_event (ev); /* Clear up up the stuff we don't do during drag */ -- cgit v1.2.3