summaryrefslogtreecommitdiff
path: root/gtk2_ardour/tempo_dialog.cc
diff options
context:
space:
mode:
authorJulien de Kozak <jdekozak@hotmail.com>2014-12-07 13:54:05 +0100
committerPaul Davis <paul@linuxaudiosystems.com>2014-12-18 10:49:12 -0500
commit444ec162ae03958abf460206cfcd93d37baf09bb (patch)
treee553848fdba6edd489d5eebb184b1bda865240bd /gtk2_ardour/tempo_dialog.cc
parent74be550698d19758f5ccd0578f2ec4d07edadcb0 (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.cc40
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