diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index 22aba4681d..62897bda74 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -647,6 +647,7 @@ Editor::Editor () _snap_mode = SnapOff; set_snap_mode (_snap_mode); set_mouse_mode (MouseObject, true); + pre_internal_mouse_mode = MouseObject; set_edit_point_preference (EditAtMouse, true); _playlist_selector = new PlaylistSelector(); diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index 7d79d7ef3e..aefe9ac642 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -498,6 +498,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void post_zoom (); Editing::MouseMode mouse_mode; + Editing::MouseMode pre_internal_mouse_mode; bool _internal_editing; Editing::MouseMode effective_mouse_mode () const; diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc index 8a1f3dfe73..d874aba2ef 100644 --- a/gtk2_ardour/editor_mouse.cc +++ b/gtk2_ardour/editor_mouse.cc @@ -2657,6 +2657,8 @@ Editor::set_internal_edit (bool yn) ARDOUR_UI::instance()->set_tip (mouse_select_button, _("Draw/Edit MIDI Notes")); mouse_mode_toggled (mouse_mode); + pre_internal_mouse_mode = mouse_mode; + for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) { (*i)->enter_internal_edit_mode (); } @@ -2671,6 +2673,11 @@ Editor::set_internal_edit (bool yn) for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) { (*i)->leave_internal_edit_mode (); } + + if (mouse_mode == MouseRange && pre_internal_mouse_mode != MouseRange) { + /* we were drawing .. flip back to something sensible */ + set_mouse_mode (pre_internal_mouse_mode); + } } }