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.cc50
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);