DnD: query mouse y-pos only once.
authorRobin Gareus <robin@gareus.org>
Thu, 26 Mar 2015 02:04:19 +0000 (03:04 +0100)
committerRobin Gareus <robin@gareus.org>
Thu, 26 Mar 2015 22:30:18 +0000 (23:30 +0100)
gtk2_ardour/editor_drag.cc

index d47109303bbfb4154b90309c257fce32d577af2d..30e89bdc7641485c2cd4c66257b77715374a20b7 100644 (file)
@@ -790,10 +790,12 @@ RegionMotionDrag::motion (GdkEvent* event, bool first_move)
 
        /* Find the TimeAxisView that the pointer is now over */
 
-       pair<TimeAxisView*, double> const r = _editor->trackview_by_y_position (current_pointer_y ());
+       const double cur_y = current_pointer_y ();
+
+       pair<TimeAxisView*, double> const r = _editor->trackview_by_y_position (cur_y);
        TimeAxisView* tv = r.first;
 
-       if (!tv && current_pointer_y() < 0) {
+       if (!tv && cur_y < 0) {
                /* above trackview area, autoscroll hasn't moved us since last time, nothing to do */
                return;
        }
@@ -859,7 +861,7 @@ RegionMotionDrag::motion (GdkEvent* event, bool first_move)
 
        }
        /* for automation lanes, there is a TimeAxisView but no ->view() */
-       else if (!tv && current_pointer_y() >= 0 && _last_pointer_time_axis_view >= 0) {
+       else if (!tv && cur_y >= 0 && _last_pointer_time_axis_view >= 0) {
                /* Moving into the drop-zone..
                 *
                 * TODO allow moving further down in drop-zone:
@@ -1004,7 +1006,7 @@ RegionMotionDrag::motion (GdkEvent* event, bool first_move)
                        printf("IN THE ZONE\n");
 #endif
                        assert(i->time_axis_view >= _time_axis_views.size());
-                       if (current_pointer_y() >= 0) {
+                       if (cur_y >= 0) {
 
                                int dzoffset;
                                NewTrackIndexAndPosition ip;