X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=gtk2_ardour%2Fregion_view.cc;h=d6c006a77b27085f42a60b415517f48f35f74d44;hb=39eec5ac1b4d6c76e064ad7599d0d1efd626b146;hp=530d046f5ae8d823cb1471b62a01dc099ec71380;hpb=b880a381523b2cfdb7ebd17c27fff1adf90fa028;p=ardour.git diff --git a/gtk2_ardour/region_view.cc b/gtk2_ardour/region_view.cc index 530d046f5a..d6c006a77b 100644 --- a/gtk2_ardour/region_view.cc +++ b/gtk2_ardour/region_view.cc @@ -69,8 +69,9 @@ RegionView::RegionView (ArdourCanvas::Group* parent, Gdk::Color const & basic_color, bool automation) : TimeAxisViewItem (r->name(), *parent, tv, spu, basic_color, r->position(), r->length(), false, automation, - TimeAxisViewItem::Visibility (TimeAxisViewItem::ShowNameText| - TimeAxisViewItem::ShowNameHighlight| TimeAxisViewItem::ShowFrame)) + (automation ? TimeAxisViewItem::ShowFrame : + TimeAxisViewItem::Visibility (TimeAxisViewItem::ShowNameText| + TimeAxisViewItem::ShowNameHighlight| TimeAxisViewItem::ShowFrame))) , _region (r) , sync_mark(0) , sync_line(0) @@ -167,20 +168,20 @@ RegionView::init (Gdk::Color const & basic_color, bool wfd) if (name_highlight) { name_highlight->set_data ("regionview", this); name_highlight->Event.connect (sigc::bind (sigc::mem_fun (PublicEditor::instance(), &PublicEditor::canvas_region_view_name_highlight_event), name_highlight, this)); - - if (frame_handle_start) { - frame_handle_start->set_data ("regionview", this); - frame_handle_start->set_data ("isleft", (void*) 1); - frame_handle_start->Event.connect (sigc::bind (sigc::mem_fun (PublicEditor::instance(), &PublicEditor::canvas_frame_handle_event), frame_handle_start, this)); - frame_handle_start->raise_to_top(); - } - - if (frame_handle_end) { - frame_handle_end->set_data ("regionview", this); - frame_handle_end->set_data ("isleft", (void*) 0); - frame_handle_end->Event.connect (sigc::bind (sigc::mem_fun (PublicEditor::instance(), &PublicEditor::canvas_frame_handle_event), frame_handle_end, this)); - frame_handle_end->raise_to_top(); - } + } + + if (frame_handle_start) { + frame_handle_start->set_data ("regionview", this); + frame_handle_start->set_data ("isleft", (void*) 1); + frame_handle_start->Event.connect (sigc::bind (sigc::mem_fun (PublicEditor::instance(), &PublicEditor::canvas_frame_handle_event), frame_handle_start, this)); + frame_handle_start->raise_to_top(); + } + + if (frame_handle_end) { + frame_handle_end->set_data ("regionview", this); + frame_handle_end->set_data ("isleft", (void*) 0); + frame_handle_end->Event.connect (sigc::bind (sigc::mem_fun (PublicEditor::instance(), &PublicEditor::canvas_frame_handle_event), frame_handle_end, this)); + frame_handle_end->raise_to_top(); } if (name_text) { @@ -693,7 +694,18 @@ RegionView::move (double x_delta, double y_delta) return; } - get_canvas_group()->move (ArdourCanvas::Duple (x_delta, y_delta)); + /* items will not prevent Item::move() moving + * them to a negative x-axis coordinate, which + * is legal, but we don't want that here. + */ + + ArdourCanvas::Item *item = get_canvas_group (); + + if (item->position().x + x_delta < 0) { + x_delta = -item->position().x; /* move it to zero */ + } + + item->move (ArdourCanvas::Duple (x_delta, y_delta)); /* note: ghosts never leave their tracks so y_delta for them is always zero */ @@ -728,12 +740,6 @@ RegionView::remove_ghost (GhostRegion* ghost) } } -uint32_t -RegionView::get_fill_color () -{ - return fill_color; -} - void RegionView::set_height (double h) {