curveview: ensured curveview is updated with the correct length and playhead
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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 ×tamp)
|
||||
{
|
||||
rational time = Timecode::timestamp_to_time(timestamp, keyframe_view_->timebase());
|
||||
|
||||
@@ -40,6 +40,8 @@ public:
|
||||
void SetNodes(QList<Node*> nodes);
|
||||
const QList<Node*>& nodes();
|
||||
|
||||
Node* GetTimeTarget() const;
|
||||
|
||||
signals:
|
||||
void InputDoubleClicked(NodeInput* input);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user