enter and exit node edit mode with dbl-click in any MIDI region
authorPaul Davis <paul@linuxaudiosystems.com>
Thu, 19 Jan 2012 00:14:58 +0000 (00:14 +0000)
committerPaul Davis <paul@linuxaudiosystems.com>
Thu, 19 Jan 2012 00:14:58 +0000 (00:14 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@11268 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/editor_drag.cc
gtk2_ardour/editor_mouse.cc
gtk2_ardour/midi_region_view.cc

index 7d088d0684459bda31c6d4c4a443008c8681054d..bfcfb29c031fc58fff04ed058da485e328a449e4 100644 (file)
@@ -834,6 +834,11 @@ RegionMoveDrag::finished (GdkEvent* ev, bool movement_occurred)
        
        if (!movement_occurred) {
                /* just a click */
+               if (ev->type == GDK_2BUTTON_PRESS && ev->button.button == 1) {
+                       /* double click - internal edit mode */
+                       Glib::RefPtr<Action> act = ActionManager::get_action (X_("MouseMode"), X_("toggle-internal-edit"));
+                       act->activate ();
+               }
                return;
        }
 
index a7c3946ff3fed13d733f95b3883f48a6a8a5b274..61eb39d09373bc88eed8573e75888416455ad316 100644 (file)
@@ -835,7 +835,10 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT
                                }
 
                                if (internal_editing ()) {
-                                       /* no region drags in internal edit mode */
+                                       if (event->type == GDK_2BUTTON_PRESS && event->button.button == 1) {
+                                               Glib::RefPtr<Action> act = ActionManager::get_action (X_("MouseMode"), X_("toggle-internal-edit"));
+                                               act->activate ();
+                                       }
                                        break;
                                }
 
@@ -848,7 +851,7 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT
                                        add_region_drag (item, event, clicked_regionview);
                                }
 
-                               if (_join_object_range_state == JOIN_OBJECT_RANGE_OBJECT && !selection->regions.empty()) {
+                               if (!internal_editing() && (_join_object_range_state == JOIN_OBJECT_RANGE_OBJECT && !selection->regions.empty())) {
                                        _drags->add (new SelectionDrag (this, clicked_axisview->get_selection_rect (clicked_selection)->rect, SelectionDrag::SelectionMove));
                                }
 
@@ -1149,6 +1152,16 @@ Editor::button_press_handler_2 (ArdourCanvas::Item* item, GdkEvent* event, ItemT
 bool
 Editor::button_press_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_type)
 {
+       if (event->type == GDK_2BUTTON_PRESS) {
+               if (_drags->active()) {
+                       _drags->end_grab (event);
+               } else {
+                       Glib::RefPtr<Action> act = ActionManager::get_action (X_("MouseMode"), X_("toggle-internal-edit"));
+                       act->activate ();
+               }
+               return true;
+       }
+
        if (event->type != GDK_BUTTON_PRESS) {
                return false;
        }
index bab797c8c7d1b132f33074d94b8ba456ed974e7f..554dcc9b9e2fc999649b26c4efff73da1c80c997 100644 (file)
@@ -343,7 +343,7 @@ MidiRegionView::canvas_event(GdkEvent* ev)
                return button_press (&ev->button);
 
        case GDK_2BUTTON_PRESS:
-               return true;
+               return false;
 
        case GDK_BUTTON_RELEASE:
                return button_release (&ev->button);