summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2016-09-26 12:33:40 +0100
committerCarl Hetherington <cth@carlh.net>2016-09-26 12:33:40 +0100
commitf68a5f1ddd60ade2ed9a68d180ecf553e94b853f (patch)
treea1eaa3823b76830559e3e8f7803c000dde8747f1 /src
parent98ca07e59feac950838412bfa7e5c2e3ddd71d7e (diff)
Fix multi-select in the timeline (#954).
Diffstat (limited to 'src')
-rw-r--r--src/wx/content_panel.cc13
-rw-r--r--src/wx/content_panel.h1
-rw-r--r--src/wx/timeline.cc2
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 */