summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2007-05-31 21:15:28 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2007-05-31 21:15:28 +0000
commit52a8242a1158426caeed4757bbc3f7f71091e351 (patch)
tree43de2da9007dd8178162e80b778586f1b460eb12 /gtk2_ardour
parent539aa71d180d6b3d5c887707c356d3d00c0b37e8 (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.cc32
-rw-r--r--gtk2_ardour/draginfo.h10
-rw-r--r--gtk2_ardour/editor.cc12
-rw-r--r--gtk2_ardour/editor.h9
-rw-r--r--gtk2_ardour/editor_mouse.cc22
-rw-r--r--gtk2_ardour/editor_region_list.cc19
-rw-r--r--gtk2_ardour/editor_rulers.cc25
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());
}
}