diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2008-01-15 00:07:35 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2008-01-15 00:07:35 +0000 |
commit | 679e7fcffa01c2bb8d3a1e3a50d8a7f838976f99 (patch) | |
tree | 8a3c2ada03ab2d8cc65624cc17635ebc663abd88 | |
parent | cc607b9fb9d0f14ec2fe00366da3c7574874d06f (diff) |
fix copy-drag SNAFU; fix shuffling playhead when zoom gets so low that rounding errors cause an iterative convergence on the "true" position if zoom-focus = playhead
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@2914 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r-- | gtk2_ardour/editor_mouse.cc | 6 | ||||
-rw-r--r-- | gtk2_ardour/editor_ops.cc | 8 | ||||
-rw-r--r-- | gtk2_ardour/engine_dialog.cc | 18 | ||||
-rw-r--r-- | gtk2_ardour/plugin_ui.cc | 5 | ||||
-rw-r--r-- | gtk2_ardour/selection.cc | 50 | ||||
-rw-r--r-- | svn_revision.h | 2 |
6 files changed, 63 insertions, 26 deletions
diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc index 9e5d709257..4cec847db7 100644 --- a/gtk2_ardour/editor_mouse.cc +++ b/gtk2_ardour/editor_mouse.cc @@ -3001,7 +3001,7 @@ Editor::possibly_copy_regions_during_grab (GdkEvent* event) /* reset selection to new regionviews */ selection->set (new_regionviews); - + /* reset drag_info data to reflect the fact that we are dragging the copies */ drag_info.data = new_regionviews.front(); @@ -3400,7 +3400,7 @@ Editor::region_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* event) pair<set<boost::shared_ptr<Playlist> >::iterator,bool> insert_result; const list<RegionView*>& layered_regions = selection->regions.by_layer(); - + for (list<RegionView*>::const_iterator i = layered_regions.begin(); i != layered_regions.end(); ++i) { RegionView* rv = (*i); @@ -3765,7 +3765,7 @@ Editor::region_drag_finished_callback (ArdourCanvas::Item* item, GdkEvent* event sigc::connection c = atv->view()->RegionViewAdded.connect (mem_fun(*this, &Editor::collect_new_region_view)); to_playlist->add_region (newregion, (nframes_t) (where * atv->get_diskstream()->speed())); c.disconnect (); - + if (!latest_regionviews.empty()) { // XXX why just the first one ? we only expect one atv->reveal_dependent_views (*latest_regionviews.front()); diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index 58c88ab3c6..46a2ac53d0 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -1520,6 +1520,12 @@ Editor::temporal_zoom (gdouble fpu) double nfpu; double l; + /* XXX this limit is also in ::set_frames_per_unit() */ + + if (frames_per_unit <= 2.0 && fpu <= frames_per_unit) { + return; + } + nfpu = fpu; new_page_size = (nframes_t) floor (canvas_width * nfpu); @@ -1554,7 +1560,7 @@ Editor::temporal_zoom (gdouble fpu) where = playhead_cursor->current_frame; l = - ((new_page_size * ((where - current_leftmost)/(double)current_page)) - where); - + if (l < 0) { leftmost_after_zoom = 0; } else if (l > max_frames) { diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index 2b53c67158..5cd4528983 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -428,11 +428,21 @@ EngineControl::build_command_line (vector<string>& cmd) cmd.push_back ("netjack"); } else if (driver == X_("FFADO")) { using_ffado = true; - cmd.push_back ("firewire"); + + /* do this until FFADO becomes the standard */ + + char* hack = getenv ("ARDOUR_FIREWIRE_DRIVER_NAME"); + + if (hack) { + cmd.push_back (hack); + } else { + cmd.push_back ("freebob"); + } + } else if ( driver == X_("Dummy")) { - using_dummy = true; - cmd.push_back ("dummy"); - } + using_dummy = true; + cmd.push_back ("dummy"); + } /* driver arguments */ diff --git a/gtk2_ardour/plugin_ui.cc b/gtk2_ardour/plugin_ui.cc index dc51db46b6..ed77747d7d 100644 --- a/gtk2_ardour/plugin_ui.cc +++ b/gtk2_ardour/plugin_ui.cc @@ -276,6 +276,11 @@ PlugUIBase::bypass_toggled () if ((x = bypass_button.get_active()) == insert->active()) { insert->set_active (!x, this); + if (insert->active()) { + bypass_button.set_label (_("Bypass")); + } else { + bypass_button.set_label (_("Active")); + } } } diff --git a/gtk2_ardour/selection.cc b/gtk2_ardour/selection.cc index 2d35fa61aa..a647cbcb6e 100644 --- a/gtk2_ardour/selection.cc +++ b/gtk2_ardour/selection.cc @@ -329,32 +329,36 @@ Selection::add (TimeAxisView* track) } void -Selection::add (const RegionSelection& rs) +Selection::add (vector<RegionView*>& v) { - if (!rs.empty()) { - regions.insert (regions.end(), rs.begin(), rs.end()); - RegionsChanged(); /* EMIT SIGNAL */ - } -} + /* XXX This method or the add (const RegionSelection&) needs to go + */ -void -Selection::add (RegionView* r) -{ - if (find (regions.begin(), regions.end(), r) == regions.end()) { - regions.add (r); - if (Config->get_link_region_and_track_selection()) { - add (&r->get_trackview()); + bool changed = false; + + for (vector<RegionView*>::iterator i = v.begin(); i != v.end(); ++i) { + if (find (regions.begin(), regions.end(), (*i)) == regions.end()) { + changed = regions.add ((*i)); + if (Config->get_link_region_and_track_selection() && changed) { + add (&(*i)->get_trackview()); + } } + } + + if (changed) { RegionsChanged (); } } void -Selection::add (vector<RegionView*>& v) +Selection::add (const RegionSelection& rs) { - bool changed = false; + /* XXX This method or the add (const vector<RegionView*>&) needs to go + */ - for (vector<RegionView*>::iterator i = v.begin(); i != v.end(); ++i) { + bool changed = false; + + for (RegionSelection::const_iterator i = rs.begin(); i != rs.end(); ++i) { if (find (regions.begin(), regions.end(), (*i)) == regions.end()) { changed = regions.add ((*i)); if (Config->get_link_region_and_track_selection() && changed) { @@ -362,12 +366,24 @@ Selection::add (vector<RegionView*>& v) } } } - + if (changed) { RegionsChanged (); } } +void +Selection::add (RegionView* r) +{ + if (find (regions.begin(), regions.end(), r) == regions.end()) { + regions.add (r); + if (Config->get_link_region_and_track_selection()) { + add (&r->get_trackview()); + } + RegionsChanged (); + } +} + long Selection::add (nframes_t start, nframes_t end) { diff --git a/svn_revision.h b/svn_revision.h index fc376f4016..82e05f6d6e 100644 --- a/svn_revision.h +++ b/svn_revision.h @@ -1,4 +1,4 @@ #ifndef __ardour_svn_revision_h__ #define __ardour_svn_revision_h__ -static const char* ardour_svn_revision = "2884"; +static const char* ardour_svn_revision = "2903"; #endif |