* bugfix from http://tracker.ardour.org/view.php?id=2155 thanks to kristian: fix...
[ardour.git] / gtk2_ardour / editor_markers.cc
index 68ce914025356e007dbb07eadf091ec4d8a06049..4b0ba07b77aeadd4b0b749fe4cd4f71f1bca2ba9 100644 (file)
@@ -79,7 +79,7 @@ Editor::add_new_location (Location *location)
 
        if (location->is_mark()) {
 
-               if (location->is_cd_marker() && ruler_shown[ruler_time_cd_marker]) {
+               if (location->is_cd_marker() && ruler_cd_marker_action->get_active()) {
                        lam->start = new Marker (*this, *cd_marker_group, color, location->name(), Marker::Mark, location->start());
                }
                else {
@@ -103,7 +103,7 @@ Editor::add_new_location (Location *location)
                
        } else {
                // range marker
-               if (location->is_cd_marker() && ruler_shown[ruler_time_cd_marker]) {
+               if (location->is_cd_marker() && ruler_cd_marker_action->get_active()) {
                        lam->start = new Marker (*this, *cd_marker_group, color, 
                                                 location->name(), Marker::Start, location->start());
                        lam->end   = new Marker (*this, *cd_marker_group, color, 
@@ -212,7 +212,7 @@ void Editor::update_cd_marker_display ()
 void Editor::ensure_cd_marker_updated (LocationMarkers * lam, Location * location)
 {
        if (location->is_cd_marker()
-           && (ruler_shown[ruler_time_cd_marker] &&  lam->start->get_parent() != cd_marker_group))
+           && (ruler_cd_marker_action->get_active() &&  lam->start->get_parent() != cd_marker_group))
        {
                //cerr << "reparenting non-cd marker so it can be relocated: " << location->name() << endl;
                if (lam->start) {
@@ -222,7 +222,7 @@ void Editor::ensure_cd_marker_updated (LocationMarkers * lam, Location * locatio
                        lam->end->reparent (*cd_marker_group);
                }
        }
-       else if ( (!location->is_cd_marker() || !ruler_shown[ruler_time_cd_marker]
+       else if ( (!location->is_cd_marker() || !ruler_cd_marker_action->get_active()
                  && (lam->start->get_parent() == cd_marker_group))  
        {
                //cerr << "reparenting non-cd marker so it can be relocated: " << location->name() << endl;
@@ -388,13 +388,20 @@ Editor::LocationMarkers::set_color_rgba (uint32_t rgba)
 }
 
 void
-Editor::mouse_add_new_marker (nframes_t where, bool is_cd)
+Editor::mouse_add_new_marker (nframes_t where, bool is_cd, bool is_xrun)
 {
-       string markername;
+       string markername, markerprefix;
        int flags = (is_cd ? Location::IsCDMarker|Location::IsMark : Location::IsMark);
-       
+
+       if (is_xrun) {
+               markerprefix = "xrun";
+               flags = Location::IsMark;
+       } else {
+               markerprefix = "mark";
+       }
+
        if (session) {
-               session->locations()->next_available_name(markername,"mark");
+               session->locations()->next_available_name(markername, markerprefix);
                Location *location = new Location (where, where, markername, (Location::Flags) flags);
                session->begin_reversible_command (_("add marker"));
                 XMLNode &before = session->locations()->get_state();
@@ -1106,7 +1113,7 @@ Editor::update_punch_range_view (bool visibility)
                double x2 = frame_to_pixel (tpl->end());
                
                guint track_canvas_width,track_canvas_height;
-               track_canvas.get_size(track_canvas_width,track_canvas_height);
+               track_canvas->get_size(track_canvas_width,track_canvas_height);
                
                transport_punch_range_rect->property_x1() = x1;
                transport_punch_range_rect->property_x2() = x2;
@@ -1151,6 +1158,10 @@ Editor::update_punch_range_view (bool visibility)
 void
 Editor::marker_selection_changed ()
 {
+       if (session && session->deletion_in_progress()) {
+               return;
+       }
+
        for (LocationMarkerMap::iterator i = location_markers.begin(); i != location_markers.end(); ++i) {
                LocationMarkers* lam = i->second;
 
@@ -1172,7 +1183,7 @@ Editor::marker_selection_changed ()
        }
 
        for (MarkerSelection::iterator x = selection->markers.begin(); x != selection->markers.end(); ++x) {
-               (*x)->add_line (cursor_group, canvas_height);
+               (*x)->add_line (cursor_group, vertical_adjustment.get_value(), canvas_height);
                (*x)->show_line ();
        }