diff options
3 files changed, 29 insertions, 17 deletions
diff --git a/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineWidget.cpp b/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineWidget.cpp index da3656a3..67f975d5 100644 --- a/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineWidget.cpp +++ b/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineWidget.cpp @@ -578,13 +578,19 @@ void TimelineWidget::refreshKeyframe(qt3dsdm::Qt3DSDMAnimationHandle inAnimation void TimelineWidget::onPropertyChanged(qt3dsdm::Qt3DSDMInstanceHandle inInstance, qt3dsdm::Qt3DSDMPropertyHandle inProperty) { - Qt3DSDMTimelineItemBinding *binding = getBindingForHandle(inInstance, m_binding); - - if (binding) { - binding->OnPropertyChanged(inProperty); - - if (binding->getRowTree()) - binding->getRowTree()->rowTimeline()->updateDurationFromBinding(); + const SDataModelSceneAsset &asset = g_StudioApp.GetCore()->GetDoc()->GetStudioSystem() + ->GetClientDataModelBridge()->GetSceneAsset(); + if (inProperty == asset.m_Eyeball || inProperty == asset.m_Locked || inProperty == asset.m_Shy + || inProperty == asset.m_StartTime || inProperty == asset.m_EndTime) { + Qt3DSDMTimelineItemBinding *binding = getBindingForHandle(inInstance, m_binding); + if (binding) { + binding->OnPropertyChanged(inProperty); + RowTree *row = binding->getRowTree(); + if (row) { + row->rowTimeline()->updateDurationFromBinding(); + row->updateFromBinding(); + } + } } } diff --git a/src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/RowTree.cpp b/src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/RowTree.cpp index 6c0f3696..6e8cada3 100644 --- a/src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/RowTree.cpp +++ b/src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/RowTree.cpp @@ -335,16 +335,7 @@ void RowTree::setBinding(ITimelineItemBinding *binding) { m_binding = binding; - // update view (shy, visible, locked) - m_shy = m_binding->GetTimelineItem()->IsShy(); - m_visible = m_binding->GetTimelineItem()->IsVisible(); - m_locked = m_binding->GetTimelineItem()->IsLocked(); - - // Update label locking & color - Qt3DSDMTimelineItemBinding *itemBinding = - static_cast<Qt3DSDMTimelineItemBinding *>(binding); - m_labelItem.setLocked(m_locked); - m_labelItem.setMaster(itemBinding->IsMaster()); + updateFromBinding(); } ITimelineItemProperty *RowTree::propBinding() @@ -595,6 +586,20 @@ void RowTree::updateIndices(bool isInsertion, int index, int indexInLayout, bool } } +void RowTree::updateFromBinding() +{ + // update view (shy, visible, locked) + m_shy = m_binding->GetTimelineItem()->IsShy(); + m_visible = m_binding->GetTimelineItem()->IsVisible(); + m_locked = m_binding->GetTimelineItem()->IsLocked(); + + // Update label locking & color + Qt3DSDMTimelineItemBinding *itemBinding = + static_cast<Qt3DSDMTimelineItemBinding *>(m_binding); + m_labelItem.setLocked(m_locked); + m_labelItem.setMaster(itemBinding->IsMaster()); +} + bool RowTree::hasPropertyChildren() const { return !m_childProps.empty(); diff --git a/src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/RowTree.h b/src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/RowTree.h index baa0118f..36bd2820 100644 --- a/src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/RowTree.h +++ b/src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/RowTree.h @@ -109,6 +109,7 @@ public: void toggleShy(); void toggleVisible(); void toggleLocked(); + void updateFromBinding(); ITimelineItemBinding *getBinding() const; |