Add option to Zoom to Selection on double click
authorTim Mayberry <mojofunk@gmail.com>
Tue, 13 Dec 2016 02:02:57 +0000 (12:02 +1000)
committerTim Mayberry <mojofunk@gmail.com>
Tue, 13 Dec 2016 03:02:04 +0000 (13:02 +1000)
Currently implemented for Region and Range selections.

The new option is false/off by default to maintain existing behaviour. I'm not
sure it should require another option, perhaps Zoom to Selection should be the
default and accessing the region properties dialog can be via Modifier+double
click, but further changes can be made on user feedback etc.

Related: #7112

gtk2_ardour/editor.h
gtk2_ardour/editor_drag.cc
gtk2_ardour/editor_mouse.cc
gtk2_ardour/rc_option_editor.cc
gtk2_ardour/ui_config_vars.h

index 68c9814556eb70fa2e28d3e0849e8ea502362d92..677c0927c96d48bfe6ab895902263aecfe2041ba 100644 (file)
@@ -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 ();
index 00a3541c09348965ae1f370edeaca9f3102ad8ac..cad6e782a0c87b2c68dc0a6775e264cd2bf1d0f7 100644 (file)
@@ -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);
index 6845017e405854147ed230e2972941301facfcdd..dabdb1e90d4f0e4d93862cf00c2b920bdb4c997e 100644 (file)
@@ -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
 {
index 3569d939cc72580f83ca4b4498e2f8ae18423699..440705e1a38aa264af00ce4b3eb1701bf6be14a9 100644 (file)
@@ -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",
index 561bd9d72c3ba4d334dd6a3b04700a2d7de69361..d540bcab6189bdd65b7dbab9a413e1dd4964386c 100644 (file)
@@ -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")