diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2012-01-24 16:20:31 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2012-01-24 16:20:31 +0000 |
commit | f3624c18748f2a07d6be16558ce069e6f1366569 (patch) | |
tree | 205b16d9d9f32e61d79f18c316b0bf87ba7aefb0 | |
parent | 035074d1b732ce2f6533b8707882f3310ae6e585 (diff) |
exit internal/note edit mode when clicking on anything that is not a MIDI region view or a note (or various modeless items like markers and the playhead)
git-svn-id: svn://localhost/ardour2/branches/3.0@11333 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r-- | gtk2_ardour/editor_actions.cc | 1 | ||||
-rw-r--r-- | gtk2_ardour/editor_mouse.cc | 65 |
2 files changed, 48 insertions, 18 deletions
diff --git a/gtk2_ardour/editor_actions.cc b/gtk2_ardour/editor_actions.cc index 1d33a2bdba..37dbf30ab7 100644 --- a/gtk2_ardour/editor_actions.cc +++ b/gtk2_ardour/editor_actions.cc @@ -1224,7 +1224,6 @@ Editor::toggle_internal_editing () } } - void Editor::register_region_actions () { diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc index 1e801f16a3..85ffaf2943 100644 --- a/gtk2_ardour/editor_mouse.cc +++ b/gtk2_ardour/editor_mouse.cc @@ -534,6 +534,22 @@ Editor::step_mouse_mode (bool next) } } +bool +Editor::toggle_internal_editing_from_double_click (GdkEvent* event) +{ + if (_drags->active()) { + _drags->end_grab (event); + } + + ActionManager::do_action ("MouseMode", "toggle-internal-edit"); + + /* prevent reversion of edit cursor on button release */ + + pre_press_cursor = 0; + + return true; +} + void Editor::button_selection (ArdourCanvas::Item* /*item*/, GdkEvent* event, ItemType item_type) { @@ -1222,23 +1238,7 @@ Editor::button_press_handler_2 (ArdourCanvas::Item* item, GdkEvent* event, ItemT return false; } - -bool -Editor::toggle_internal_editing_from_double_click (GdkEvent* event) -{ - if (_drags->active()) { - _drags->end_grab (event); - } - Glib::RefPtr<Action> act = ActionManager::get_action (X_("MouseMode"), X_("toggle-internal-edit")); - act->activate (); - - /* prevent reversion of edit cursor on button release */ - - pre_press_cursor = 0; - - return true; -} - + bool Editor::button_press_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_type) { @@ -1269,6 +1269,37 @@ Editor::button_press_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemTyp return true; } + if (internal_editing()) { + switch (item_type) { + case NoteItem: + break; + + case RegionItem: + if (!dynamic_cast<MidiRegionView*> (clicked_regionview)) { + ActionManager::do_action ("MouseMode", "toggle-internal-edit"); + } + break; + + case PlayheadCursorItem: + case MarkerItem: + case TempoMarkerItem: + case MeterMarkerItem: + case MarkerBarItem: + case TempoBarItem: + case MeterBarItem: + case RangeMarkerBarItem: + case CdMarkerBarItem: + case TransportMarkerBarItem: + /* button press on these events never does anything to + change the editing mode. + */ + break; + + default: + ActionManager::do_action ("MouseMode", "toggle-internal-edit"); + } + } + button_selection (item, event, item_type); if (!_drags->active () && |