diff options
-rw-r--r-- | gtk2_ardour/editor.cc | 6 | ||||
-rw-r--r-- | gtk2_ardour/editor_canvas.cc | 50 | ||||
-rw-r--r-- | gtk2_ardour/editor_markers.cc | 6 | ||||
-rw-r--r-- | gtk2_ardour/editor_mouse.cc | 17 | ||||
-rw-r--r-- | gtk2_ardour/editor_ops.cc | 60 | ||||
-rw-r--r-- | gtk2_ardour/time_axis_view.cc | 1 |
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 */ |