prevent drags on the tempo/meter markers representing a BBT marker

This commit is contained in:
Paul Davis
2026-01-03 09:55:31 -07:00
parent 1420b67edb
commit 2bb259f6cb
2 changed files with 19 additions and 3 deletions

View File

@@ -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 ();

View File

@@ -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: