+2014-06-24 Carl Hetherington <cth@carlh.net>
+
+ * Fix some madness when dragging things around
+ on the timeline.
+
2014-06-23 Carl Hetherington <cth@carlh.net>
* Try harder to cope with DCP names specified
_track = t;
}
+ void unset_track () {
+ _track = boost::optional<int> ();
+ }
+
optional<int> track () const {
return _track;
}
SetMinSize (wxSize (640, tracks() * track_height() + 96));
- _playlist_connection = film->playlist()->Changed.connect (bind (&Timeline::playlist_changed, this));
+ _playlist_changed_connection = film->playlist()->Changed.connect (bind (&Timeline::playlist_changed, this));
+ _playlist_content_changed_connection = film->playlist()->ContentChanged.connect (bind (&Timeline::playlist_content_changed, this, _2));
}
void
Refresh ();
}
+void
+Timeline::playlist_content_changed (int property)
+{
+ ensure_ui_thread ();
+
+ if (property == ContentProperty::POSITION) {
+ assign_tracks ();
+ setup_pixels_per_time_unit ();
+ Refresh ();
+ }
+}
+
void
Timeline::assign_tracks ()
{
+ for (ViewList::iterator i = _views.begin(); i != _views.end(); ++i) {
+ shared_ptr<ContentView> c = dynamic_pointer_cast<ContentView> (*i);
+ if (c) {
+ c->unset_track ();
+ }
+ }
+
for (ViewList::iterator i = _views.begin(); i != _views.end(); ++i) {
shared_ptr<ContentView> cv = dynamic_pointer_cast<ContentView> (*i);
if (!cv) {
continue;
}
-
+
shared_ptr<Content> content = cv->content();
int t = 0;
- while (1) {
+ while (true) {
ViewList::iterator j = _views.begin();
while (j != _views.end()) {
shared_ptr<ContentView> test = dynamic_pointer_cast<ContentView> (*j);
if (new_position < 0) {
new_position = 0;
}
-
+
_down_view->content()->set_position (new_position);
shared_ptr<Film> film = _film.lock ();
void right_down (wxMouseEvent &);
void mouse_moved (wxMouseEvent &);
void playlist_changed ();
+ void playlist_content_changed (int);
void resized ();
void assign_tracks ();
void set_position_from_event (wxMouseEvent &);
ContentMenu _menu;
bool _snap;
- boost::signals2::scoped_connection _playlist_connection;
+ boost::signals2::scoped_connection _playlist_changed_connection;
+ boost::signals2::scoped_connection _playlist_content_changed_connection;
};