From b0f796e4e397cce65dd05ac92c360aef6eaeb8b2 Mon Sep 17 00:00:00 2001 From: Mahmoud Badri Date: Wed, 25 Sep 2019 16:15:43 +0300 Subject: [PATCH] Prevent timeline bar item from going off limits When dragging a timeline bar item or one of its edges, confine edges so that they do not go beyond the timeline limits. Task-number: QDS-1074 Change-Id: I029cfbe02cf07d1f9e5e5119283d2b94fca2b2f6 Reviewed-by: Thomas Hartmann Reviewed-by: Miikka Heikkinen --- .../timelineeditor/timelinesectionitem.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/plugins/qmldesigner/components/timelineeditor/timelinesectionitem.cpp b/src/plugins/qmldesigner/components/timelineeditor/timelinesectionitem.cpp index bf6705fbeef..c60be833d2d 100644 --- a/src/plugins/qmldesigner/components/timelineeditor/timelinesectionitem.cpp +++ b/src/plugins/qmldesigner/components/timelineeditor/timelinesectionitem.cpp @@ -801,10 +801,19 @@ void TimelineBarItem::itemMoved(const QPointF &start, const QPointF &end) if (isActiveHandle(Location::Undefined)) dragInit(rect(), start); - const qreal min = qreal(TimelineConstants::sectionWidth + TimelineConstants::timelineLeftOffset - - scrollOffset()); - const qreal max = qreal(timelineScene()->rulerWidth() - TimelineConstants::sectionWidth - + rect().width()); + qreal min = qreal(TimelineConstants::sectionWidth + TimelineConstants::timelineLeftOffset + - scrollOffset()); + qreal max = qreal(timelineScene()->rulerWidth() - TimelineConstants::sectionWidth + + rect().width()); + + const qreal minFrameX = mapFromFrameToScene(timelineScene()->startFrame()); + const qreal maxFrameX = mapFromFrameToScene(timelineScene()->endFrame()); + + if (min < minFrameX) + min = minFrameX; + + if (max > maxFrameX) + max = maxFrameX; if (isActiveHandle(Location::Center)) dragCenter(rect(), end, min, max);