Categorize the mixer actions.
[ardour.git] / gtk2_ardour / region_view.cc
index 1e848cf33903655efdb1f23c3ae2cbc94f787bf4..c689a15e7d3c05b7539b5c21084b59f8a073d212 100644 (file)
@@ -25,6 +25,7 @@
 #include <gtkmm2ext/gtk_ui.h>
 
 #include "ardour/playlist.h"
+#include "ardour/profile.h"
 #include "ardour/session.h"
 
 #include "canvas/polygon.h"
@@ -48,7 +49,7 @@
 #include "rgb_macros.h"
 #include "gui_thread.h"
 
-#include "i18n.h"
+#include "pbd/i18n.h"
 
 using namespace std;
 using namespace ARDOUR;
@@ -185,7 +186,7 @@ RegionView::init (bool wfd)
 
        /* 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? */
 }
@@ -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);
 }