X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fregion_view.cc;h=c689a15e7d3c05b7539b5c21084b59f8a073d212;hb=244313f43fc3178fb8f58b01fc6ba125115062ad;hp=5a193e9370054f76214b102bbaa9e6cd9e149145;hpb=bcea5fc9d366f478622a13d8f587ebcf0e8d13e9;p=ardour.git diff --git a/gtk2_ardour/region_view.cc b/gtk2_ardour/region_view.cc index 5a193e9370..c689a15e7d 100644 --- a/gtk2_ardour/region_view.cc +++ b/gtk2_ardour/region_view.cc @@ -25,6 +25,7 @@ #include #include "ardour/playlist.h" +#include "ardour/profile.h" #include "ardour/session.h" #include "canvas/polygon.h" @@ -524,7 +525,7 @@ RegionView::get_fill_color () const ArdourCanvas::Color f = TimeAxisViewItem::get_fill_color(); char const *modname; - if (_region->opaque()) { + if (_region->opaque() && (!ARDOUR::Profile->get_mixbus() || (!_dragging && !_region->muted ()))) { modname = "opaque region base"; } else { modname = "transparent region base"; @@ -942,24 +943,23 @@ RegionView::move_contents (frameoffset_t distance) * Used when inverting snap mode logic with key modifiers, or snap distance calculation. * @return Snapped frame offset from this region's position. */ -frameoffset_t +MusicFrame RegionView::snap_frame_to_frame (frameoffset_t x, bool ensure_snap) const { PublicEditor& editor = trackview.editor(); - /* x is region relative, convert it to global absolute frames */ framepos_t const session_frame = x + _region->position(); /* try a snap in either direction */ - framepos_t frame = session_frame; + MusicFrame frame (session_frame, 0); editor.snap_to (frame, RoundNearest, false, ensure_snap); /* if we went off the beginning of the region, snap forwards */ - if (frame < _region->position ()) { - frame = session_frame; + if (frame.frame < _region->position ()) { + frame.frame = session_frame; editor.snap_to (frame, RoundUpAlways, false, ensure_snap); } - /* back to region relative */ - return frame - _region->position(); + /* back to region relative, keeping the relevant divisor */ + return MusicFrame (frame.frame - _region->position(), frame.division); }