summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2012-01-24 16:20:31 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2012-01-24 16:20:31 +0000
commitf3624c18748f2a07d6be16558ce069e6f1366569 (patch)
tree205b16d9d9f32e61d79f18c316b0bf87ba7aefb0
parent035074d1b732ce2f6533b8707882f3310ae6e585 (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.cc1
-rw-r--r--gtk2_ardour/editor_mouse.cc65
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 () &&