diff options
Diffstat (limited to 'gtk2_ardour/editor_mouse.cc')
-rw-r--r-- | gtk2_ardour/editor_mouse.cc | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc index be716d64d0..7f90fe2d0f 100644 --- a/gtk2_ardour/editor_mouse.cc +++ b/gtk2_ardour/editor_mouse.cc @@ -1269,6 +1269,10 @@ bool Editor::button_press_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_type) { if (event->type != GDK_BUTTON_PRESS) { + if (event->type == GDK_2BUTTON_PRESS) { + gdk_pointer_ungrab (GDK_CURRENT_TIME); + return button_double_click_handler (item, event, item_type); + } return false; } @@ -1393,6 +1397,52 @@ Editor::button_release_dispatch (GdkEventButton* ev) } bool +Editor::button_double_click_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_type) { + + if (event->button.button != 1) { + return false; + } + + switch (item_type) { + case RegionItem: + RegionView *rv; + rv = clicked_regionview; + rv->show_region_editor (); + return true; + case NoteItem: + case PlayheadCursorItem: + break; + case MarkerItem: + case RangeMarkerBarItem: + case CdMarkerBarItem: + Marker* marker; + if ((marker = static_cast<Marker *> (item->get_data ("marker"))) == 0) { + break; + } + rename_marker (marker); + return true; + case TempoMarkerItem: + edit_tempo_marker (item); + return true; + case MeterMarkerItem: + edit_meter_marker (item); + return true; + case MarkerBarItem: + case TempoBarItem: + case MeterBarItem: + case TransportMarkerBarItem: + case StreamItem: + break; + + default: + break; + } + return false; +} + + + +bool Editor::button_release_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_type) { framepos_t where = event_frame (event, 0, 0); |