View Issue Details

IDProjectCategoryView StatusLast Update
0001897ardourbugspublic2008-11-21 00:04
Reporterhsyl20 Assigned Topaul  
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionfixed 
Product Version2.0 
Summary0001897: Markers' ranges are not correctly displayed
DescriptionWhen the canvas containing the tracks is scrolled vertically, punch range and loop range are not fully displayed (they don't reach the bottom).

When a punch button is enabled, a red area is displayed to show where recording begins and ends. At the moment, this red area is displayed from "punch in" marker to "punch out" marker whenever one or both punch button is/are enabled. However, when only one punch button is enabled, behavior should be different (IMAO): if "punch in" is enabled and "punch out" disabled, range should be displayed from "punch in" marker to end of tracks; if "punch in" is disabled and "punch out" enabled, range should be displayed from start to "punch out" marker.
Additional InformationI made a patch to correct these bugs (see attachment).
TagsNo tags attached.

Activities

2007-09-29 23:35

 

markers_range.patch (3,470 bytes)   
Index: gtk2_ardour/editor_canvas.cc
===================================================================
--- gtk2_ardour/editor_canvas.cc	(révision 2499)
+++ gtk2_ardour/editor_canvas.cc	(copie de travail)
@@ -311,39 +311,21 @@
 	reset_hscrollbar_stepping ();
 	reset_scrolling_region ();
 
+
+	guint track_canvas_width,track_canvas_height;
+	track_canvas.get_size(track_canvas_width,track_canvas_height);
+	
 	if (edit_cursor) edit_cursor->set_length (canvas_height);
 	if (playhead_cursor) playhead_cursor->set_length (canvas_height);
 
-	if (marker_drag_line) {
-		marker_drag_line_points.back().set_y(canvas_height);
-		marker_drag_line->property_points() = marker_drag_line_points;
-	}
-
-	if (range_marker_drag_rect) {
-		range_marker_drag_rect->property_y1() = 0.0;
-		range_marker_drag_rect->property_y2() = canvas_height;
-	}
-
-	if (transport_loop_range_rect) {
-		transport_loop_range_rect->property_y1() = 0.0;
-		transport_loop_range_rect->property_y2() = canvas_height;
-	}
-
-	if (transport_punch_range_rect) {
-		transport_punch_range_rect->property_y1() = 0.0;
-		transport_punch_range_rect->property_y2() = canvas_height;
-	}
-
-	if (transport_punchin_line) {
-		transport_punchin_line->property_y1() = 0.0;
-		transport_punchin_line->property_y2() = canvas_height;
-	}
-
-	if (transport_punchout_line) {
-		transport_punchout_line->property_y1() = 0.0;
-		transport_punchout_line->property_y2() = canvas_height;
-	}
-		
+	marker_drag_line_points.back().set_y(track_canvas_height);
+	marker_drag_line->property_points() = marker_drag_line_points;
+	range_marker_drag_rect->property_y2() = track_canvas_height;
+	transport_loop_range_rect->property_y2() = track_canvas_height;
+	transport_punch_range_rect->property_y2() = track_canvas_height;
+	transport_punchin_line->property_y2() = track_canvas_height;
+	transport_punchout_line->property_y2() = track_canvas_height;
+	
 	update_fixed_rulers();
 	redisplay_tempo (true);
 
@@ -377,7 +359,17 @@
 
 	// XXX what is the correct height value for the time canvas ? this overstates it
 	time_canvas.set_scroll_region ( 0.0, 0.0, max (last_canvas_unit, canvas_width), canvas_height);
+	
+	guint track_canvas_width,track_canvas_height;
+	track_canvas.get_size(track_canvas_width,track_canvas_height);
+	range_marker_drag_rect->property_y2() = track_canvas_height;
+	transport_loop_range_rect->property_y2() = track_canvas_height;
+	transport_punch_range_rect->property_y2() = track_canvas_height;
+	transport_punchin_line->property_y2() = track_canvas_height;
+	transport_punchout_line->property_y2() = track_canvas_height;
 
+	update_punch_range_view(true);
+
 	controls_layout.queue_resize();
 }
 
Index: gtk2_ardour/editor_markers.cc
===================================================================
--- gtk2_ardour/editor_markers.cc	(révision 2499)
+++ gtk2_ardour/editor_markers.cc	(copie de travail)
@@ -958,9 +958,15 @@
 		double x1 = frame_to_pixel (tpl->start());
 		double x2 = frame_to_pixel (tpl->end());
 		
+		guint 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;
 		
+		transport_punch_range_rect->property_x1() = (Config->get_punch_in() ? x1 : 0);
+		transport_punch_range_rect->property_x2() = (Config->get_punch_out() ? x2 : track_canvas_width);
+		
 		if (visibility) {
 		        transport_punch_range_rect->show();
 		}
markers_range.patch (3,470 bytes)   

paul

2007-12-29 15:04

administrator   ~0004616

thanks. i've applied a modified version of the patch (post-removal of the edit cursor) to my 2.0-ongoing code and will commit it soon.

Issue History

Date Modified Username Field Change
2007-09-29 23:35 hsyl20 New Issue
2007-09-29 23:35 hsyl20 File Added: markers_range.patch
2007-12-29 15:04 paul Status new => resolved
2007-12-29 15:04 paul Resolution open => fixed
2007-12-29 15:04 paul Assigned To => paul
2007-12-29 15:04 paul Note Added: 0004616
2008-11-21 00:04 seablade Status resolved => closed