minor refactoring and signalling panel subtitle by node change

Fixes issue where Footage Viewer subtitle wouldn't update when
dropping footage in.
This commit is contained in:
itsmattkc
2021-04-08 10:42:13 +10:00
parent 2597eea08b
commit ea29ffef96
15 changed files with 57 additions and 49 deletions
+21 -20
View File
@@ -111,27 +111,7 @@ void TimeBasedPanel::ShuttleRight()
void TimeBasedPanel::ConnectViewerNode(ViewerOutput *node)
{
if (widget_->GetConnectedNode() == node) {
return;
}
if (widget_->GetConnectedNode()) {
disconnect(widget_->GetConnectedNode(), &ViewerOutput::LabelChanged, this, &TimeBasedPanel::SetSubtitle);
}
widget_->ConnectViewerNode(node);
if (node) {
connect(node, &ViewerOutput::LabelChanged, this, &TimeBasedPanel::SetSubtitle);
if (show_and_raise_on_connect_) {
this->show();
this->raise();
}
}
// Update strings
Retranslate();
}
void TimeBasedPanel::SetTimeBasedWidget(TimeBasedWidget *widget)
@@ -139,6 +119,7 @@ void TimeBasedPanel::SetTimeBasedWidget(TimeBasedWidget *widget)
if (widget_) {
disconnect(widget_, &TimeBasedWidget::TimeChanged, this, &TimeBasedPanel::TimeChanged);
disconnect(widget_, &TimeBasedWidget::TimebaseChanged, this, &TimeBasedPanel::TimebaseChanged);
disconnect(widget_, &TimeBasedWidget::ConnectedNodeChanged, this, &TimeBasedPanel::ConnectedNodeChanged);
}
widget_ = widget;
@@ -146,6 +127,7 @@ void TimeBasedPanel::SetTimeBasedWidget(TimeBasedWidget *widget)
if (widget_) {
connect(widget_, &TimeBasedWidget::TimeChanged, this, &TimeBasedPanel::TimeChanged);
connect(widget_, &TimeBasedWidget::TimebaseChanged, this, &TimeBasedPanel::TimebaseChanged);
connect(widget_, &TimeBasedWidget::ConnectedNodeChanged, this, &TimeBasedPanel::ConnectedNodeChanged);
}
SetWidgetWithPadding(widget_);
@@ -160,6 +142,25 @@ void TimeBasedPanel::Retranslate()
}
}
void TimeBasedPanel::ConnectedNodeChanged(ViewerOutput *old, ViewerOutput *now)
{
if (old) {
disconnect(old, &ViewerOutput::LabelChanged, this, &TimeBasedPanel::SetSubtitle);
}
if (now) {
connect(now, &ViewerOutput::LabelChanged, this, &TimeBasedPanel::SetSubtitle);
if (show_and_raise_on_connect_) {
this->show();
this->raise();
}
}
// Update strings
Retranslate();
}
void TimeBasedPanel::SetIn()
{
GetTimeBasedWidget()->SetInAtPlayhead();