diff options
author | Carl Hetherington <carl@carlh.net> | 2009-08-20 19:12:24 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2009-08-20 19:12:24 +0000 |
commit | 76594112af08724c8af6d01d9fcbdbd6478c869c (patch) | |
tree | aae11619b37611076e782f175ed4a49e73b6af7a /gtk2_ardour/editor_summary.cc | |
parent | 9153ef32975efb86cc1609d72a0ea1ebd149faab (diff) |
Don't locate summary view box on a click outside it, to be consistent with fader behaviour. Allow Ctrl-drag (zoom) from anywhere in the summary.
git-svn-id: svn://localhost/ardour2/branches/3.0@5557 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/editor_summary.cc')
-rw-r--r-- | gtk2_ardour/editor_summary.cc | 83 |
1 files changed, 37 insertions, 46 deletions
diff --git a/gtk2_ardour/editor_summary.cc b/gtk2_ardour/editor_summary.cc index 5f3791ba47..7cb2faf9fe 100644 --- a/gtk2_ardour/editor_summary.cc +++ b/gtk2_ardour/editor_summary.cc @@ -252,60 +252,51 @@ EditorSummary::on_button_press_event (GdkEventButton* ev) { if (ev->button == 1) { - if (Keyboard::modifier_state_equals (ev->state, Keyboard::SecondaryModifier)) { + pair<double, double> xr; + pair<double, double> yr; + get_editor (&xr, &yr); + + _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)) { + /* primary-modifier-click: 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 if (Keyboard::modifier_state_equals (ev->state, Keyboard::SecondaryModifier)) { + /* 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) { + } else 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)) { - - /* 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; - } - - } else { + /* ordinary click inside the view rectangle: start a move drag */ - /* click outside the view rectangle: centre the view around the mouse click */ - centre_on_click (ev); - } + _move_dragging = true; + _moved = false; + _editor->_dragging_playhead = true; } } |