audio clocks: focus-on-clock shortcut now works, scrolling and dragging know about...
authorPaul Davis <paul@linuxaudiosystems.com>
Sun, 20 Nov 2011 16:38:51 +0000 (16:38 +0000)
committerPaul Davis <paul@linuxaudiosystems.com>
Sun, 20 Nov 2011 16:38:51 +0000 (16:38 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@10709 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/ardour.menus.in
gtk2_ardour/ardour3_ui_default.conf
gtk2_ardour/ardour_ui.h
gtk2_ardour/ardour_ui_ed.cc
gtk2_ardour/audio_clock.cc
gtk2_ardour/audio_clock.h
gtk2_ardour/time_info_box.cc

index 56c6c6052d25eb9c162c0272b5eea06bc55ec2ff..b049cd59a3dbe8bb2a673a9bf27f351a1fc84677 100644 (file)
@@ -6,6 +6,7 @@
   <accelerator action='set-mouse-mode-timefx'/>
   <accelerator action='set-mouse-mode-object-range'/>
   <accelerator action='toggle-internal-edit'/>
+  <accelerator action='focus-on-clock'/>
   
   <menubar name='Main' action='MainMenu'>
     <menu name='Session' action='Session'>
index 40007c868093b0bc74f9bf16318f3e38f769c63a..a28fa17c1e5628397364e3886dd42899c4933298 100644 (file)
     <Option name="transport clock: text" value="6bb620ff"/>
     <Option name="transport clock: background" value="000000ff"/>
     <Option name="transport clock: edited text" value="ff0000ff"/>
+    <Option name="transport clock: cursor" value="f11000ff"/>
     <Option name="secondary clock: text" value="6bb620ff"/>
     <Option name="secondary clock: background" value="000000ff"/>
     <Option name="secondary clock: edited text" value="ff0000ff"/>
+    <Option name="secondary clock: cursor" value="f11000ff"/>
     <Option name="big clock: text" value="f0f0f0ff"/>
     <Option name="big clock: background" value="020202ff"/>
     <Option name="big clock: edited text" value="0073a3ff"/>
+    <Option name="big clock: cursor" value="f11000ff"/>
     <Option name="big clock active: text" value="020202ff"/>
     <Option name="big clock active: background" value="f11000ff"/>
     <Option name="big clock active: edited text" value="0073a3ff"/>
+    <Option name="big clock active: cursor" value="f11000ff"/>
     <Option name="transport delta clock: text" value="0009f3ff"/>
     <Option name="transport delta clock: background" value="000000ff"/>
     <Option name="transport delta clock: edited text" value="ff0000ff"/>
+    <Option name="transport delta clock: cursor" value="f11000ff"/>
     <Option name="secondary delta clock: text" value="0009f3ff"/>
     <Option name="secondary delta clock: background" value="000000ff"/>
     <Option name="secondary delta clock: edited text" value="ff0000ff"/>
+    <Option name="secondary delta clock: cursor" value="f11000ff"/>
     <Option name="punch clock: text" value="6bb620ff"/>
     <Option name="punch clock: background" value="000000ff"/>
     <Option name="punch clock: edited text" value="ff0000ff"/>
+    <Option name="punch clock: cursor" value="f11000ff"/>
     <Option name="nudge clock: text" value="6bb620ff"/>
     <Option name="nudge clock: background" value="000000ff"/>
     <Option name="nudge clock: edited text" value="ff0000ff"/>
+    <Option name="nudge clock: cursor" value="f11000ff"/>
     <Option name="selection clock: text" value="6bb620ff"/>
     <Option name="selection clock: background" value="000000ff"/>
     <Option name="selection clock: edited text" value="ff0000ff"/>
+    <Option name="selection clock: cursor" value="f11000ff"/>
     <Option name="clock: text" value="6bb620ff"/>
     <Option name="clock: background" value="000000ff"/>
     <Option name="clock: edited text" value="ff0000ff"/>
+    <Option name="clock: cursor" value="f11000ff"/>
 
   </Canvas>
 </Ardour>
index bd494b206fa0a7636363c3a464e3315b05463921..e7e0a6da0b4b344c28fbffebc933d7db6ff93960 100644 (file)
@@ -202,6 +202,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
 
        AudioClock* primary_clock;
        AudioClock* secondary_clock;
+       void focus_on_clock ();
 
        TimeInfoBox* time_info_box;
 
index f7005e99d97bc91289054a12a4a4f7c2e4b9b125..88b7e409b8dad45335f43fd78ed8e0e20daa371c 100644 (file)
@@ -354,7 +354,7 @@ ARDOUR_UI::install_actions ()
        ActionManager::session_sensitive_actions.push_back (act);
        ActionManager::transport_sensitive_actions.push_back (act);
 
-       act = ActionManager::register_action (transport_actions, X_("focus-on-clock"), _("Focus On Clock"), sigc::mem_fun(primary_clock, &AudioClock::focus));
+       act = ActionManager::register_action (transport_actions, X_("focus-on-clock"), _("Focus On Clock"), sigc::mem_fun(*this, &ARDOUR_UI::focus_on_clock));
        ActionManager::session_sensitive_actions.push_back (act);
        ActionManager::transport_sensitive_actions.push_back (act);
 
@@ -862,3 +862,12 @@ ARDOUR_UI::resize_text_widgets ()
        set_size_request_to_display_given_text (cpu_load_label, "DSP: 100.0%", 2, 2);
        set_size_request_to_display_given_text (buffer_load_label, "Buffers: p:100% c:100%", 2, 2);
 }
+
+void
+ARDOUR_UI::focus_on_clock ()
+{
+       if (editor && primary_clock) {
+               editor->present ();
+               primary_clock->focus ();
+       }
+}
index 284885ad442efa83bf1a10b33483dba11a539371..57abbe325c30bfbc16dfe7569ff34a65772ce9f7 100644 (file)
@@ -69,6 +69,7 @@ AudioClock::AudioClock (const string& clock_name, bool transient, const string&
        , _follows_playhead (follows_playhead)
        , _off (false)
        , _fixed_width (true)
+       , layout_x_offset (0)
        , ops_menu (0)
        , editing_attr (0)
        , foreground_attr (0)
@@ -257,8 +258,6 @@ AudioClock::set_colors ()
 void
 AudioClock::render (cairo_t* cr)
 {
-       double layout_x_offset;
-
        /* main layout: rounded rect, plus the text */
        
        if (_need_bg) {
@@ -272,10 +271,8 @@ AudioClock::render (cairo_t* cr)
        }
 
        if (!_fixed_width) {
-               cairo_move_to (cr, 0, 0);
-               layout_x_offset = 0;
+               cairo_move_to (cr, layout_x_offset, 0);
        } else {
-               layout_x_offset = (get_width() - layout_width)/2.0;
                cairo_move_to (cr, layout_x_offset, (upper_height - layout_height) / 2.0);
        }
 
@@ -383,6 +380,15 @@ AudioClock::on_size_allocate (Gtk::Allocation& alloc)
        } else {
                upper_height = get_height();
        }
+
+       if (_fixed_width) {
+               /* center display in available space */
+               layout_x_offset = (get_width() - layout_width)/2.0;
+       } else {
+               /* left justify */
+               layout_x_offset = 0;
+       }
+
 }
 
 void
@@ -1371,7 +1377,7 @@ AudioClock::on_button_press_event (GdkEventButton *ev)
                         */
 
                        y = ev->y - ((upper_height - layout_height)/2);
-                       x = ev->x - x_leading_padding;
+                       x = ev->x - layout_x_offset;
                        
                        if (_layout->xy_to_index (x * PANGO_SCALE, y * PANGO_SCALE, index, trailing)) {                 
                                drag_field = index_to_field (index);
@@ -1450,7 +1456,7 @@ AudioClock::on_scroll_event (GdkEventScroll *ev)
         */
 
        y = ev->y - ((upper_height - layout_height)/2);
-       x = ev->x - x_leading_padding;
+       x = ev->x - layout_x_offset;
 
        if (!_layout->xy_to_index (x * PANGO_SCALE, y * PANGO_SCALE, index, trailing)) {
                /* not in the main layout */
@@ -1954,7 +1960,6 @@ AudioClock::focus ()
        start_edit ();
 }
 
-
 void
 AudioClock::set_corner_radius (double r)
 {
index 42f2bf88bef5a027575251a8deb0b3da2ce74173..400d5a7f28a1be746c4d2d6481442eafab340f3c 100644 (file)
@@ -97,6 +97,7 @@ class AudioClock : public CairoWidget, public ARDOUR::SessionHandlePtr
        bool             _follows_playhead;
        bool             _off;
        bool             _fixed_width;
+       int              layout_x_offset;
 
        Gtk::Menu  *ops_menu;
 
index 3befc890aea27901c78aebaafecf4133c8e9b11a..7ee144015f17a988ced00b781a6a4edc3db555ce 100644 (file)
@@ -177,7 +177,9 @@ TimeInfoBox::clock_button_release_event (GdkEventButton* ev, AudioClock* src)
        }
 
        if (ev->button == 1) {
-               _session->request_locate (src->current_time ());
+               if (!src->off()) {
+                       _session->request_locate (src->current_time ());
+               }
                return true;
        }