fix display of negative minsec values; fix handling scroll events on audioclocks
authorPaul Davis <paul@linuxaudiosystems.com>
Fri, 18 Nov 2011 19:28:07 +0000 (19:28 +0000)
committerPaul Davis <paul@linuxaudiosystems.com>
Fri, 18 Nov 2011 19:28:07 +0000 (19:28 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@10684 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/audio_clock.cc

index c4248406624ca82c5cd011de72f2eb4d98016928..b87ecde127218ff35f9ad08cb516d9b19654186f 100644 (file)
@@ -756,6 +756,7 @@ AudioClock::set_minsec (framepos_t when, bool force)
        int mins;
        int secs;
        int millisecs;
+       bool negative = false;
 
        if (_off) {
                _layout->set_text ("\u2012\u2012:\u2012\u2012:\u2012\u2012.\u2012\u2012\u2012");
@@ -768,6 +769,11 @@ AudioClock::set_minsec (framepos_t when, bool force)
                return;
        }       
 
+       if (when < 0) {
+               when = -when;
+               negative = true;
+       }
+
        left = when;
        hrs = (int) floor (left / (_session->frame_rate() * 60.0f * 60.0f));
        left -= (framecnt_t) floor (hrs * _session->frame_rate() * 60.0f * 60.0f);
@@ -776,8 +782,13 @@ AudioClock::set_minsec (framepos_t when, bool force)
        secs = (int) floor (left / (float) _session->frame_rate());
        left -= (framecnt_t) floor (secs * _session->frame_rate());
        millisecs = floor (left * 1000.0 / (float) _session->frame_rate());
+       
+       if (negative) {
+               snprintf (buf, sizeof (buf), "-%02" PRId32 ":%02" PRId32 ":%02" PRId32 ".%03" PRId32, hrs, mins, secs, millisecs);
+       } else {
+               snprintf (buf, sizeof (buf), " %02" PRId32 ":%02" PRId32 ":%02" PRId32 ".%03" PRId32, hrs, mins, secs, millisecs);
+       }
 
-       snprintf (buf, sizeof (buf), "%02" PRId32 ":%02" PRId32 ":%02" PRId32 ".%03" PRId32, hrs, mins, secs, millisecs);
        _layout->set_text (buf);
 }
 
@@ -798,10 +809,9 @@ AudioClock::set_timecode (framepos_t when, bool force)
                return;
        }
 
-       negative = when < 0;
-
-       if (negative) {
+       if (when < 0) {
                when = -when;
+               negative = true;
        }
 
        if (is_duration) {
@@ -847,10 +857,9 @@ AudioClock::set_bbt (framepos_t when, bool force)
                return;
        }
 
-       negative = when < 0;
-
-       if (negative) {
+       if (when < 0) {
                when = -when;
+               negative = true;
        }
 
        /* handle a common case */
@@ -1183,7 +1192,7 @@ AudioClock::on_button_press_event (GdkEventButton *ev)
                         * x and y. 
                         */
 
-                       y = ev->y - ((get_height() - layout_height)/2);
+                       y = ev->y - ((upper_height - layout_height)/2);
                        x = ev->x - x_leading_padding;
                        
                        if (_layout->xy_to_index (x * PANGO_SCALE, y * PANGO_SCALE, index, trailing)) {                 
@@ -1262,7 +1271,7 @@ AudioClock::on_scroll_event (GdkEventScroll *ev)
         * x and y. 
         */
 
-       y = ev->y - ((get_height() - layout_height)/2);
+       y = ev->y - ((upper_height - layout_height)/2);
        x = ev->x - x_leading_padding;
 
        if (!_layout->xy_to_index (x * PANGO_SCALE, y * PANGO_SCALE, index, trailing)) {