Index: gtk2_ardour/editor_summary.cc
===================================================================
--- gtk2_ardour/editor_summary.cc	(revision 7363)
+++ gtk2_ardour/editor_summary.cc	(working copy)
@@ -309,7 +309,17 @@
 		_start_mouse_y = ev->y;
 		_start_position = get_position (ev->x, ev->y);
 
-		if (_start_position != INSIDE && _start_position != BELOW_OR_ABOVE &&
+		if (Keyboard::modifier_state_equals (ev->state, Keyboard::SecondaryModifier)) {
+			/* secondary-modifier-click: locate playhead */
+			if (_session) {
+				_session->request_locate (ev->x / _x_scale + _start);
+			}
+
+		} else if (Keyboard::modifier_state_equals (ev->state, Keyboard::TertiaryModifier)) {
+
+			centre_on_click (ev);
+			
+		} else if (_start_position != INSIDE && _start_position != BELOW_OR_ABOVE &&
 		    _start_position != TO_LEFT_OR_RIGHT && _start_position != OTHERWISE_OUTSIDE
 			) {
 
@@ -319,17 +329,6 @@
 			_zoom_dragging = true;
 			_editor->_dragging_playhead = true;
 
-		} else if (Keyboard::modifier_state_equals (ev->state, Keyboard::SecondaryModifier)) {
-
-			/* secondary-modifier-click: locate playhead */
-			if (_session) {
-				_session->request_locate (ev->x / _x_scale + _start);
-			}
-
-		} else if (Keyboard::modifier_state_equals (ev->state, Keyboard::TertiaryModifier)) {
-
-			centre_on_click (ev);
-
 		} else {
 
 			/* start a move drag */
@@ -371,7 +370,8 @@
  	bool const near_bottom = (std::abs (y - _view_rectangle_y.second) < edge_size);
 	bool const within_x = _view_rectangle_x.first < x && x < _view_rectangle_x.second;
 	bool const within_y = _view_rectangle_y.first < y && y < _view_rectangle_y.second;
-
+	bool const to_left_or_right = _view_rectangle_x.first > x || _view_rectangle_x.second < x;
+	
 	if (near_left && near_top) {
 		return LEFT_TOP;
 	} else if (near_left && near_bottom) {
@@ -392,6 +392,8 @@
 		return INSIDE;
 	} else if (within_x) {
 		return BELOW_OR_ABOVE;
+	} else if (to_left_or_right) {
+		return TO_LEFT_OR_RIGHT;
 	} else if (within_y) {
 		return TO_LEFT_OR_RIGHT;
 	} else {
@@ -449,6 +451,7 @@
 
 		/* don't alter x if we clicked outside and above or below the viewbox */
 		if (_start_position == INSIDE || _start_position == TO_LEFT_OR_RIGHT) {
+		  
 			xr.first += ev->x - _start_mouse_x;
 			xr.second += ev->x - _start_mouse_x;
 		}
