summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2011-11-21 18:07:42 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2011-11-21 18:07:42 +0000
commit2eeb861253f69891412d1fdfaa87b0f842a1b8f6 (patch)
treeacba45c817e2774ec7d00edfb9d11698e7d58ff2
parent274a97a4021e342e4aaf66837c3f1d54b8c14e66 (diff)
audio clocks: validate data for delta edits as well as absolute
git-svn-id: svn://localhost/ardour2/branches/3.0@10741 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r--gtk2_ardour/audio_clock.cc29
1 files changed, 29 insertions, 0 deletions
diff --git a/gtk2_ardour/audio_clock.cc b/gtk2_ardour/audio_clock.cc
index 802b0dbbba..3ae2c8bdd6 100644
--- a/gtk2_ardour/audio_clock.cc
+++ b/gtk2_ardour/audio_clock.cc
@@ -771,6 +771,35 @@ AudioClock::parse_as_distance (const std::string& instr)
void
AudioClock::end_edit_relative (bool add)
{
+ bool ok = true;
+
+ switch (_mode) {
+ case Timecode:
+ ok = timecode_validate_edit (edit_string);
+ break;
+
+ case BBT:
+ ok = bbt_validate_edit (edit_string);
+ break;
+
+ case MinSec:
+ ok = minsec_validate_edit (edit_string);
+ break;
+
+ case Frames:
+ break;
+ }
+
+ if (!ok) {
+ edit_string = pre_edit_string;
+ input_string.clear ();
+ _layout->set_text (edit_string);
+ show_edit_status (0);
+ /* edit attributes remain in use */
+ queue_draw ();
+ return;
+ }
+
framecnt_t frames = parse_as_distance (input_string);
editing = false;