summaryrefslogtreecommitdiff
path: root/gtk2_ardour/editor_mouse.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gtk2_ardour/editor_mouse.cc')
-rw-r--r--gtk2_ardour/editor_mouse.cc65
1 files changed, 48 insertions, 17 deletions
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 () &&