From cb66ae496c87a3c7ac9f5bfb6c7e227b57cb9edf Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Sat, 13 Feb 2021 10:59:09 -0700 Subject: [PATCH] don't even pretend to use non-modal dialog API for the BBT marker dialog --- gtk2_ardour/editor_drag.cc | 72 +++++++++++++------------------------- gtk2_ardour/editor_drag.h | 5 --- 2 files changed, 24 insertions(+), 53 deletions(-) diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc index 9c7b595c49..490f8a0671 100644 --- a/gtk2_ardour/editor_drag.cc +++ b/gtk2_ardour/editor_drag.cc @@ -3748,7 +3748,6 @@ BBTRulerDrag::BBTRulerDrag (Editor* e, ArdourCanvas::Item* i) , _tempo (0) , _before_state (0) , _drag_valid (true) - , marker_dialog (0) { DEBUG_TRACE (DEBUG::Drags, "New BBTRulerDrag\n"); @@ -3840,51 +3839,6 @@ BBTRulerDrag::motion (GdkEvent* event, bool first_move) show_verbose_cursor_text (sstr.str()); } -void -BBTRulerDrag::begin_position_marker_creation (timepos_t const & pos) -{ - marker_dialog = new BBTMarkerDialog (pos); - - /* run this modally since we are finishing a drag and the drag object - * will be destroyed when we return from here - */ - - int response = marker_dialog->run (); - finish_position_marker_creation (response); -} - -void -BBTRulerDrag::finish_position_marker_creation (int result) -{ - BBT_Time bbt; - bool commit = false; - TempoMap::SharedPtr map (TempoMap::use()); - - switch (result) { - case RESPONSE_ACCEPT: - case RESPONSE_OK: - bbt = marker_dialog->bbt_value (); - map->set_bartime (bbt, marker_dialog->position()); - commit = true; - break; - default: - break; - } - - delete marker_dialog; - marker_dialog = 0; - - if (commit) { - TempoMap::update (map); - XMLNode &after = TempoMap::use()->get_state(); - - _editor->session()->add_command(new MementoCommand(new Temporal::TempoMap::MementoBinder(), _before_state, &after)); - _editor->commit_reversible_command (); - } else { - TempoMap::abort_update (); - } -} - void BBTRulerDrag::finished (GdkEvent* event, bool movement_occurred) { @@ -3899,8 +3853,30 @@ BBTRulerDrag::finished (GdkEvent* event, bool movement_occurred) _editor->begin_reversible_command (_("add BBT marker")); /* position markers must always be positioned using audio time */ - begin_position_marker_creation (timepos_t (grab_sample())); - return; + + BBTMarkerDialog* marker_dialog = new BBTMarkerDialog (timepos_t (grab_sample())); + + /* run this modally since we are finishing a drag and the drag object + * will be destroyed when we return from here + */ + + int result = marker_dialog->run (); + BBT_Time bbt; + + switch (result) { + case RESPONSE_ACCEPT: + case RESPONSE_OK: + bbt = marker_dialog->bbt_value (); + map->set_bartime (bbt, marker_dialog->position()); + delete marker_dialog; + break; + default: + delete marker_dialog; + TempoMap::abort_update (); + return; + } + + /* the map change is committed below */ } else { diff --git a/gtk2_ardour/editor_drag.h b/gtk2_ardour/editor_drag.h index 29d423bea1..06aa46b9c4 100644 --- a/gtk2_ardour/editor_drag.h +++ b/gtk2_ardour/editor_drag.h @@ -58,7 +58,6 @@ namespace PBD { class StatefulDiffCommand; } -class BBTMarkerDialog; class PatchChange; class Editor; class EditorCursor; @@ -907,10 +906,6 @@ private: Temporal::TempoPoint* _tempo; XMLNode* _before_state; bool _drag_valid; - BBTMarkerDialog* marker_dialog; - - void begin_position_marker_creation (Temporal::timepos_t const &); - void finish_position_marker_creation (int response); }; #warning NUTEMPO may or may not need this in the new world