From 98044e0be1ad0c520fd9e60db76b7be83c63aa8e Mon Sep 17 00:00:00 2001 From: itsmattkc <34096995+itsmattkc@users.noreply.github.com> Date: Sat, 14 Aug 2021 12:45:46 -0700 Subject: [PATCH] keyframeview: correctly map bezier control positions when signalling scroll Fixes #1704 --- app/widget/keyframeview/keyframeviewbase.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/widget/keyframeview/keyframeviewbase.cpp b/app/widget/keyframeview/keyframeviewbase.cpp index 2832068a8..5d0384708 100644 --- a/app/widget/keyframeview/keyframeviewbase.cpp +++ b/app/widget/keyframeview/keyframeviewbase.cpp @@ -279,7 +279,10 @@ void KeyframeViewBase::mouseMoveEvent(QMouseEvent *event) dragging_bezier_point_->key()->set_bezier_control(opposing_type, new_opposing_pos); - emit Dragged(qRound(dragging_bezier_point_->x()), qRound(dragging_bezier_point_->y())); + // Bezier control points are parented to keyframe items making their positions relative + // to those items. We need to map them to the scene coordinates for this to work properly. + QPointF bezier_pos = dragging_bezier_point_->pos() + dragging_bezier_point_->parentItem()->pos(); + emit Dragged(qRound(bezier_pos.x()), qRound(bezier_pos.y())); } else if (!selected_keys_.isEmpty()) {