diff options
Diffstat (limited to 'gtk2_ardour/editor_canvas.cc')
-rw-r--r-- | gtk2_ardour/editor_canvas.cc | 36 |
1 files changed, 20 insertions, 16 deletions
diff --git a/gtk2_ardour/editor_canvas.cc b/gtk2_ardour/editor_canvas.cc index e2e04326ca..2d854a384b 100644 --- a/gtk2_ardour/editor_canvas.cc +++ b/gtk2_ardour/editor_canvas.cc @@ -52,7 +52,7 @@ using namespace Glib; using namespace Gtkmm2ext; using namespace Editing; -/* XXX this is a hack. it ought to be the maximum value of an jack_nframes_t */ +/* XXX this is a hack. it ought to be the maximum value of an nframes_t */ const double max_canvas_coordinate = (double) JACK_MAX_FRAMES; @@ -279,7 +279,7 @@ Editor::track_canvas_allocate (Gtk::Allocation alloc) canvas_width = alloc.get_width(); canvas_height = alloc.get_height(); - zoom_range_clock.set ((jack_nframes_t) floor ((canvas_width * frames_per_unit))); + zoom_range_clock.set ((nframes_t) floor ((canvas_width * frames_per_unit))); edit_cursor->set_position (edit_cursor->current_frame); playhead_cursor->set_position (playhead_cursor->current_frame); @@ -438,7 +438,7 @@ Editor::drop_paths (const RefPtr<Gdk::DragContext>& context, vector<ustring> paths; string spath; GdkEvent ev; - jack_nframes_t frame; + nframes_t frame; if (convert_drop_to_paths (paths, context, x, y, data, info, time)) { goto out; @@ -466,7 +466,7 @@ Editor::drop_paths (const RefPtr<Gdk::DragContext>& context, /* drop onto canvas background: create new tracks */ - jack_nframes_t pos = 0; + nframes_t pos = 0; do_embed (paths, false, ImportAsTrack, 0, pos, false); } else if ((tv = dynamic_cast<RouteTimeAxisView*>(tvp)) != 0) { @@ -488,11 +488,12 @@ Editor::drop_regions (const RefPtr<Gdk::DragContext>& context, const SelectionData& data, guint info, guint time) { - const DnDTreeView::SerializedObjectPointers* sr = reinterpret_cast<const DnDTreeView::SerializedObjectPointers*> (data.get_data()); + const SerializedObjectPointers<boost::shared_ptr<Region> >* sr = + reinterpret_cast<const SerializedObjectPointers<boost::shared_ptr<Region> > *> (data.get_data()); for (uint32_t i = 0; i < sr->cnt; ++i) { - boost::shared_ptr<Region> r (reinterpret_cast<Region*> (sr->ptr[i])); + boost::shared_ptr<Region> r = sr->data[i]; insert_region_list_drag (r, x, y); } @@ -503,8 +504,8 @@ Editor::drop_regions (const RefPtr<Gdk::DragContext>& context, void Editor::maybe_autoscroll (GdkEvent* event) { - jack_nframes_t rightmost_frame = leftmost_frame + current_page_frames(); - jack_nframes_t frame = drag_info.current_pointer_frame; + nframes_t rightmost_frame = leftmost_frame + current_page_frames(); + nframes_t frame = drag_info.current_pointer_frame; bool startit = false; static int last_autoscroll_direction = 0; @@ -553,10 +554,10 @@ Editor::_autoscroll_canvas (void *arg) bool Editor::autoscroll_canvas () { - jack_nframes_t new_frame; - jack_nframes_t limit = max_frames - current_page_frames(); + nframes_t new_frame; + nframes_t limit = max_frames - current_page_frames(); GdkEventMotion ev; - jack_nframes_t target_frame; + nframes_t target_frame; if (autoscroll_direction < 0) { if (leftmost_frame < autoscroll_distance) { @@ -606,17 +607,17 @@ Editor::autoscroll_canvas () /* after about a while, speed up a bit by changing the timeout interval */ - autoscroll_distance = (jack_nframes_t) floor (current_page_frames()/30.0f); + autoscroll_distance = (nframes_t) floor (current_page_frames()/30.0f); } else if (autoscroll_cnt == 150) { /* 1.0 seconds */ - autoscroll_distance = (jack_nframes_t) floor (current_page_frames()/20.0f); + autoscroll_distance = (nframes_t) floor (current_page_frames()/20.0f); } else if (autoscroll_cnt == 300) { /* 1.5 seconds */ /* after about another while, speed up by increasing the shift per callback */ - autoscroll_distance = (jack_nframes_t) floor (current_page_frames()/10.0f); + autoscroll_distance = (nframes_t) floor (current_page_frames()/10.0f); } @@ -626,14 +627,15 @@ Editor::autoscroll_canvas () void Editor::start_canvas_autoscroll (int dir) { - if (!session) { + if (!session || autoscroll_active) { return; } stop_canvas_autoscroll (); + autoscroll_active = true; autoscroll_direction = dir; - autoscroll_distance = (jack_nframes_t) floor (current_page_frames()/100.0); + autoscroll_distance = (nframes_t) floor (current_page_frames()/50.0); autoscroll_cnt = 0; /* do it right now, which will start the repeated callbacks */ @@ -648,6 +650,8 @@ Editor::stop_canvas_autoscroll () g_source_remove (autoscroll_timeout_tag); autoscroll_timeout_tag = -1; } + + autoscroll_active = false; } gint |