diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index 68c9814556..677c0927c9 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -1655,6 +1655,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void edit_meter_marker (MeterMarker&); void edit_control_point (ArdourCanvas::Item*); void edit_notes (MidiRegionView*); + void edit_region (RegionView*); void edit_current_meter (); void edit_current_tempo (); diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc index 00a3541c09..cad6e782a0 100644 --- a/gtk2_ardour/editor_drag.cc +++ b/gtk2_ardour/editor_drag.cc @@ -1382,8 +1382,7 @@ RegionMoveDrag::finished (GdkEvent* ev, bool movement_occurred) if (was_double_click() && !_views.empty()) { DraggingView dv = _views.front(); - dv.view->show_region_editor (); - + _editor->edit_region (dv.view); } return; @@ -2312,8 +2311,7 @@ RegionRippleDrag::finished (GdkEvent* event, bool movement_occurred) if (was_double_click() && !_views.empty()) { DraggingView dv = _views.front(); - dv.view->show_region_editor (); - + _editor->edit_region (dv.view); } return; @@ -5314,6 +5312,13 @@ SelectionDrag::finished (GdkEvent* event, bool movement_occurred) /* just a click, no pointer movement. */ + if (was_double_click()) { + if (UIConfiguration::instance().get_use_double_click_to_zoom_to_selection()) { + _editor->temporal_zoom_selection (ZoomAxis::Both); + return; + } + } + if (_operation == SelectionExtend) { if (_time_selection_at_start) { framepos_t pos = adjusted_current_frame (event, false); diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc index 6845017e40..dabdb1e90d 100644 --- a/gtk2_ardour/editor_mouse.cc +++ b/gtk2_ardour/editor_mouse.cc @@ -2142,6 +2142,16 @@ Editor::note_edit_done (int r, EditNoteDialog* d) commit_reversible_command(); } +void +Editor::edit_region (RegionView* rv) +{ + if (UIConfiguration::instance().get_use_double_click_to_zoom_to_selection()) { + temporal_zoom_selection (ZoomAxis::Both); + } else { + rv->show_region_editor (); + } +} + void Editor::visible_order_range (int* low, int* high) const { diff --git a/gtk2_ardour/rc_option_editor.cc b/gtk2_ardour/rc_option_editor.cc index 3569d939cc..440705e1a3 100644 --- a/gtk2_ardour/rc_option_editor.cc +++ b/gtk2_ardour/rc_option_editor.cc @@ -2544,6 +2544,14 @@ if (!Profile->get_mixbus()) { sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_use_time_rulers_to_zoom_with_vertical_drag) )); + add_option (_("Editor"), + new BoolOption ( + "use-double-click-to-zoom-to-selection", + _("Use double mouse click to zoom to selection"), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_use_double_click_to_zoom_to_selection), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_use_double_click_to_zoom_to_selection) + )); + add_option (_("Editor"), new BoolOption ( "update-editor-during-summary-drag", diff --git a/gtk2_ardour/ui_config_vars.h b/gtk2_ardour/ui_config_vars.h index 561bd9d72c..d540bcab61 100644 --- a/gtk2_ardour/ui_config_vars.h +++ b/gtk2_ardour/ui_config_vars.h @@ -50,6 +50,7 @@ UI_CONFIG_VARIABLE (bool, show_plugin_scan_window, "show-plugin-scan-window", fa UI_CONFIG_VARIABLE (bool, show_zoom_tools, "show-zoom-tools", true) UI_CONFIG_VARIABLE (bool, use_mouse_position_as_zoom_focus_on_scroll, "use-mouse-position-as-zoom-focus-on-scroll", true) UI_CONFIG_VARIABLE (bool, use_time_rulers_to_zoom_with_vertical_drag, "use-time-rulers-to-zoom-with-vertical-drag", false) +UI_CONFIG_VARIABLE (bool, use_double_click_to_zoom_to_selection, "use-double-click-to-zoom-to-selection", false) UI_CONFIG_VARIABLE (bool, widget_prelight, "widget-prelight", true) UI_CONFIG_VARIABLE (bool, use_tooltips, "use-tooltips", true) UI_CONFIG_VARIABLE (std::string, mixer_strip_visibility, "mixer-element-visibility", "Input,PhaseInvert,RecMon,SoloIsoLock,Output,Comments")