void
FaderPort8::button_stop ()
{
- transport_stop ();
+ if (session->transport_rolling ()) {
+ transport_stop ();
+ } else {
+ AccessAction ("Transport", "GotoStart");
+ }
}
void
// stop key-repeat
dynamic_cast<FP8RepeatButton*>(&b_ffw)->stop_repeat();
dynamic_cast<FP8RepeatButton*>(&b_rew)->stop_repeat();
- AccessAction ("Transport", "GotoStart");
+ session->request_locate (0, false);
return;
}
boost::shared_ptr<Stripable> s = first_selected_stripable();
if (s) {
boost::shared_ptr<AutomationControl> ac;
- if (shift_mod ()) {
+ if (shift_mod () || _ctrls.fader_mode() == ModePan) {
ac = s->pan_width_control ();
} else {
ac = s->pan_azimuth_control ();
boost::shared_ptr<Stripable> s = first_selected_stripable();
if (s) {
boost::shared_ptr<AutomationControl> ac;
- if (shift_mod ()) {
+ if (shift_mod () || _ctrls.fader_mode() == ModePan) {
ac = s->pan_width_control ();
} else {
ac = s->pan_azimuth_control ();
, _parameter_off (0)
, _blink_onoff (false)
, _shift_lock (false)
- , _shift_pressed (false)
+ , _shift_pressed (0)
, gui (0)
{
boost::shared_ptr<ARDOUR::Port> inp;
_channel_off = _plugin_off = _parameter_off = 0;
_blink_onoff = false;
_shift_lock = false;
- _shift_pressed = false;
+ _shift_pressed = 0;
start_midi_handling ();
_ctrls.initialize ();
/* fader 0..16368 (0x3ff0 -- 1024 steps) */
bool handled = _ctrls.midi_fader (chan, pb);
/* if Shift key is held while moving a fader (group override), don't lock shift. */
- if (_shift_pressed && handled) {
+ if ((_shift_pressed > 0) && handled) {
_shift_connection.disconnect ();
_shift_lock = false;
}
/* special case shift */
if (tb->note_number == 0x06 || tb->note_number == 0x46) {
- _shift_pressed = true;
+ _shift_pressed |= (tb->note_number == 0x06) ? 1 : 2;
+ if (_shift_pressed == 3) {
+ return;
+ }
_shift_connection.disconnect ();
if (_shift_lock) {
_shift_lock = false;
/* special case shift */
if (tb->note_number == 0x06 || tb->note_number == 0x46) {
- _shift_pressed = false;
+ _shift_pressed &= (tb->note_number == 0x06) ? 2 : 1;
+ if (_shift_pressed > 0) {
+ return;
+ }
if (_shift_lock) {
return;
}
bool handled = _ctrls.midi_event (tb->note_number, tb->velocity);
/* if Shift key is held while activating an action, don't lock shift. */
- if (_shift_pressed && handled) {
+ if ((_shift_pressed > 0) && handled) {
_shift_connection.disconnect ();
_shift_lock = false;
}
if (what_changed.contains (Properties::name)) {
switch (_ctrls.fader_mode ()) {
case ModeSend:
- _ctrls.strip(id).set_text_line (0, s->name());
+ _ctrls.strip(id).set_text_line (3, s->name(), true);
+ break;
case ModeTrack:
case ModePan:
- _ctrls.strip(id).set_text_line (3, s->name(), true);
+ _ctrls.strip(id).set_text_line (0, s->name());
break;
case ModePlugins:
assert (0);