Make animation conform to playhead snapping

When playhead snapping in on, make animation update based on the snapped
frames (not in between frames). Also the current frame text shows just
the snapped frames values.

Task-number: QDS-1068
Change-Id: I6309975fda3d96ce3bc2ae1582b42b62b340112c
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
Mahmoud Badri
2019-10-03 14:36:07 +03:00
parent 2c2ffa8273
commit 979d14525c
2 changed files with 7 additions and 6 deletions

View File

@@ -221,7 +221,8 @@ qreal TimelineGraphicsScene::snap(qreal frame, bool snapToPlayhead)
return playheadFrame;
}
void TimelineGraphicsScene::setCurrenFrame(const QmlTimeline &timeline, qreal frame)
// set the playhead frame and return the updated frame in case of snapping
qreal TimelineGraphicsScene::setCurrenFrame(const QmlTimeline &timeline, qreal frame)
{
if (timeline.isValid()) {
if (QApplication::keyboardModifiers() & Qt::ShiftModifier) // playhead snapping
@@ -232,6 +233,9 @@ void TimelineGraphicsScene::setCurrenFrame(const QmlTimeline &timeline, qreal fr
}
invalidateCurrentValues();
emitStatusBarPlayheadFrameChanged(frame);
return frame;
}
void TimelineGraphicsScene::setCurrentFrame(int frame)
@@ -246,8 +250,6 @@ void TimelineGraphicsScene::setCurrentFrame(int frame)
}
invalidateCurrentValues();
emitStatusBarPlayheadFrameChanged(frame);
}
void TimelineGraphicsScene::setStartFrame(int frame)
@@ -367,11 +369,10 @@ void TimelineGraphicsScene::commitCurrentFrame(qreal frame)
QmlTimeline timeline(timelineModelNode());
if (timeline.isValid()) {
frame = setCurrenFrame(timeline, qRound(frame));
timeline.modelNode().setAuxiliaryData("currentFrame@NodeInstance", qRound(frame));
setCurrenFrame(timeline, qRound(frame));
invalidateCurrentValues();
}
emitStatusBarPlayheadFrameChanged(int(frame));
}
QList<TimelineKeyframeItem *> TimelineGraphicsScene::selectedKeyframes() const

View File

@@ -73,7 +73,7 @@ public:
void setWidth(int width);
void invalidateLayout();
void setCurrenFrame(const QmlTimeline &timeline, qreal frame);
qreal setCurrenFrame(const QmlTimeline &timeline, qreal frame);
void setCurrentFrame(int frame);
void setStartFrame(int frame);
void setEndFrame(int frame);