summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2010-10-28 17:09:32 +0000
committerCarl Hetherington <carl@carlh.net>2010-10-28 17:09:32 +0000
commit6f9e9ad23e98ac1b3f52065ad53641cbf4c38f22 (patch)
tree9db23782df87668152fbdf6f16a03651733ec511 /gtk2_ardour
parentd731e4dba1109ba641cea132c004dad71cbc4268 (diff)
Make normalize cancel button work.
git-svn-id: svn://localhost/ardour2/branches/3.0@7935 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/editor_ops.cc11
-rw-r--r--gtk2_ardour/normalize_dialog.cc10
-rw-r--r--gtk2_ardour/normalize_dialog.h1
3 files changed, 20 insertions, 2 deletions
diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc
index b03df00cec..bce0e5c475 100644
--- a/gtk2_ardour/editor_ops.cc
+++ b/gtk2_ardour/editor_ops.cc
@@ -4504,8 +4504,6 @@ Editor::normalize_region ()
return;
}
- begin_reversible_command (_("normalize"));
-
set_canvas_cursor (wait_cursor);
gdk_flush ();
@@ -4522,12 +4520,21 @@ Editor::normalize_region ()
if (arv) {
dialog.descend (1.0 / regions);
double const a = arv->audio_region()->maximum_amplitude (&dialog);
+
+ if (a == -1) {
+ /* the user cancelled the operation */
+ set_canvas_cursor (current_canvas_cursor);
+ return;
+ }
+
max_amps.push_back (a);
max_amp = max (max_amp, a);
dialog.ascend ();
}
}
+ begin_reversible_command (_("normalize"));
+
list<double>::const_iterator a = max_amps.begin ();
for (RegionSelection::iterator r = rs.begin(); r != rs.end(); ++r) {
diff --git a/gtk2_ardour/normalize_dialog.cc b/gtk2_ardour/normalize_dialog.cc
index 9a34c3a4bb..716bfa7c39 100644
--- a/gtk2_ardour/normalize_dialog.cc
+++ b/gtk2_ardour/normalize_dialog.cc
@@ -65,6 +65,8 @@ NormalizeDialog::NormalizeDialog (bool more_than_one)
add_button (Stock::CANCEL, RESPONSE_CANCEL);
add_button (_("Normalize"), RESPONSE_ACCEPT);
+
+ signal_response().connect (sigc::mem_fun (*this, &NormalizeDialog::button_clicked));
}
bool
@@ -96,3 +98,11 @@ NormalizeDialog::run ()
_last_normalization_value = target ();
return r;
}
+
+void
+NormalizeDialog::button_clicked (int r)
+{
+ if (r == RESPONSE_CANCEL) {
+ cancel ();
+ }
+}
diff --git a/gtk2_ardour/normalize_dialog.h b/gtk2_ardour/normalize_dialog.h
index fec46dbd08..1cb1ae1cb5 100644
--- a/gtk2_ardour/normalize_dialog.h
+++ b/gtk2_ardour/normalize_dialog.h
@@ -37,6 +37,7 @@ public:
private:
void update_progress_gui (float);
+ void button_clicked (int);
Gtk::RadioButton* _normalize_individually;
Gtk::SpinButton* _spin;