From b88c77389485971c7426af925cc350f9178d7164 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 8 Mar 2011 01:55:50 +0000 Subject: [PATCH] when leaving internal edit mode, if the current mode is range ("draw") and it wasn't before we entered internal edit mode, flip back to whatever it was before we entered git-svn-id: svn://localhost/ardour2/branches/3.0@9102 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/editor.cc | 1 + gtk2_ardour/editor.h | 1 + gtk2_ardour/editor_mouse.cc | 7 +++++++ 3 files changed, 9 insertions(+) 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); + } } }