forked from qt-creator/qt-creator
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:
@@ -221,7 +221,8 @@ qreal TimelineGraphicsScene::snap(qreal frame, bool snapToPlayhead)
|
|||||||
return playheadFrame;
|
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 (timeline.isValid()) {
|
||||||
if (QApplication::keyboardModifiers() & Qt::ShiftModifier) // playhead snapping
|
if (QApplication::keyboardModifiers() & Qt::ShiftModifier) // playhead snapping
|
||||||
@@ -232,6 +233,9 @@ void TimelineGraphicsScene::setCurrenFrame(const QmlTimeline &timeline, qreal fr
|
|||||||
}
|
}
|
||||||
|
|
||||||
invalidateCurrentValues();
|
invalidateCurrentValues();
|
||||||
|
emitStatusBarPlayheadFrameChanged(frame);
|
||||||
|
|
||||||
|
return frame;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TimelineGraphicsScene::setCurrentFrame(int frame)
|
void TimelineGraphicsScene::setCurrentFrame(int frame)
|
||||||
@@ -246,8 +250,6 @@ void TimelineGraphicsScene::setCurrentFrame(int frame)
|
|||||||
}
|
}
|
||||||
|
|
||||||
invalidateCurrentValues();
|
invalidateCurrentValues();
|
||||||
|
|
||||||
emitStatusBarPlayheadFrameChanged(frame);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TimelineGraphicsScene::setStartFrame(int frame)
|
void TimelineGraphicsScene::setStartFrame(int frame)
|
||||||
@@ -367,11 +369,10 @@ void TimelineGraphicsScene::commitCurrentFrame(qreal frame)
|
|||||||
QmlTimeline timeline(timelineModelNode());
|
QmlTimeline timeline(timelineModelNode());
|
||||||
|
|
||||||
if (timeline.isValid()) {
|
if (timeline.isValid()) {
|
||||||
|
frame = setCurrenFrame(timeline, qRound(frame));
|
||||||
timeline.modelNode().setAuxiliaryData("currentFrame@NodeInstance", qRound(frame));
|
timeline.modelNode().setAuxiliaryData("currentFrame@NodeInstance", qRound(frame));
|
||||||
setCurrenFrame(timeline, qRound(frame));
|
|
||||||
invalidateCurrentValues();
|
invalidateCurrentValues();
|
||||||
}
|
}
|
||||||
emitStatusBarPlayheadFrameChanged(int(frame));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<TimelineKeyframeItem *> TimelineGraphicsScene::selectedKeyframes() const
|
QList<TimelineKeyframeItem *> TimelineGraphicsScene::selectedKeyframes() const
|
||||||
|
@@ -73,7 +73,7 @@ public:
|
|||||||
void setWidth(int width);
|
void setWidth(int width);
|
||||||
|
|
||||||
void invalidateLayout();
|
void invalidateLayout();
|
||||||
void setCurrenFrame(const QmlTimeline &timeline, qreal frame);
|
qreal setCurrenFrame(const QmlTimeline &timeline, qreal frame);
|
||||||
void setCurrentFrame(int frame);
|
void setCurrentFrame(int frame);
|
||||||
void setStartFrame(int frame);
|
void setStartFrame(int frame);
|
||||||
void setEndFrame(int frame);
|
void setEndFrame(int frame);
|
||||||
|
Reference in New Issue
Block a user