Add option to Zoom to Selection on double click

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
This commit is contained in:
Tim Mayberry 2016-12-13 12:02:57 +10:00
parent 89623923bd
commit 0eff7d4a0c
5 changed files with 29 additions and 4 deletions

View 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 ();

View 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);

View 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
{

View 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",

View 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")