Shuttle wheel context-menu: max speed only applies to percentage
This commit is contained in:
parent
80405e41b0
commit
eeadf5087d
@ -26,6 +26,8 @@
|
||||
|
||||
#include <cairo.h>
|
||||
|
||||
#include "pbd/unwind.h"
|
||||
|
||||
#include "ardour/ardour.h"
|
||||
#include "ardour/audioengine.h"
|
||||
#include "ardour/rc_configuration.h"
|
||||
@ -80,6 +82,7 @@ ShuttleControl::ShuttleControl ()
|
||||
shuttle_max_speed = Config->get_max_transport_speed();
|
||||
shuttle_context_menu = 0;
|
||||
_hovering = false;
|
||||
_ignore_change = false;
|
||||
|
||||
set_flags (CAN_FOCUS);
|
||||
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);
|
||||
@ -191,14 +194,13 @@ ShuttleControl::map_transport_state ()
|
||||
void
|
||||
ShuttleControl::build_shuttle_context_menu ()
|
||||
{
|
||||
PBD::Unwinder<bool> uw (_ignore_change, true);
|
||||
|
||||
using namespace Menu_Helpers;
|
||||
|
||||
shuttle_context_menu = new Menu();
|
||||
MenuList& items = shuttle_context_menu->items();
|
||||
|
||||
Menu* speed_menu = manage (new Menu());
|
||||
MenuList& speed_items = speed_menu->items();
|
||||
|
||||
Menu* units_menu = manage (new Menu);
|
||||
MenuList& units_items = units_menu->items();
|
||||
RadioMenuItem::Group units_group;
|
||||
@ -228,9 +230,12 @@ ShuttleControl::build_shuttle_context_menu ()
|
||||
|
||||
items.push_back (MenuElem (_("Mode"), *style_menu));
|
||||
|
||||
if (Config->get_shuttle_units() == Percentage) {
|
||||
RadioMenuItem::Group speed_group;
|
||||
|
||||
/* XXX this code assumes that Config->get_max_transport_speed() returns 8 */
|
||||
Menu* speed_menu = manage (new Menu());
|
||||
MenuList& speed_items = speed_menu->items();
|
||||
|
||||
speed_items.push_back (RadioMenuElem (speed_group, "8", sigc::bind (sigc::mem_fun (*this, &ShuttleControl::set_shuttle_max_speed), 8.0f)));
|
||||
if (shuttle_max_speed == 8.0) {
|
||||
@ -258,6 +263,7 @@ ShuttleControl::build_shuttle_context_menu ()
|
||||
}
|
||||
|
||||
items.push_back (MenuElem (_("Maximum speed"), *speed_menu));
|
||||
}
|
||||
|
||||
items.push_back (SeparatorElem ());
|
||||
items.push_back (MenuElem (_("Reset to 100%"), sigc::mem_fun (*this, &ShuttleControl::reset_speed)));
|
||||
@ -276,6 +282,9 @@ ShuttleControl::reset_speed ()
|
||||
void
|
||||
ShuttleControl::set_shuttle_max_speed (float speed)
|
||||
{
|
||||
if (_ignore_change) {
|
||||
return;
|
||||
}
|
||||
Config->set_shuttle_max_speed (speed);
|
||||
}
|
||||
|
||||
@ -657,12 +666,18 @@ ShuttleControl::render (Cairo::RefPtr<Cairo::Context> const& ctx, cairo_rectangl
|
||||
void
|
||||
ShuttleControl::set_shuttle_style (ShuttleBehaviour s)
|
||||
{
|
||||
if (_ignore_change) {
|
||||
return;
|
||||
}
|
||||
Config->set_shuttle_behaviour (s);
|
||||
}
|
||||
|
||||
void
|
||||
ShuttleControl::set_shuttle_units (ShuttleUnits s)
|
||||
{
|
||||
if (_ignore_change) {
|
||||
return;
|
||||
}
|
||||
Config->set_shuttle_units (s);
|
||||
}
|
||||
|
||||
@ -723,6 +738,8 @@ ShuttleControl::parameter_changed (std::string p)
|
||||
last_speed_displayed = -99999999;
|
||||
map_transport_state ();
|
||||
use_shuttle_fract (true);
|
||||
delete shuttle_context_menu;
|
||||
shuttle_context_menu = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -109,6 +109,8 @@ protected:
|
||||
|
||||
float semitones_as_speed (int, bool);
|
||||
float semitones_as_fract (int, bool);
|
||||
|
||||
bool _ignore_change;
|
||||
};
|
||||
|
||||
#endif /* __gtk2_ardour_shuttle_control_h__ */
|
||||
|
Loading…
Reference in New Issue
Block a user