Allow to change metronome level via mouse-wheel
authorRobin Gareus <robin@gareus.org>
Thu, 19 Jan 2017 18:12:25 +0000 (19:12 +0100)
committerRobin Gareus <robin@gareus.org>
Thu, 19 Jan 2017 18:12:25 +0000 (19:12 +0100)
gtk2_ardour/ardour_ui.h
gtk2_ardour/ardour_ui2.cc

index f69a4a3dd633bf62368408af56640aff24515635..5ca28bf3734952934ecdd78c55ee140928f45c64 100644 (file)
@@ -850,6 +850,7 @@ private:
        int ambiguous_file (std::string file, std::vector<std::string> hits);
 
        bool click_button_clicked (GdkEventButton *);
+       bool click_button_scroll (GdkEventScroll *);
        bool sync_button_clicked (GdkEventButton *);
 
        VisibilityGroup _status_bar_visibility;
index 4c370730e06e9d4cb9f9d59420c9070dbcd5c598..48a5ea53a737561b7d7ab3e43652b46efc971b26 100644 (file)
@@ -84,7 +84,7 @@ ARDOUR_UI::setup_tooltips ()
        set_tip (auto_return_button, _("Return to last playback start when stopped"));
        set_tip (follow_edits_button, _("Playhead follows Range tool clicks, and Range selections"));
        set_tip (auto_input_button, _("Track Input Monitoring automatically follows transport state"));
-       set_tip (click_button, _("Enable/Disable audio click"));
+       set_tip (click_button, _("Enable/Disable metronome\n\nRight-click to access preferences\nMouse-wheel to modify level"));
        set_tip (solo_alert_button, _("When active, something is soloed.\nClick to de-solo everything"));
        set_tip (auditioning_alert_button, _("When active, auditioning is taking place.\nClick to stop the audition"));
        set_tip (feedback_alert_button, _("When active, there is a feedback loop."));
@@ -328,6 +328,7 @@ ARDOUR_UI::setup_transport ()
        act = ActionManager::get_action ("Transport", "ToggleClick");
        click_button.set_related_action (act);
        click_button.signal_button_press_event().connect (sigc::mem_fun (*this, &ARDOUR_UI::click_button_clicked), false);
+       click_button.signal_scroll_event().connect (sigc::mem_fun (*this, &ARDOUR_UI::click_button_scroll), false);
 
        act = ActionManager::get_action (X_("Transport"), X_("Stop"));
        stop_button.set_related_action (act);
@@ -903,6 +904,29 @@ ARDOUR_UI::click_button_clicked (GdkEventButton* ev)
        return true;
 }
 
+bool
+ARDOUR_UI::click_button_scroll (GdkEventScroll* ev)
+{
+       gain_t gain = Config->get_click_gain();
+       float gain_db = accurate_coefficient_to_dB (gain);
+
+       switch (ev->direction) {
+               case GDK_SCROLL_UP:
+               case GDK_SCROLL_LEFT:
+                       gain_db += 1;
+                       break;
+               case GDK_SCROLL_DOWN:
+               case GDK_SCROLL_RIGHT:
+                       gain_db -= 1;
+                       break;
+       }
+       gain_db = std::max (-60.f, gain_db);
+       gain = dB_to_coefficient (gain_db);
+       gain = std::min (gain, Config->get_max_gain());
+       Config->set_click_gain (gain);
+       return true;
+}
+
 bool
 ARDOUR_UI::sync_button_clicked (GdkEventButton* ev)
 {