#include <pbd/error.h>
#include <pbd/basename.h>
#include <pbd/fastlog.h>
-#include <gtkmm2ext/pix.h>
#include <gtkmm2ext/utils.h>
#include <gtkmm2ext/click_box.h>
#include <gtkmm2ext/tearoff.h>
using namespace std;
using namespace ARDOUR;
+using namespace PBD;
using namespace Gtkmm2ext;
using namespace Gtk;
using namespace Glib;
ARDOUR_UI::instance()->tooltips().set_tip (speed_display_box, _("Current transport speed"));
shuttle_box.set_flags (CAN_FOCUS);
- shuttle_box.add_events (Gdk::ENTER_NOTIFY_MASK|Gdk::LEAVE_NOTIFY_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::BUTTON_PRESS_MASK|Gdk::POINTER_MOTION_MASK);
+ shuttle_box.add_events (Gdk::ENTER_NOTIFY_MASK|Gdk::LEAVE_NOTIFY_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::BUTTON_PRESS_MASK|Gdk::POINTER_MOTION_MASK|Gdk::SCROLL_MASK);
shuttle_box.set_size_request (100, 15);
shuttle_box.signal_button_press_event().connect (mem_fun(*this, &ARDOUR_UI::shuttle_box_button_press));
shuttle_box.signal_button_release_event().connect (mem_fun(*this, &ARDOUR_UI::shuttle_box_button_release));
+ shuttle_box.signal_scroll_event().connect (mem_fun(*this, &ARDOUR_UI::shuttle_box_scroll));
shuttle_box.signal_motion_notify_event().connect (mem_fun(*this, &ARDOUR_UI::shuttle_box_motion));
shuttle_box.signal_expose_event().connect (mem_fun(*this, &ARDOUR_UI::shuttle_box_expose));
shuttle_grabbed = false;
shuttle_box.remove_modal_grab ();
if (shuttle_behaviour == Sprung) {
- shuttle_fract = SHUTTLE_FRACT_SPEED1;
- session->request_transport_speed (1.0);
+ if (session->get_auto_play() || roll_button.get_state()) {
+ shuttle_fract = SHUTTLE_FRACT_SPEED1;
+ session->request_transport_speed (1.0);
+ stop_button.set_active (false);
+ roll_button.set_active (true);
+ } else {
+ shuttle_fract = 0;
+ session->request_transport_speed (0.0);
+ }
shuttle_box.queue_draw ();
}
return true;
if (session->transport_rolling()) {
shuttle_fract = SHUTTLE_FRACT_SPEED1;
session->request_transport_speed (1.0);
+ stop_button.set_active (false);
+ roll_button.set_active (true);
} else {
shuttle_fract = 0;
}
return true;
}
+gint
+ARDOUR_UI::shuttle_box_scroll (GdkEventScroll* ev)
+{
+ if (!session) {
+ return true;
+ }
+
+ switch (ev->direction) {
+
+ case GDK_SCROLL_UP:
+ shuttle_fract += 0.005;
+ break;
+ case GDK_SCROLL_DOWN:
+ shuttle_fract -= 0.005;
+ break;
+ default:
+ /* scroll left/right */
+ return false;
+ }
+
+ use_shuttle_fract (true);
+
+ return true;
+}
+
gint
ARDOUR_UI::shuttle_box_motion (GdkEventMotion* ev)
{
{
switch ((shuttle_units = u)) {
case Percentage:
- static_cast<Label*>(shuttle_units_button.get_child())->set_text ("% ");
+ shuttle_units_button.set_label("% ");
break;
case Semitones:
- static_cast<Label*>(shuttle_units_button.get_child())->set_text (_("st"));
+ shuttle_units_button.set_label(_("st"));
break;
}
}