Remove unused variable and the accessor methods for it from ARDOUR_UI
[ardour.git] / gtk2_ardour / editor_rulers.cc
index 30bcff093a0f692938286d3e019c717c407d8cb8..a101d5cc030590af090cac096bf98180146a79b7 100644 (file)
@@ -15,7 +15,6 @@
     along with this program; if not, write to the Free Software
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
-    $Id$
 */
 
 #include <cstdio> // for sprintf, grrr 
@@ -56,6 +55,10 @@ Editor::initialize_rulers ()
        ruler_editor = this;
        ruler_grabbed_widget = 0;
        
+       _ruler_separator = new Gtk::HSeparator();
+       _ruler_separator->set_size_request(-1, 2);
+       _ruler_separator->show();
+
        _smpte_ruler = gtk_custom_hruler_new ();
        smpte_ruler = Glib::wrap (_smpte_ruler);
        smpte_ruler->set_name ("SMPTERuler");
@@ -148,9 +151,15 @@ Editor::ruler_button_press (GdkEventButton* ev)
 
        switch (ev->button) {
        case 1:
+               // Since we are about to move the playhead, cancel any running
+               // auditions.
+               if (session->is_auditioning()) {
+                       session->cancel_audition ();
+               }
                /* transport playhead */
                snap_to (where);
                session->request_locate (where);
+               _dragging_playhead = true;
                break;
 
        case 2:
@@ -184,7 +193,6 @@ Editor::ruler_button_release (GdkEventButton* ev)
                return FALSE;
        }
 
-       hide_verbose_canvas_cursor();
        stop_canvas_autoscroll();
        
        nframes_t where = leftmost_frame + pixel_to_frame (x);
@@ -192,6 +200,7 @@ Editor::ruler_button_release (GdkEventButton* ev)
        switch (ev->button) {
        case 1:
                /* transport playhead */
+               _dragging_playhead = false;
                snap_to (where);
                session->request_locate (where);
                break;
@@ -242,8 +251,8 @@ Editor::ruler_mouse_motion (GdkEventMotion* ev)
        if (session == 0 || !ruler_pressed_button) {
                return FALSE;
        }
-       
-       double wcx=0,wcy=0;
+
+               double wcx=0,wcy=0;
        double cx=0,cy=0;
 
        gint x,y;
@@ -252,29 +261,30 @@ Editor::ruler_mouse_motion (GdkEventMotion* ev)
        /* need to use the correct x,y, the event lies */
        time_canvas_event_box.get_window()->get_pointer (x, y, state);
 
-       
+
        track_canvas.c2w (x, y, wcx, wcy);
        track_canvas.w2c (wcx, wcy, cx, cy);
        
        nframes_t where = leftmost_frame + pixel_to_frame (x);
 
-
        /// ripped from maybe_autoscroll, and adapted to work here
        nframes_t one_page = (nframes_t) rint (canvas_width * frames_per_unit);
        nframes_t rightmost_frame = leftmost_frame + one_page;
 
+       jack_nframes_t frame = pixel_to_frame (cx);
+
        if (autoscroll_timeout_tag < 0) {
-               if (where > rightmost_frame) {
+               if (frame > rightmost_frame) {
                        if (rightmost_frame < max_frames) {
                                start_canvas_autoscroll (1);
                        }
-               } else if (where <= leftmost_frame) {
+               } else if (frame < leftmost_frame) {
                        if (leftmost_frame > 0) {
                                start_canvas_autoscroll (-1);
                        }
                } 
        } else {
-               if (where >= leftmost_frame && where < rightmost_frame) {
+               if (frame >= leftmost_frame && frame < rightmost_frame) {
                        stop_canvas_autoscroll ();
                }
        }
@@ -299,15 +309,14 @@ Editor::ruler_mouse_motion (GdkEventMotion* ev)
                break;
        }
 
-       if (cursor)
-       {
+       if (cursor) {
                cursor->set_position (where);
                
                if (cursor == edit_cursor) {
                        edit_cursor_clock.set (where);
+               } else if (cursor == playhead_cursor) {
+                       UpdateAllTransportClocks (cursor->current_frame);
                }
-               
-               show_verbose_time_cursor (where, 10, cx, 0);
        }
        
        return TRUE;
@@ -373,7 +382,7 @@ Editor::popup_ruler_menu (nframes_t where, ItemType t)
                mitem->set_active(true);
        }
 
-       ruler_items.push_back (CheckMenuElem (X_("Timecode"), bind (mem_fun(*this, &Editor::ruler_toggled), (int)ruler_metric_smpte)));
+       ruler_items.push_back (CheckMenuElem (_("Timecode"), bind (mem_fun(*this, &Editor::ruler_toggled), (int)ruler_metric_smpte)));
        mitem = (CheckMenuItem *) &ruler_items.back(); 
        if (ruler_shown[ruler_metric_smpte]) {
                mitem->set_active(true);
@@ -601,6 +610,7 @@ Editor::update_ruler_visibility ()
        frames_ruler->signal_motion_notify_event().connect (mem_fun(*this, &Editor::ruler_mouse_motion));
        minsec_ruler->signal_motion_notify_event().connect (mem_fun(*this, &Editor::ruler_mouse_motion));
 
+       ruler_children.insert (canvaspos, Element(*_ruler_separator, PACK_SHRINK, PACK_START));
        
        if (ruler_shown[ruler_metric_minsec]) {
                lab_children.push_back (Element(minsec_label, PACK_SHRINK, PACK_START));
@@ -626,7 +636,7 @@ Editor::update_ruler_visibility ()
                visible_timebars++;
        }
 
-       double tbpos = 0.0;
+       double tbpos = 1.0;
        double old_unit_pos ;
        
        if (ruler_shown[ruler_time_meter]) {
@@ -705,10 +715,10 @@ Editor::update_ruler_visibility ()
        
        update_fixed_rulers();
        //update_tempo_based_rulers();
-       tempo_map_changed(Change (0), false);
+       redisplay_tempo (false);
 
        time_canvas_event_box.show_all();
-       time_button_event_box.show_all();
+       time_button_frame.show_all();
 }
 
 void