diff options
Diffstat (limited to 'gtk2_ardour/time_axis_view.cc')
-rw-r--r-- | gtk2_ardour/time_axis_view.cc | 65 |
1 files changed, 37 insertions, 28 deletions
diff --git a/gtk2_ardour/time_axis_view.cc b/gtk2_ardour/time_axis_view.cc index 0ed3458d80..e61fa189b8 100644 --- a/gtk2_ardour/time_axis_view.cc +++ b/gtk2_ardour/time_axis_view.cc @@ -74,7 +74,7 @@ uint32_t TimeAxisView::hSmall = 0; bool TimeAxisView::need_size_info = true; int const TimeAxisView::_max_order = 512; -TimeAxisView::TimeAxisView (ARDOUR::Session& sess, PublicEditor& ed, TimeAxisView* rent, Canvas& canvas) +TimeAxisView::TimeAxisView (ARDOUR::Session& sess, PublicEditor& ed, TimeAxisViewPtr rent, Canvas& canvas) : AxisView (sess), controls_table (2, 8), _y_position (0), @@ -338,7 +338,7 @@ void TimeAxisView::selection_click (GdkEventButton* ev) { Selection::Operation op = Keyboard::selection_type (ev->state); - _editor.set_selected_track (*this, op, false); + _editor.set_selected_track (shared_from_this (), op, false); } void @@ -367,7 +367,7 @@ TimeAxisView::hide () /* if its hidden, it cannot be selected */ - _editor.get_selection().remove (this); + _editor.get_selection().remove (shared_from_this ()); Hiding (); } @@ -436,9 +436,9 @@ TimeAxisView::name_entry_key_release (GdkEventKey* ev) case GDK_ISO_Left_Tab: case GDK_Tab: name_entry_changed (); - allviews = _editor.get_valid_views (0); + allviews = _editor.get_valid_views (TimeAxisViewPtr ()); if (allviews != 0) { - i = find (allviews->begin(), allviews->end(), this); + i = find (allviews->begin(), allviews->end(), shared_from_this ()); if (ev->keyval == GDK_Tab) { if (i != allviews->end()) { do { @@ -564,8 +564,8 @@ TimeAxisView::conditionally_add_to_selection () { Selection& s (_editor.get_selection ()); - if (!s.selected (this)) { - _editor.set_selected_track (*this, Selection::Set); + if (!s.selected (shared_from_this ())) { + _editor.set_selected_track (shared_from_this (), Selection::Set); } } @@ -878,12 +878,10 @@ TimeAxisView::get_selection_rect (uint32_t id) return rect; } -struct null_deleter { void operator()(void const *) const {} }; - bool -TimeAxisView::is_child (TimeAxisView* tav) +TimeAxisView::is_child (TimeAxisViewPtr tav) { - return find (children.begin(), children.end(), boost::shared_ptr<TimeAxisView>(tav, null_deleter())) != children.end(); + return find (children.begin(), children.end(), tav) != children.end(); } void @@ -917,7 +915,7 @@ TimeAxisView::get_inverted_selectables (Selection& sel, list<Selectable*>& resul void TimeAxisView::add_ghost (RegionView* rv) { - GhostRegion* gr = rv->add_ghost (*this); + GhostRegion* gr = rv->add_ghost (shared_from_this ()); if(gr) { ghosts.push_back(gr); @@ -926,8 +924,9 @@ TimeAxisView::add_ghost (RegionView* rv) } void -TimeAxisView::remove_ghost (RegionView* rv) { - rv->remove_ghost_in (*this); +TimeAxisView::remove_ghost (RegionView* rv) +{ + rv->remove_ghost_in (shared_from_this ()); } void @@ -961,9 +960,9 @@ TimeAxisView::touched (double top, double bot) } void -TimeAxisView::set_parent (TimeAxisView& p) +TimeAxisView::set_parent (TimeAxisViewPtr p) { - parent = &p; + parent = p; } bool @@ -972,16 +971,12 @@ TimeAxisView::has_state () const return _has_state; } -TimeAxisView* +TimeAxisViewPtr TimeAxisView::get_parent_with_state () { - if (parent == 0) { - return 0; - } - - if (parent->has_state()) { + if (parent == 0 || parent->has_state()) { return parent; - } + } return parent->get_parent_with_state (); } @@ -1194,11 +1189,11 @@ TimeAxisView::color_handler () * Layer index is the layer number if the TimeAxisView is valid and is in stacked * region display mode, otherwise 0. */ -std::pair<TimeAxisView*, layer_t> +std::pair<TimeAxisViewPtr, layer_t> TimeAxisView::covers_y_position (double y) { if (hidden()) { - return std::make_pair ( (TimeAxisView *) 0, 0); + return std::make_pair (TimeAxisViewPtr (), 0); } if (_y_position <= y && y < (_y_position + height)) { @@ -1220,13 +1215,13 @@ TimeAxisView::covers_y_position (double y) for (Children::const_iterator i = children.begin(); i != children.end(); ++i) { - std::pair<TimeAxisView*, int> const r = (*i)->covers_y_position (y); + std::pair<TimeAxisViewPtr, int> const r = (*i)->covers_y_position (y); if (r.first) { return r; } } - return std::make_pair ( (TimeAxisView *) 0, 0); + return std::make_pair (TimeAxisViewPtr (), 0); } void @@ -1302,7 +1297,7 @@ TimeAxisView::resizer_motion (GdkEventMotion* ev) } int32_t const delta = (int32_t) floor (ev->y_root - _resize_drag_start); - _editor.add_to_idle_resize (this, delta); + _editor.add_to_idle_resize (shared_from_this (), delta); _resize_drag_start = ev->y_root; return true; @@ -1349,3 +1344,17 @@ TimeAxisView::resizer_expose (GdkEventExpose* event) return true; } +TimeAxisViewPtr +TimeAxisView::find_time_axis (TimeAxisView* v) +{ + Children::iterator i = children.begin (); + while (i != children.end() && i->get() != v) { + ++i; + } + + if (i == children.end()) { + return TimeAxisViewPtr (); + } + + return *i; +} |