curveview: ensured curveview is updated with the correct length and playhead

This commit is contained in:
itsmattkc
2020-04-29 01:26:09 +10:00
parent 69d399105a
commit 877e8d3afc
4 changed files with 20 additions and 1 deletions
+2
View File
@@ -94,9 +94,11 @@ void ParamPanel::CreateCurvePanel(NodeInput *input)
panel->SetInput(input);
panel->SetTimebase(view->timebase());
panel->SetTimestamp(view->GetTimestamp());
panel->SetTimeTarget(view->GetTimeTarget());
connect(view, &NodeParamView::TimebaseChanged, panel, &CurvePanel::SetTimebase);
connect(view, &NodeParamView::TimeChanged, panel, &CurvePanel::SetTimestamp);
connect(view, &NodeParamView::TimeTargetChanged, panel, &CurvePanel::SetTimeTarget);
connect(panel, &CurvePanel::TimeChanged, view, &NodeParamView::SetTimestamp);
connect(panel, &CurvePanel::TimeChanged, view, &NodeParamView::TimeChanged);
connect(panel, &CurvePanel::CloseRequested, this, &ParamPanel::ClosingCurvePanel);
+8
View File
@@ -200,6 +200,8 @@ void CurveWidget::ScaleChangedEvent(const double &scale)
void CurveWidget::TimeTargetChangedEvent(Node *target)
{
ConnectViewerNode(nullptr);
key_control_->SetTimeTarget(target);
view_->SetTimeTarget(target);
@@ -207,6 +209,12 @@ void CurveWidget::TimeTargetChangedEvent(Node *target)
if (bridge_) {
bridge_->SetTimeTarget(target);
}
// FIXME: If a non-viewer node is ever set here, it will fail to update the length
ViewerOutput* viewer = dynamic_cast<ViewerOutput*>(target);
if (viewer) {
ConnectViewerNode(viewer);
}
}
void CurveWidget::UpdateInputLabel()
+8 -1
View File
@@ -156,7 +156,9 @@ void NodeParamView::SetNodes(QList<Node *> nodes)
items_.append(item);
QTimer::singleShot(1, item, &NodeParamViewItem::SignalAllKeyframes);
QMetaObject::invokeMethod(item,
"SignalAllKeyframes",
Qt::QueuedConnection);
emit OpenedNode(node);
}
@@ -218,6 +220,11 @@ const QList<Node *> &NodeParamView::nodes()
return nodes_;
}
Node *NodeParamView::GetTimeTarget() const
{
return keyframe_view_->GetTimeTarget();
}
void NodeParamView::UpdateItemTime(const int64_t &timestamp)
{
rational time = Timecode::timestamp_to_time(timestamp, keyframe_view_->timebase());
+2
View File
@@ -40,6 +40,8 @@ public:
void SetNodes(QList<Node*> nodes);
const QList<Node*>& nodes();
Node* GetTimeTarget() const;
signals:
void InputDoubleClicked(NodeInput* input);