diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2007-05-31 21:15:28 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2007-05-31 21:15:28 +0000 |
commit | 52a8242a1158426caeed4757bbc3f7f71091e351 (patch) | |
tree | 43de2da9007dd8178162e80b778586f1b460eb12 /gtk2_ardour | |
parent | 539aa71d180d6b3d5c887707c356d3d00c0b37e8 (diff) |
fixup botched xfade-as-audioregion; apply work from 2.0-ongoing
git-svn-id: svn://localhost/ardour2/trunk@1933 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/crossfade_edit.cc | 32 | ||||
-rw-r--r-- | gtk2_ardour/draginfo.h | 10 | ||||
-rw-r--r-- | gtk2_ardour/editor.cc | 12 | ||||
-rw-r--r-- | gtk2_ardour/editor.h | 9 | ||||
-rw-r--r-- | gtk2_ardour/editor_mouse.cc | 22 | ||||
-rw-r--r-- | gtk2_ardour/editor_region_list.cc | 19 | ||||
-rw-r--r-- | gtk2_ardour/editor_rulers.cc | 25 |
7 files changed, 63 insertions, 66 deletions
diff --git a/gtk2_ardour/crossfade_edit.cc b/gtk2_ardour/crossfade_edit.cc index ae63f8c6fa..badbc0f105 100644 --- a/gtk2_ardour/crossfade_edit.cc +++ b/gtk2_ardour/crossfade_edit.cc @@ -721,6 +721,20 @@ CrossfadeEditor::redraw () void CrossfadeEditor::apply_preset (Preset *preset) { + + WhichFade wf = find(fade_in_presets->begin(), fade_in_presets->end(), preset) != fade_in_presets->end() ? In : Out; + + if (current != wf) { + + if (wf == In) { + select_in_button.clicked(); + } else { + select_out_button.clicked(); + } + + curve_select_clicked (wf); + } + for (list<Point*>::iterator i = fade[current].points.begin(); i != fade[current].points.end(); ++i) { delete *i; } @@ -820,6 +834,8 @@ CrossfadeEditor::reset () { set (xfade->fade_in(), In); set (xfade->fade_out(), Out); + + curve_select_clicked (current); } void @@ -980,14 +996,6 @@ CrossfadeEditor::curve_select_clicked (WhichFade wf) (*i)->box->show (); } - for (vector<Button*>::iterator i = fade_out_buttons.begin(); i != fade_out_buttons.end(); ++i) { - (*i)->set_sensitive (false); - } - - for (vector<Button*>::iterator i = fade_in_buttons.begin(); i != fade_in_buttons.end(); ++i) { - (*i)->set_sensitive (true); - } - } else { for (vector<ArdourCanvas::WaveView*>::iterator i = fade[In].waves.begin(); i != fade[In].waves.end(); ++i) { @@ -1011,14 +1019,6 @@ CrossfadeEditor::curve_select_clicked (WhichFade wf) (*i)->box->show(); } - for (vector<Button*>::iterator i = fade_out_buttons.begin(); i != fade_out_buttons.end(); ++i) { - (*i)->set_sensitive (true); - } - - for (vector<Button*>::iterator i = fade_in_buttons.begin(); i != fade_in_buttons.end(); ++i) { - (*i)->set_sensitive (false); - } - } } diff --git a/gtk2_ardour/draginfo.h b/gtk2_ardour/draginfo.h index c38c2aaa65..0b9648a81c 100644 --- a/gtk2_ardour/draginfo.h +++ b/gtk2_ardour/draginfo.h @@ -39,11 +39,11 @@ struct DragInfo { ArdourCanvas::Item* item; ItemType item_type; void* data; - nframes_t last_frame_position; - int64_t pointer_frame_offset; - nframes_t grab_frame; - nframes_t last_pointer_frame; - nframes_t current_pointer_frame; + nframes64_t last_frame_position; + nframes64_t pointer_frame_offset; + nframes64_t grab_frame; + nframes64_t last_pointer_frame; + nframes64_t current_pointer_frame; double grab_x, grab_y; double cumulative_x_drag; double cumulative_y_drag; diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index 6ed5561804..7b6b122ea0 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -2059,7 +2059,7 @@ Editor::trackview_by_y_position (double y) } void -Editor::snap_to (nframes_t& start, int32_t direction, bool for_mark) +Editor::snap_to (nframes64_t& start, int32_t direction, bool for_mark) { Location* before = 0; Location* after = 0; @@ -2068,11 +2068,11 @@ Editor::snap_to (nframes_t& start, int32_t direction, bool for_mark) return; } - const nframes_t one_second = session->frame_rate(); - const nframes_t one_minute = session->frame_rate() * 60; - const nframes_t one_smpte_second = (nframes_t)(rint(session->smpte_frames_per_second()) * session->frames_per_smpte_frame()); - nframes_t one_smpte_minute = (nframes_t)(rint(session->smpte_frames_per_second()) * session->frames_per_smpte_frame() * 60); - nframes_t presnap = start; + const nframes64_t one_second = session->frame_rate(); + const nframes64_t one_minute = session->frame_rate() * 60; + const nframes64_t one_smpte_second = (nframes64_t)(rint(session->smpte_frames_per_second()) * session->frames_per_smpte_frame()); + nframes64_t one_smpte_minute = (nframes64_t)(rint(session->smpte_frames_per_second()) * session->frames_per_smpte_frame() * 60); + nframes64_t presnap = start; switch (snap_type) { case SnapToFrame: diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index c9af6aa309..dd433c77a2 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -1286,7 +1286,14 @@ class Editor : public PublicEditor void tempo_map_changed (ARDOUR::Change); void redisplay_tempo (bool immediate_redraw); - void snap_to (nframes_t& first, int32_t direction = 0, bool for_mark = false); + void snap_to (nframes64_t& first, int32_t direction = 0, bool for_mark = false); + void snap_to (nframes_t& first, int32_t direction = 0, bool for_mark = false) { + /* XXX remove this function when everything moves to 64 bit frame counts */ + nframes64_t first64 = first; + snap_to (first64, direction, for_mark); + first = (nframes_t) first64; + } + uint32_t bbt_beat_subdivision; /* toolbar */ diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc index 54a9ecb440..b567d847c7 100644 --- a/gtk2_ardour/editor_mouse.cc +++ b/gtk2_ardour/editor_mouse.cc @@ -1409,9 +1409,9 @@ Editor::motion_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item */ if (!drag_info.move_threshold_passed) { - bool x_threshold_passed = (abs ((int64_t) (drag_info.current_pointer_x - drag_info.grab_x)) > 4LL); - bool y_threshold_passed = (abs ((int64_t) (drag_info.current_pointer_y - drag_info.grab_y)) > 4LL); - + bool x_threshold_passed = (abs ((nframes64_t) (drag_info.current_pointer_x - drag_info.grab_x)) > 4LL); + bool y_threshold_passed = (abs ((nframes64_t) (drag_info.current_pointer_y - drag_info.grab_y)) > 4LL); + drag_info.move_threshold_passed = (x_threshold_passed || y_threshold_passed); // and change the initial grab loc/frame if this drag info wants us to @@ -1525,7 +1525,7 @@ Editor::start_grab (GdkEvent* event, Gdk::Cursor *cursor) drag_info.y_constrained = false; } - drag_info.grab_frame = event_frame(event, &drag_info.grab_x, &drag_info.grab_y); + drag_info.grab_frame = event_frame (event, &drag_info.grab_x, &drag_info.grab_y); drag_info.last_pointer_frame = drag_info.grab_frame; drag_info.current_pointer_frame = drag_info.grab_frame; drag_info.current_pointer_x = drag_info.grab_x; @@ -1776,10 +1776,9 @@ Editor::fade_out_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* event nframes_t pos; nframes_t fade_length; - if ((long)drag_info.current_pointer_frame > drag_info.pointer_frame_offset) { + if (drag_info.current_pointer_frame > drag_info.pointer_frame_offset) { pos = drag_info.current_pointer_frame - drag_info.pointer_frame_offset; - } - else { + } else { pos = 0; } @@ -2024,8 +2023,7 @@ Editor::marker_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* event) nframes_t newframe; if (drag_info.pointer_frame_offset <= drag_info.current_pointer_frame) { newframe = drag_info.current_pointer_frame - drag_info.pointer_frame_offset; - } - else { + } else { newframe = 0; } @@ -2959,7 +2957,7 @@ Editor::region_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* event) int32_t sync_dir; pending_region_position = drag_info.current_pointer_frame - drag_info.pointer_frame_offset; - + sync_offset = rv->region()->sync_offset (sync_dir); sync_frame = rv->region()->adjust_to_sync (pending_region_position); @@ -2997,7 +2995,7 @@ Editor::region_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* event) } else { x_delta = -((double) (drag_info.last_frame_position - pending_region_position) / frames_per_unit); } - + drag_info.last_frame_position = pending_region_position; } else { @@ -3021,6 +3019,7 @@ Editor::region_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* event) return; } + if (x_delta < 0) { for (list<RegionView*>::const_iterator i = selection->regions.by_layer().begin(); i != selection->regions.by_layer().end(); ++i) { @@ -3147,6 +3146,7 @@ Editor::region_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* event) x_delta = max_frames - rv->region()->last_frame(); } + if (drag_info.first_move) { /* hide any dependent views */ diff --git a/gtk2_ardour/editor_region_list.cc b/gtk2_ardour/editor_region_list.cc index 8a50332193..a9df928222 100644 --- a/gtk2_ardour/editor_region_list.cc +++ b/gtk2_ardour/editor_region_list.cc @@ -101,8 +101,9 @@ Editor::add_region_to_region_display (boost::shared_ptr<Region> region) TreeModel::Row parent; TreeModel::Row child; - if (iter == region_list_model->children().end()) { - + + if (!iter) { + parent = *(region_list_model->append()); parent[region_list_columns.name] = _("Hidden"); @@ -119,6 +120,7 @@ Editor::add_region_to_region_display (boost::shared_ptr<Region> region) proxy.reset (); } else { + parent = *iter; } @@ -594,7 +596,6 @@ Editor::hide_a_region (boost::shared_ptr<Region> r) void Editor::remove_a_region (boost::shared_ptr<Region> r) { - cerr << "remove " << r->name(); session->remove_region_from_region_list (r); } @@ -613,7 +614,6 @@ Editor::hide_region_from_region_list () void Editor::remove_region_from_region_list () { - cerr << "Mapping remove over region selection\n"; region_list_selection_mapover (mem_fun (*this, &Editor::remove_a_region)); } @@ -636,8 +636,15 @@ bool Editor::region_list_selection_filter (const RefPtr<TreeModel>& model, const TreeModel::Path& path, bool yn) { /* not possible to select rows that do not represent regions, like "Hidden" */ + + TreeModel::iterator iter = model->get_iter (path); + + if (iter) { + boost::shared_ptr<Region> r =(*iter)[region_list_columns.region]; + if (!r) { + return false; + } + } - /// XXXX FIXME boost::shared_ptr<Region> r = ((model->get_iter (path)))[region_list_columns.region]; - /// return r != 0; return true; } diff --git a/gtk2_ardour/editor_rulers.cc b/gtk2_ardour/editor_rulers.cc index a101d5cc03..9b57568af7 100644 --- a/gtk2_ardour/editor_rulers.cc +++ b/gtk2_ardour/editor_rulers.cc @@ -268,8 +268,7 @@ Editor::ruler_mouse_motion (GdkEventMotion* ev) nframes_t where = leftmost_frame + pixel_to_frame (x); /// ripped from maybe_autoscroll, and adapted to work here - nframes_t one_page = (nframes_t) rint (canvas_width * frames_per_unit); - nframes_t rightmost_frame = leftmost_frame + one_page; + nframes_t rightmost_frame = leftmost_frame + current_page_frames (); jack_nframes_t frame = pixel_to_frame (cx); @@ -730,12 +729,7 @@ Editor::update_just_smpte () return; } - /* XXX Note the potential loss of accuracy here as we convert from - an uint32_t (or larger) to a float ... what to do ? - */ - - nframes_t page = (nframes_t) floor (canvas_width * frames_per_unit); - nframes_t rightmost_frame = leftmost_frame + page; + nframes_t rightmost_frame = leftmost_frame + current_page_frames(); if (ruler_shown[ruler_metric_smpte]) { gtk_custom_ruler_set_range (GTK_CUSTOM_RULER(_smpte_ruler), leftmost_frame, rightmost_frame, @@ -752,17 +746,11 @@ Editor::update_fixed_rulers () return; } - /* XXX Note the potential loss of accuracy here as we convert from - an uint32_t (or larger) to a float ... what to do ? - */ - - nframes_t page = (nframes_t) floor (canvas_width * frames_per_unit); - ruler_metrics[ruler_metric_smpte].units_per_pixel = frames_per_unit; ruler_metrics[ruler_metric_frames].units_per_pixel = frames_per_unit; ruler_metrics[ruler_metric_minsec].units_per_pixel = frames_per_unit; - rightmost_frame = leftmost_frame + page; + rightmost_frame = leftmost_frame + current_page_frames (); /* these force a redraw, which in turn will force execution of the metric callbacks to compute the relevant ticks to display. @@ -791,15 +779,10 @@ Editor::update_tempo_based_rulers () return; } - /* XXX Note the potential loss of accuracy here as we convert from - an uint32_t (or larger) to a float ... what to do ? - */ - - nframes_t page = (nframes_t) floor (canvas_width * frames_per_unit); ruler_metrics[ruler_metric_bbt].units_per_pixel = frames_per_unit; if (ruler_shown[ruler_metric_bbt]) { - gtk_custom_ruler_set_range (GTK_CUSTOM_RULER(_bbt_ruler), leftmost_frame, leftmost_frame+page, + gtk_custom_ruler_set_range (GTK_CUSTOM_RULER(_bbt_ruler), leftmost_frame, leftmost_frame+current_page_frames(), leftmost_frame, session->current_end_frame()); } } |