diff options
| author | Carl Hetherington <cth@carlh.net> | 2016-09-26 12:33:40 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2016-09-26 12:33:40 +0100 |
| commit | f68a5f1ddd60ade2ed9a68d180ecf553e94b853f (patch) | |
| tree | a1eaa3823b76830559e3e8f7803c000dde8747f1 /src | |
| parent | 98ca07e59feac950838412bfa7e5c2e3ddd71d7e (diff) | |
Fix multi-select in the timeline (#954).
Diffstat (limited to 'src')
| -rw-r--r-- | src/wx/content_panel.cc | 13 | ||||
| -rw-r--r-- | src/wx/content_panel.h | 1 | ||||
| -rw-r--r-- | src/wx/timeline.cc | 2 |
3 files changed, 15 insertions, 1 deletions
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 @@ -466,6 +466,19 @@ ContentPanel::set_selection (weak_ptr<Content> 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) { if (property == ContentProperty::PATH || property == DCPContentProperty::NEEDS_ASSETS || property == DCPContentProperty::NEEDS_KDM) { 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<Film>); void set_general_sensitivity (bool s); void set_selection (boost::weak_ptr<Content>); + 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 */ |
