summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/automation_line.cc5
-rw-r--r--gtk2_ardour/automation_line.h2
-rw-r--r--gtk2_ardour/automation_streamview.cc11
-rw-r--r--gtk2_ardour/automation_streamview.h2
-rw-r--r--gtk2_ardour/automation_time_axis.cc10
5 files changed, 24 insertions, 6 deletions
diff --git a/gtk2_ardour/automation_line.cc b/gtk2_ardour/automation_line.cc
index 71a29af3dc..7d5ca540a8 100644
--- a/gtk2_ardour/automation_line.cc
+++ b/gtk2_ardour/automation_line.cc
@@ -1121,16 +1121,13 @@ AutomationLine::reset ()
void
AutomationLine::clear ()
{
- /* parent must create command */
+ /* parent must create and commit command */
XMLNode &before = alist->get_state();
alist->clear();
trackview.editor().session()->add_command (
new MementoCommand<AutomationList> (memento_command_binder (), &before, &alist->get_state())
);
-
- trackview.editor().session()->commit_reversible_command ();
- trackview.editor().session()->set_dirty ();
}
void
diff --git a/gtk2_ardour/automation_line.h b/gtk2_ardour/automation_line.h
index 2b63cb1295..7fcad9a4f8 100644
--- a/gtk2_ardour/automation_line.h
+++ b/gtk2_ardour/automation_line.h
@@ -64,7 +64,7 @@ class AutomationLine : public sigc::trackable, public PBD::StatefulDestructible
void queue_reset ();
void reset ();
- void clear();
+ void clear ();
std::list<ControlPoint*> point_selection_to_control_points (PointSelection const &);
void set_selected_points (PointSelection&);
diff --git a/gtk2_ardour/automation_streamview.cc b/gtk2_ardour/automation_streamview.cc
index 146cdc7b89..76e565d414 100644
--- a/gtk2_ardour/automation_streamview.cc
+++ b/gtk2_ardour/automation_streamview.cc
@@ -262,3 +262,14 @@ AutomationStreamView::interpolation () const
return v->line()->the_list()->interpolation ();
}
+
+/** Clear all automation displayed in this view */
+void
+AutomationStreamView::clear ()
+{
+ for (list<RegionView*>::iterator i = region_views.begin(); i != region_views.end(); ++i) {
+ AutomationRegionView* arv = dynamic_cast<AutomationRegionView*> (*i);
+ assert (arv);
+ arv->line()->clear ();
+ }
+}
diff --git a/gtk2_ardour/automation_streamview.h b/gtk2_ardour/automation_streamview.h
index 335d63ca7a..0791764a4a 100644
--- a/gtk2_ardour/automation_streamview.h
+++ b/gtk2_ardour/automation_streamview.h
@@ -59,6 +59,8 @@ class AutomationStreamView : public StreamView
void set_interpolation (ARDOUR::AutomationList::InterpolationStyle);
ARDOUR::AutomationList::InterpolationStyle interpolation () const;
+ void clear ();
+
private:
void setup_rec_box ();
diff --git a/gtk2_ardour/automation_time_axis.cc b/gtk2_ardour/automation_time_axis.cc
index a7114f8ff0..e9cb98ca34 100644
--- a/gtk2_ardour/automation_time_axis.cc
+++ b/gtk2_ardour/automation_time_axis.cc
@@ -379,10 +379,18 @@ AutomationTimeAxisView::set_interpolation (AutomationList::InterpolationStyle st
void
AutomationTimeAxisView::clear_clicked ()
{
+ assert (_line || _view);
+
+ _session->begin_reversible_command (_("clear automation"));
+
if (_line) {
- _session->begin_reversible_command (_("clear automation"));
_line->clear ();
+ } else if (_view) {
+ _view->clear ();
}
+
+ _session->commit_reversible_command ();
+ _session->set_dirty ();
}
void