summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/editor.cc6
-rw-r--r--gtk2_ardour/editor_canvas.cc50
-rw-r--r--gtk2_ardour/editor_markers.cc6
-rw-r--r--gtk2_ardour/editor_mouse.cc17
-rw-r--r--gtk2_ardour/editor_ops.cc60
-rw-r--r--gtk2_ardour/time_axis_view.cc1
6 files changed, 81 insertions, 59 deletions
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc
index 87b5f16d7f..db66e6876e 100644
--- a/gtk2_ardour/editor.cc
+++ b/gtk2_ardour/editor.cc
@@ -147,7 +147,7 @@ static const gchar *_zoom_focus_strings[] = {
N_("Center"),
N_("Playhead"),
N_("Mouse"),
- N_("Marker"),
+ N_("Edit Point"),
0
};
@@ -2137,8 +2137,8 @@ Editor::set_edit_point_preference (EditPoint ep)
default:
break;
}
- }
-
+ }
+
instant_save ();
}
diff --git a/gtk2_ardour/editor_canvas.cc b/gtk2_ardour/editor_canvas.cc
index 78b54754d9..482806863b 100644
--- a/gtk2_ardour/editor_canvas.cc
+++ b/gtk2_ardour/editor_canvas.cc
@@ -317,39 +317,21 @@ Editor::track_canvas_size_allocated ()
reset_hscrollbar_stepping ();
reset_scrolling_region ();
- if (playhead_cursor) playhead_cursor->set_length (canvas_height);
+ guint track_canvas_width,track_canvas_height;
+ track_canvas.get_size(track_canvas_width,track_canvas_height);
+ if (playhead_cursor) playhead_cursor->set_length (track_canvas_height);
+
for (MarkerSelection::iterator x = selection->markers.begin(); x != selection->markers.end(); ++x) {
- (*x)->set_line_length (canvas_height);
- }
-
- // EDIT CURSOR XXX set line height for selected markers here
-
- 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;
+ (*x)->set_line_length (track_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;
- }
-
+ 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);
@@ -383,6 +365,16 @@ Editor::reset_scrolling_region (Gtk::Allocation* alloc)
// 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();
}
diff --git a/gtk2_ardour/editor_markers.cc b/gtk2_ardour/editor_markers.cc
index 116359841f..c36cb5bf06 100644
--- a/gtk2_ardour/editor_markers.cc
+++ b/gtk2_ardour/editor_markers.cc
@@ -1105,9 +1105,15 @@ Editor::update_punch_range_view (bool visibility)
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();
}
diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc
index 553e517e70..5341d1012c 100644
--- a/gtk2_ardour/editor_mouse.cc
+++ b/gtk2_ardour/editor_mouse.cc
@@ -3121,6 +3121,7 @@ Editor::region_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* event)
possibly_copy_regions_during_grab (event);
if (!check_region_drag_possible (&tv)) {
+ cerr << "early return in RDMC\n";
return;
}
@@ -3135,6 +3136,12 @@ Editor::region_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* event)
pointer_y_span = 0;
goto y_axis_done;
}
+
+ cerr << "last tv order = " << drag_info.last_trackview->name() << " order = "
+ << drag_info.last_trackview->order
+ << " vs " << tv->name()
+ << " order " << tv->order
+ << endl;
if ((pointer_y_span = (drag_info.last_trackview->order - tv->order)) != 0) {
@@ -3143,6 +3150,8 @@ Editor::region_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* event)
bitset <1024> tracks (0x00);
/* get a bitmask representing the visible tracks */
+ cerr << "Pointer y span non zero (" << pointer_y_span << ")\n";
+
for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) {
TimeAxisView *tracklist_timeview;
tracklist_timeview = (*i);
@@ -3327,7 +3336,7 @@ Editor::region_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* event)
if (pending_region_position != drag_info.last_frame_position && !drag_info.x_constrained) {
- /* now compute the canvas unit distance we need to move the regiondrag_info.last_trackview->order
+ /* now compute the canvas unit distance we need to move the regionview
to make it appear at the new location.
*/
@@ -3353,6 +3362,8 @@ Editor::region_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* event)
PREPARE TO MOVE
************************************************************/
+ cerr << "prep +> xdelta = " << x_delta << " pys = " << pointer_y_span << endl;
+
if (x_delta == 0 && (pointer_y_span == 0)) {
/* haven't reached next snap point, and we're not switching
trackviews. nothing to do.
@@ -3400,6 +3411,8 @@ Editor::region_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* event)
pair<set<boost::shared_ptr<Playlist> >::iterator,bool> insert_result;
const list<RegionView*>& layered_regions = selection->regions.by_layer();
+ cerr << "moving " << layered_regions.size() << "regions\n";
+
for (list<RegionView*>::const_iterator i = layered_regions.begin(); i != layered_regions.end(); ++i) {
RegionView* rv = (*i);
@@ -3505,6 +3518,8 @@ Editor::region_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* event)
cursor_group->raise_to_top();
rv->fake_set_opaque (true);
}
+
+ cerr << "about to move, xd = " << x_delta << " yd = " << y_delta << endl;
if (drag_info.brushing) {
mouse_brush_insert_region (rv, pending_region_position);
diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc
index b30c44eae0..88e284776c 100644
--- a/gtk2_ardour/editor_ops.cc
+++ b/gtk2_ardour/editor_ops.cc
@@ -1512,7 +1512,8 @@ Editor::temporal_zoom (gdouble fpu)
nframes64_t current_leftmost = leftmost_frame;
nframes64_t current_rightmost;
nframes64_t current_center;
- nframes64_t new_page;
+ nframes64_t new_page_size;
+ nframes64_t half_page_size;
nframes64_t leftmost_after_zoom = 0;
nframes64_t where;
bool in_track_canvas;
@@ -1520,7 +1521,8 @@ Editor::temporal_zoom (gdouble fpu)
nfpu = fpu;
- new_page = (nframes_t) floor (canvas_width * nfpu);
+ new_page_size = (nframes_t) floor (canvas_width * nfpu);
+ half_page_size = new_page_size / 2;
switch (zoom_focus) {
case ZoomFocusLeft:
@@ -1529,28 +1531,28 @@ Editor::temporal_zoom (gdouble fpu)
case ZoomFocusRight:
current_rightmost = leftmost_frame + current_page;
- if (current_rightmost > new_page) {
- leftmost_after_zoom = current_rightmost - new_page;
- } else {
+ if (current_rightmost < new_page_size) {
leftmost_after_zoom = 0;
+ } else {
+ leftmost_after_zoom = current_rightmost - new_page_size;
}
break;
case ZoomFocusCenter:
current_center = current_leftmost + (current_page/2);
- if (current_center > (new_page/2)) {
- leftmost_after_zoom = current_center - (new_page / 2);
- } else {
+ if (current_center < half_page_size) {
leftmost_after_zoom = 0;
+ } else {
+ leftmost_after_zoom = current_center - half_page_size;
}
break;
case ZoomFocusPlayhead:
/* try to keep the playhead in the center */
- if (playhead_cursor->current_frame > new_page/2) {
- leftmost_after_zoom = playhead_cursor->current_frame - (new_page/2);
- } else {
+ if (playhead_cursor->current_frame < half_page_size) {
leftmost_after_zoom = 0;
+ } else {
+ leftmost_after_zoom = playhead_cursor->current_frame - half_page_size;
}
break;
@@ -1561,20 +1563,20 @@ Editor::temporal_zoom (gdouble fpu)
/* use playhead instead */
where = playhead_cursor->current_frame;
- if (where > new_page/2) {
- leftmost_after_zoom = where - (new_page/2);
- } else {
+ if (where < half_page_size) {
leftmost_after_zoom = 0;
+ } else {
+ leftmost_after_zoom = where - half_page_size;
}
} else {
- double l = - ((new_page * ((where - current_leftmost)/(double)current_page)) - where);
+ double l = - ((new_page_size * ((where - current_leftmost)/(double)current_page)) - where);
if (l < 0) {
leftmost_after_zoom = 0;
} else if (l > max_frames) {
- leftmost_after_zoom = max_frames - new_page;
+ leftmost_after_zoom = max_frames - new_page_size;
} else {
leftmost_after_zoom = (nframes64_t) l;
}
@@ -1584,10 +1586,23 @@ Editor::temporal_zoom (gdouble fpu)
case ZoomFocusEdit:
/* try to keep the edit point in the center */
- if (get_preferred_edit_position() > new_page/2) {
- leftmost_after_zoom = get_preferred_edit_position() - (new_page/2);
+ where = get_preferred_edit_position ();
+
+ if (where > 0) {
+
+ double l = - ((new_page_size * ((where - current_leftmost)/(double)current_page)) - where);
+
+ if (l < 0) {
+ leftmost_after_zoom = 0;
+ } else if (l > max_frames) {
+ leftmost_after_zoom = max_frames - new_page_size;
+ } else {
+ leftmost_after_zoom = (nframes64_t) l;
+ }
+
} else {
- leftmost_after_zoom = 0;
+ /* edit point not defined */
+ return;
}
break;
@@ -1595,13 +1610,6 @@ Editor::temporal_zoom (gdouble fpu)
// leftmost_after_zoom = min (leftmost_after_zoom, session->current_end_frame());
-// begin_reversible_command (_("zoom"));
-// session->add_undo (bind (mem_fun(*this, &Editor::reposition_and_zoom), current_leftmost, frames_per_unit));
-// session->add_redo (bind (mem_fun(*this, &Editor::reposition_and_zoom), leftmost_after_zoom, nfpu));
-// commit_reversible_command ();
-
- // cerr << "repos & zoom to " << leftmost_after_zoom << " @ " << nfpu << endl;
-
reposition_and_zoom (leftmost_after_zoom, nfpu);
}
diff --git a/gtk2_ardour/time_axis_view.cc b/gtk2_ardour/time_axis_view.cc
index dd5471ba9f..943ef5acb7 100644
--- a/gtk2_ardour/time_axis_view.cc
+++ b/gtk2_ardour/time_axis_view.cc
@@ -219,6 +219,7 @@ TimeAxisView::show_at (double y, int& nth, VBox *parent)
canvas_display->show();/* XXX not necessary */
y_position = y;
order = nth;
+ cerr << name() << " has order set to " << nth << endl;
_hidden = false;
/* height in pixels depends on _order, so update it now we've changed _order */