+ delete group;
+ delete _time_bars_line;
+ delete _track_canvas_line;
+}
+
+void Marker::reparent(ArdourCanvas::Group & parent)
+{
+ group->reparent (&parent);
+ _parent = &parent;
+}
+
+void
+Marker::set_selected (bool s)
+{
+ _selected = s;
+ setup_line ();
+}
+
+void
+Marker::set_show_line (bool s)
+{
+ _line_shown = s;
+ setup_line ();
+}
+
+void
+Marker::setup_line ()
+{
+ if (_shown && (_selected || _line_shown)) {
+
+ if (_time_bars_line == 0) {
+
+ _time_bars_line = new ArdourCanvas::Line (editor.get_time_bars_group());
+ _time_bars_line->set_outline_color (ARDOUR_UI::config()->get_canvasvar_EditPoint());
+ _time_bars_line->Event.connect (sigc::bind (sigc::mem_fun (editor, &PublicEditor::canvas_marker_event), group, this));
+
+ _track_canvas_line = new ArdourCanvas::Line (editor.get_track_canvas_group());
+ _track_canvas_line->set_outline_color (ARDOUR_UI::config()->get_canvasvar_EditPoint());
+ _track_canvas_line->Event.connect (sigc::bind (sigc::mem_fun (editor, &PublicEditor::canvas_marker_event), group, this));
+ }
+
+ ArdourCanvas::Duple g = group->item_to_canvas (ArdourCanvas::Duple (0, 0));
+ ArdourCanvas::Duple d = _time_bars_line->canvas_to_item (ArdourCanvas::Duple (g.x + _shift, 0));
+
+ _time_bars_line->set_x0 (d.x);
+ _time_bars_line->set_x1 (d.x);
+ _time_bars_line->set_y0 (d.y);
+ _time_bars_line->set_y1 (ArdourCanvas::COORD_MAX);
+ _time_bars_line->set_outline_color (_selected ? ARDOUR_UI::config()->get_canvasvar_EditPoint() : _color);
+ _time_bars_line->raise_to_top ();
+ _time_bars_line->show ();
+
+ d = _track_canvas_line->canvas_to_item (ArdourCanvas::Duple (g.x + _shift, 0));
+ _track_canvas_line->set_x0 (d.x);
+ _track_canvas_line->set_x1 (d.x);
+ _track_canvas_line->set_y0 (d.y);
+ _track_canvas_line->set_y1 (ArdourCanvas::COORD_MAX);
+ _track_canvas_line->set_outline_color (_selected ? ARDOUR_UI::config()->get_canvasvar_EditPoint() : _color);
+ _track_canvas_line->raise_to_top ();
+ _track_canvas_line->show ();
+
+ } else {
+ if (_time_bars_line) {
+ _time_bars_line->hide ();
+ _track_canvas_line->hide ();
+ }
+ }
+}
+
+void
+Marker::canvas_height_set (double h)
+{
+ _canvas_height = h;
+ setup_line ();