diff --git a/app/widget/nodeparamview/nodeparamview.cpp b/app/widget/nodeparamview/nodeparamview.cpp index 2df568671..f05c4996a 100644 --- a/app/widget/nodeparamview/nodeparamview.cpp +++ b/app/widget/nodeparamview/nodeparamview.cpp @@ -257,7 +257,7 @@ void NodeParamView::UpdateItemTime(const int64_t ×tamp) void NodeParamView::QueueKeyframePositionUpdate() { - QMetaObject::invokeMethod(this, "UpdateElementY", Qt::QueuedConnection); + QMetaObject::invokeMethod(this, &NodeParamView::UpdateElementY, Qt::QueuedConnection); } void NodeParamView::SignalNodeOrder() @@ -305,8 +305,9 @@ void NodeParamView::AddNode(Node *n) connect(item, &NodeParamViewItem::dockLocationChanged, this, &NodeParamView::QueueKeyframePositionUpdate); connect(item, &NodeParamViewItem::dockLocationChanged, this, &NodeParamView::SignalNodeOrder); connect(item, &NodeParamViewItem::PinToggled, this, &NodeParamView::PinNode); - connect(item, &NodeParamViewItem::ExpandedChanged, this, &NodeParamView::UpdateElementY); - connect(item, &NodeParamViewItem::ArrayExpandedChanged, this, &NodeParamView::UpdateElementY); + connect(item, &NodeParamViewItem::ArrayExpandedChanged, this, &NodeParamView::QueueKeyframePositionUpdate); + connect(item, &NodeParamViewItem::ExpandedChanged, this, &NodeParamView::QueueKeyframePositionUpdate); + connect(item, &NodeParamViewItem::Moved, this, &NodeParamView::QueueKeyframePositionUpdate); // Set time target item->SetTimeTarget(GetTimeTarget()); diff --git a/app/widget/nodeparamview/nodeparamviewitem.cpp b/app/widget/nodeparamview/nodeparamviewitem.cpp index 70b96e1c4..a9463b6e8 100644 --- a/app/widget/nodeparamview/nodeparamviewitem.cpp +++ b/app/widget/nodeparamview/nodeparamviewitem.cpp @@ -36,8 +36,10 @@ const int NodeParamViewItemBody::kKeyControlColumn = 10; const int NodeParamViewItemBody::kArrayInsertColumn = kKeyControlColumn-1; const int NodeParamViewItemBody::kArrayRemoveColumn = kArrayInsertColumn-1; +#define super QDockWidget + NodeParamViewItem::NodeParamViewItem(Node *node, QWidget *parent) : - QDockWidget(parent), + super(parent), node_(node), highlighted_(false) { @@ -92,12 +94,12 @@ void NodeParamViewItem::changeEvent(QEvent *e) Retranslate(); } - QWidget::changeEvent(e); + super::changeEvent(e); } void NodeParamViewItem::paintEvent(QPaintEvent *event) { - QDockWidget::paintEvent(event); + super::paintEvent(event); // Draw border if focused if (highlighted_) { @@ -108,6 +110,13 @@ void NodeParamViewItem::paintEvent(QPaintEvent *event) } } +void NodeParamViewItem::moveEvent(QMoveEvent *event) +{ + super::moveEvent(event); + + emit Moved(); +} + void NodeParamViewItem::Retranslate() { node_->Retranslate(); diff --git a/app/widget/nodeparamview/nodeparamviewitem.h b/app/widget/nodeparamview/nodeparamviewitem.h index 2a72134ef..b8c9b0a19 100644 --- a/app/widget/nodeparamview/nodeparamviewitem.h +++ b/app/widget/nodeparamview/nodeparamviewitem.h @@ -188,11 +188,15 @@ signals: void ArrayExpandedChanged(bool e); + void Moved(); + protected: virtual void changeEvent(QEvent *e) override; virtual void paintEvent(QPaintEvent *event) override; + virtual void moveEvent(QMoveEvent *event) override; + private: NodeParamViewItemTitleBar* title_bar_;