diff options
author | Julien de Kozak <jdekozak@hotmail.com> | 2014-12-07 13:54:05 +0100 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2014-12-18 10:49:12 -0500 |
commit | 444ec162ae03958abf460206cfcd93d37baf09bb (patch) | |
tree | e553848fdba6edd489d5eebb184b1bda865240bd /gtk2_ardour/tempo_dialog.cc | |
parent | 74be550698d19758f5ccd0578f2ec4d07edadcb0 (diff) |
Fix crash if new tempo is set to start at bar #0
Diffstat (limited to 'gtk2_ardour/tempo_dialog.cc')
-rw-r--r-- | gtk2_ardour/tempo_dialog.cc | 40 |
1 files changed, 24 insertions, 16 deletions
diff --git a/gtk2_ardour/tempo_dialog.cc b/gtk2_ardour/tempo_dialog.cc index 5671ae4dda..24acfbb57f 100644 --- a/gtk2_ardour/tempo_dialog.cc +++ b/gtk2_ardour/tempo_dialog.cc @@ -160,7 +160,7 @@ TempoDialog::init (const Timecode::BBT_Time& when, double bpm, double note_type, add_button (Stock::CANCEL, RESPONSE_CANCEL); add_button (Stock::APPLY, RESPONSE_ACCEPT); - set_response_sensitive (RESPONSE_ACCEPT, false); + set_response_sensitive (RESPONSE_ACCEPT, true); set_default_response (RESPONSE_ACCEPT); bpm_spinner.show (); @@ -181,10 +181,18 @@ TempoDialog::init (const Timecode::BBT_Time& when, double bpm, double note_type, tap_tempo_button.signal_clicked().connect (sigc::mem_fun (*this, &TempoDialog::tap_tempo)); } +bool +TempoDialog::is_user_input_valid() const +{ + return (when_beat_entry.get_text() != "") + && (when_bar_entry.get_text() != "") + && (when_bar_entry.get_text() != "0"); +} + void TempoDialog::bpm_changed () { - set_response_sensitive (RESPONSE_ACCEPT, true); + set_response_sensitive (RESPONSE_ACCEPT, is_user_input_valid()); } bool @@ -198,18 +206,14 @@ TempoDialog::bpm_button_release (GdkEventButton*) { /* the value has been modified, accept should work now */ - set_response_sensitive (RESPONSE_ACCEPT, true); + set_response_sensitive (RESPONSE_ACCEPT, is_user_input_valid()); return false; } bool TempoDialog::entry_key_release (GdkEventKey*) { - if (when_beat_entry.get_text() != "" && when_bar_entry.get_text() != "") { - set_response_sensitive (RESPONSE_ACCEPT, true); - } else { - set_response_sensitive (RESPONSE_ACCEPT, false); - } + set_response_sensitive (RESPONSE_ACCEPT, is_user_input_valid()); return false; } @@ -251,7 +255,7 @@ TempoDialog::get_note_type () void TempoDialog::pulse_change () { - set_response_sensitive (RESPONSE_ACCEPT, true); + set_response_sensitive (RESPONSE_ACCEPT, is_user_input_valid()); } void @@ -374,7 +378,7 @@ MeterDialog::init (const Timecode::BBT_Time& when, double bpb, double divisor, b add_button (Stock::CANCEL, RESPONSE_CANCEL); add_button (Stock::APPLY, RESPONSE_ACCEPT); - set_response_sensitive (RESPONSE_ACCEPT, false); + set_response_sensitive (RESPONSE_ACCEPT, true); set_default_response (RESPONSE_ACCEPT); get_vbox()->show_all (); @@ -390,6 +394,14 @@ MeterDialog::init (const Timecode::BBT_Time& when, double bpb, double divisor, b } bool +MeterDialog::is_user_input_valid() const +{ + return (when_bar_entry.get_text() != "") + && (when_bar_entry.get_text() != "0") + && (bpb_entry.get_text() != ""); +} + +bool MeterDialog::entry_key_press (GdkEventKey* ev) { @@ -440,18 +452,14 @@ MeterDialog::entry_key_press (GdkEventKey* ev) bool MeterDialog::entry_key_release (GdkEventKey*) { - if (when_bar_entry.get_text() != "" && bpb_entry.get_text() != "") { - set_response_sensitive (RESPONSE_ACCEPT, true); - } else { - set_response_sensitive (RESPONSE_ACCEPT, false); - } + set_response_sensitive (RESPONSE_ACCEPT, is_user_input_valid()); return false; } void MeterDialog::note_type_change () { - set_response_sensitive (RESPONSE_ACCEPT, true); + set_response_sensitive (RESPONSE_ACCEPT, is_user_input_valid()); } double |