#include <gtkmm2ext/gtk_ui.h>
#include "ardour/playlist.h"
+#include "ardour/profile.h"
#include "ardour/session.h"
#include "canvas/polygon.h"
#include "rgb_macros.h"
#include "gui_thread.h"
-#include "i18n.h"
+#include "pbd/i18n.h"
using namespace std;
using namespace ARDOUR;
/* derived class calls set_colors () including RegionView::set_colors() in ::init() */
//set_colors ();
- //UIConfiguration::instance().ColorsChanged.connect (sigc::mem_fun (*this, &RegionView::color_handler));
+ UIConfiguration::instance().ColorsChanged.connect (sigc::mem_fun (*this, &RegionView::color_handler));
/* XXX sync mark drag? */
}
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";
* 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);
}