diff options
author | Carl Hetherington <carl@carlh.net> | 2009-06-17 22:12:14 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2009-06-17 22:12:14 +0000 |
commit | bca8efab600d13077728ee830ad5b516ed437126 (patch) | |
tree | b10898ddb0fbda5187c351f1a602244df5c34f59 /gtk2_ardour/editor_summary.cc | |
parent | 9402d3f1e3b351cfb7b5f47cb5b95faba8d77b6c (diff) |
Secondary-modifier-click in the summary locates the playhead to the click.
git-svn-id: svn://localhost/ardour2/branches/3.0@5214 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/editor_summary.cc')
-rw-r--r-- | gtk2_ardour/editor_summary.cc | 90 |
1 files changed, 50 insertions, 40 deletions
diff --git a/gtk2_ardour/editor_summary.cc b/gtk2_ardour/editor_summary.cc index 6160dbe17f..a56a97e0dd 100644 --- a/gtk2_ardour/editor_summary.cc +++ b/gtk2_ardour/editor_summary.cc @@ -331,54 +331,64 @@ bool EditorSummary::on_button_press_event (GdkEventButton* ev) { if (ev->button == 1) { - - pair<double, double> xr; - pair<double, double> yr; - get_editor (&xr, &yr); - - if (xr.first <= ev->x && ev->x <= xr.second && yr.first <= ev->y && ev->y <= yr.second) { - - _start_editor_x = xr; - _start_editor_y = yr; - _start_mouse_x = ev->x; - _start_mouse_y = ev->y; - if (Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) { + if (Keyboard::modifier_state_equals (ev->state, Keyboard::SecondaryModifier)) { - /* modifier-click inside the view rectangle: start a zoom drag */ + /* secondary-modifier-click: locate playhead */ + if (_session) { + _session->request_locate (ev->x / _x_scale + _session->current_start_frame()); + } + + } else { + + pair<double, double> xr; + pair<double, double> yr; + get_editor (&xr, &yr); + + if (xr.first <= ev->x && ev->x <= xr.second && yr.first <= ev->y && ev->y <= yr.second) { + + _start_editor_x = xr; + _start_editor_y = yr; + _start_mouse_x = ev->x; + _start_mouse_y = ev->y; - double const hx = (xr.first + xr.second) * 0.5; - _zoom_left = ev->x < hx; - _zoom_dragging = true; - _editor->_dragging_playhead = true; - - /* In theory, we could support vertical dragging, which logically - might scale track heights in order to make the editor reflect - the dragged viewbox. However, having tried this: - a) it's hard to do - b) it's quite slow - c) it doesn't seem particularly useful, especially with the - limited height of the summary - - So at the moment we don't support that... - */ + if (Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) { - } else { - - /* ordinary click inside the view rectangle: start a move drag */ + /* modifier-click inside the view rectangle: start a zoom drag */ + + double const hx = (xr.first + xr.second) * 0.5; + _zoom_left = ev->x < hx; + _zoom_dragging = true; + _editor->_dragging_playhead = true; + + /* In theory, we could support vertical dragging, which logically + might scale track heights in order to make the editor reflect + the dragged viewbox. However, having tried this: + a) it's hard to do + b) it's quite slow + c) it doesn't seem particularly useful, especially with the + limited height of the summary + + So at the moment we don't support that... + */ + + } else { + + /* ordinary click inside the view rectangle: start a move drag */ + + _move_dragging = true; + _moved = false; + _editor->_dragging_playhead = true; + } - _move_dragging = true; - _moved = false; - _editor->_dragging_playhead = true; - } - - } else { + } else { - /* click outside the view rectangle: centre the view around the mouse click */ - centre_on_click (ev); + /* click outside the view rectangle: centre the view around the mouse click */ + centre_on_click (ev); + } } } - + return true; } |