summaryrefslogtreecommitdiff
path: root/gtk2_ardour/time_axis_view.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gtk2_ardour/time_axis_view.cc')
-rw-r--r--gtk2_ardour/time_axis_view.cc65
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;
+}