mirror of
https://github.com/Ardour/ardour.git
synced 2026-01-23 05:37:22 +01:00
prevent drags on the tempo/meter markers representing a BBT marker
This commit is contained in:
parent
1420b67edb
commit
2bb259f6cb
2 changed files with 19 additions and 3 deletions
|
|
@ -3078,6 +3078,12 @@ MeterMarkerDrag::MeterMarkerDrag (Editor& e, ArdourCanvas::Item* i, bool c)
|
|||
, _old_snap_mode (e.snap_mode ())
|
||||
, before_state (0)
|
||||
{
|
||||
Temporal::MeterPoint const & mp (_marker->meter());
|
||||
|
||||
if (dynamic_cast<Temporal::MusicTimePoint const *> (&mp)) {
|
||||
throw failed_constructor ();
|
||||
}
|
||||
|
||||
DEBUG_TRACE (DEBUG::Drags, "New MeterMarkerDrag\n");
|
||||
assert (_marker);
|
||||
_movable = !TempoMap::use ()->is_initial (_marker->meter ());
|
||||
|
|
@ -3280,6 +3286,11 @@ TempoMarkerDrag::TempoMarkerDrag (Editor& e, ArdourCanvas::Item* i)
|
|||
|
||||
_marker = reinterpret_cast<TempoMarker*> (_item->get_data ("marker"));
|
||||
_real_section = &_marker->tempo ();
|
||||
|
||||
if (dynamic_cast<Temporal::MusicTimePoint const *> (_real_section)) {
|
||||
throw failed_constructor ();
|
||||
}
|
||||
|
||||
_movable = !TempoMap::use ()->is_initial (_marker->tempo ());
|
||||
_grab_bpm = _real_section->note_types_per_minute ();
|
||||
_grab_qn = _real_section->beats ();
|
||||
|
|
|
|||
|
|
@ -574,7 +574,10 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT
|
|||
if (ArdourKeyboard::indicates_constraint (event->button.state)) {
|
||||
_drags->set (new TempoEndDrag (*this, item), event);
|
||||
} else {
|
||||
_drags->set (new TempoMarkerDrag (*this, item), event);
|
||||
try {
|
||||
_drags->set (new TempoMarkerDrag (*this, item), event);
|
||||
} catch (...) {
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
|
|
@ -588,8 +591,10 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT
|
|||
return true;
|
||||
|
||||
case MeterMarkerItem:
|
||||
_drags->set (
|
||||
new MeterMarkerDrag (*this, item, ArdourKeyboard::indicates_copy (event->button.state)), event);
|
||||
try {
|
||||
_drags->set (new MeterMarkerDrag (*this, item, ArdourKeyboard::indicates_copy (event->button.state)), event);
|
||||
} catch (...) {
|
||||
}
|
||||
return true;
|
||||
|
||||
case VideoBarItem:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue