mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-16 03:36:32 +01:00
Handle changed session duration & resizing canvas better wrt end marker, remove unused last_canvas_frame, don't redraw the entire mixer every time its presented, consistent space between rightmost horizontal scroller position and end marker when zooming, possible fix for gaps in tempo lines.
git-svn-id: svn://localhost/ardour2/branches/3.0@3982 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
063ab23465
commit
b1c48972f2
8 changed files with 40 additions and 51 deletions
|
|
@ -344,7 +344,6 @@ Editor::Editor ()
|
|||
_new_regionviews_show_envelope = false;
|
||||
current_timefx = 0;
|
||||
in_edit_group_row_change = false;
|
||||
last_canvas_frame = 0;
|
||||
playhead_cursor = 0;
|
||||
button_release_can_deselect = true;
|
||||
_dragging_playhead = false;
|
||||
|
|
@ -1174,18 +1173,15 @@ Editor::handle_new_duration ()
|
|||
}
|
||||
|
||||
ENSURE_GUI_THREAD (mem_fun (*this, &Editor::handle_new_duration));
|
||||
nframes64_t new_end = session->current_end_frame() + (nframes64_t) floorf (current_page_frames() * 0.10f);
|
||||
|
||||
nframes64_t new_end = session->get_maximum_extent() + (nframes64_t) floorf (current_page_frames() * 0.10f);
|
||||
|
||||
if (new_end > last_canvas_frame) {
|
||||
last_canvas_frame = new_end;
|
||||
horizontal_adjustment.set_upper (last_canvas_frame / frames_per_unit);
|
||||
horizontal_adjustment.set_upper (new_end / frames_per_unit);
|
||||
horizontal_adjustment.set_page_size (current_page_frames()/frames_per_unit);
|
||||
//reset_scrolling_region ();
|
||||
}
|
||||
|
||||
horizontal_adjustment.set_value (leftmost_frame/frames_per_unit);
|
||||
//cerr << "Editor::handle_new_duration () called ha v:l:u:ps:lcf = " << horizontal_adjustment.get_value() << ":" << horizontal_adjustment.get_lower() << ":" << horizontal_adjustment.get_upper() << ":" << horizontal_adjustment.get_page_size() << ":" << last_canvas_frame << endl;//DEBUG
|
||||
if (horizontal_adjustment.get_value() + canvas_width > horizontal_adjustment.get_upper()) {
|
||||
horizontal_adjustment.set_value (horizontal_adjustment.get_upper() - canvas_width);
|
||||
}
|
||||
//cerr << "Editor::handle_new_duration () called ha v:l:u:ps:lcf = " << horizontal_adjustment.get_value() << ":" << horizontal_adjustment.get_lower() << ":" << horizontal_adjustment.get_upper() << ":" << horizontal_adjustment.get_page_size() << ":" << endl;//DEBUG
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -1329,7 +1325,6 @@ Editor::connect_to_session (Session *t)
|
|||
sfbrowser->set_session (session);
|
||||
}
|
||||
|
||||
last_canvas_frame = 0; // force update in handle_new_duration()
|
||||
handle_new_duration ();
|
||||
|
||||
redisplay_regions ();
|
||||
|
|
@ -4056,7 +4051,8 @@ Editor::end_location_changed (Location* location)
|
|||
{
|
||||
ENSURE_GUI_THREAD (bind (mem_fun(*this, &Editor::end_location_changed), location));
|
||||
//reset_scrolling_region ();
|
||||
horizontal_adjustment.set_upper ( location->start());
|
||||
nframes64_t session_span = location->start() + (nframes64_t) floorf (current_page_frames() * 0.10f);
|
||||
horizontal_adjustment.set_upper (session_span / frames_per_unit);
|
||||
}
|
||||
|
||||
int
|
||||
|
|
@ -4674,14 +4670,14 @@ Editor::idle_visual_changer ()
|
|||
|
||||
if (session) {
|
||||
csf = session->current_start_frame();
|
||||
cef = session->current_end_frame() + (current_page_frames() / 24);// Add a little extra so we can see the end marker
|
||||
cef = session->current_end_frame();
|
||||
}
|
||||
|
||||
/* if we seek beyond the current end of the canvas, move the end */
|
||||
|
||||
if (current_time_origin != pending_visual_change.time_origin) {
|
||||
last_canvas_frame = (cef > (pending_visual_change.time_origin + current_page_frames())) ? cef : pending_visual_change.time_origin + current_page_frames();
|
||||
horizontal_adjustment.set_upper ((cef - csf) / frames_per_unit);
|
||||
cef += current_page_frames() / 10; // Add a little extra so we can see the end marker
|
||||
horizontal_adjustment.set_upper (cef / frames_per_unit);
|
||||
horizontal_adjustment.set_value (pending_visual_change.time_origin / frames_per_unit);
|
||||
} else {
|
||||
update_fixed_rulers();
|
||||
|
|
|
|||
|
|
@ -877,7 +877,6 @@ class Editor : public PublicEditor
|
|||
double canvas_width;
|
||||
double canvas_height;
|
||||
double full_canvas_height;
|
||||
nframes64_t last_canvas_frame;
|
||||
|
||||
bool track_canvas_map_handler (GdkEventAny*);
|
||||
|
||||
|
|
|
|||
|
|
@ -341,13 +341,7 @@ Editor::track_canvas_size_allocated ()
|
|||
(*x)->set_line_vpos (0, canvas_height);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
handle_new_duration ();
|
||||
reset_hscrollbar_stepping ();
|
||||
update_fixed_rulers();
|
||||
redisplay_tempo (false);
|
||||
|
||||
vertical_adjustment.set_page_size (canvas_height);
|
||||
last_trackview_group_vertical_offset = get_trackview_group_vertical_offset ();
|
||||
if ((vertical_adjustment.get_value() + canvas_height) >= vertical_adjustment.get_upper()) {
|
||||
/*
|
||||
|
|
@ -357,6 +351,14 @@ Editor::track_canvas_size_allocated ()
|
|||
vertical_adjustment.set_value (full_canvas_height - canvas_height + 1);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
handle_new_duration ();
|
||||
reset_hscrollbar_stepping ();
|
||||
update_fixed_rulers();
|
||||
redisplay_tempo (false);
|
||||
|
||||
Resized (); /* EMIT_SIGNAL */
|
||||
|
||||
return false;
|
||||
|
|
@ -866,12 +868,6 @@ void
|
|||
Editor::canvas_scroll_to (nframes64_t time_origin)
|
||||
{
|
||||
leftmost_frame = time_origin;
|
||||
nframes64_t rightmost_frame = leftmost_frame + current_page_frames ();
|
||||
|
||||
if (rightmost_frame > last_canvas_frame) {
|
||||
last_canvas_frame = rightmost_frame;
|
||||
//reset_scrolling_region ();
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
|||
|
|
@ -324,7 +324,6 @@ Editor::session_going_away ()
|
|||
entered_track = 0;
|
||||
last_update_frame = 0;
|
||||
drag_info.item = 0;
|
||||
last_canvas_frame = 0;
|
||||
|
||||
playhead_cursor->canvas_item.hide ();
|
||||
|
||||
|
|
|
|||
|
|
@ -4009,7 +4009,6 @@ Editor::region_drag_finished_callback (ArdourCanvas::Item* item, GdkEvent* event
|
|||
|
||||
boost::shared_ptr<Region> new_region;
|
||||
|
||||
|
||||
if (drag_info.copy) {
|
||||
/* we already made a copy */
|
||||
new_region = rv->region();
|
||||
|
|
|
|||
|
|
@ -1856,7 +1856,6 @@ Editor::temporal_zoom_session ()
|
|||
ENSURE_GUI_THREAD (mem_fun (*this, &Editor::temporal_zoom_session));
|
||||
|
||||
if (session) {
|
||||
last_canvas_frame = ((session->current_end_frame() - session->current_start_frame()) + (current_page_frames() / 24));
|
||||
temporal_zoom_by_frame (session->current_start_frame(), session->current_end_frame(), "zoom to session");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -105,9 +105,9 @@ Editor::tempo_map_changed (Change ignored)
|
|||
if (tempo_lines)
|
||||
tempo_lines->tempo_map_changed();
|
||||
|
||||
compute_current_bbt_points(leftmost_frame, leftmost_frame + (nframes_t)(edit_packer.get_width() * frames_per_unit));
|
||||
session->tempo_map().apply_with_metrics (*this, &Editor::draw_metric_marks); // redraw metric markers
|
||||
update_tempo_based_rulers ();
|
||||
compute_current_bbt_points(leftmost_frame, leftmost_frame + current_page_frames());
|
||||
session->tempo_map().apply_with_metrics (*this, &Editor::draw_metric_marks);
|
||||
update_tempo_based_rulers ();// redraw metric markers
|
||||
redraw_measures ();
|
||||
}
|
||||
|
||||
|
|
@ -118,7 +118,7 @@ Editor::redisplay_tempo (bool immediate_redraw)
|
|||
return;
|
||||
}
|
||||
|
||||
compute_current_bbt_points (leftmost_frame, leftmost_frame + (nframes_t)(edit_packer.get_width() * frames_per_unit)); // redraw rulers and measures
|
||||
compute_current_bbt_points (leftmost_frame, leftmost_frame + current_page_frames()); // redraw rulers and measures
|
||||
|
||||
redraw_measures();
|
||||
update_tempo_based_rulers ();
|
||||
|
|
|
|||
|
|
@ -264,7 +264,7 @@ void
|
|||
Mixer_UI::show_window ()
|
||||
{
|
||||
present ();
|
||||
|
||||
if (!_visible) {
|
||||
set_window_pos_and_size ();
|
||||
|
||||
/* now reset each strips width so the right widgets are shown */
|
||||
|
|
@ -277,6 +277,7 @@ Mixer_UI::show_window ()
|
|||
ms = (*ri)[track_columns.strip];
|
||||
ms->set_width (ms->get_width(), ms->width_owner());
|
||||
}
|
||||
}
|
||||
_visible = true;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue