From 3923223d7098219fe5662a833a625433c2dec898 Mon Sep 17 00:00:00 2001 From: Pierre Baillargeon Date: Tue, 16 Apr 2024 09:31:38 -0400 Subject: [PATCH] EMSUSD-1002 repaint layer editor when layer muting changes --- lib/usd/ui/layerEditor/layerTreeView.cpp | 8 ++++++++ lib/usd/ui/layerEditor/layerTreeView.h | 11 ++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/lib/usd/ui/layerEditor/layerTreeView.cpp b/lib/usd/ui/layerEditor/layerTreeView.cpp index 2e5b7cc89f..8763659891 100644 --- a/lib/usd/ui/layerEditor/layerTreeView.cpp +++ b/lib/usd/ui/layerEditor/layerTreeView.cpp @@ -149,6 +149,9 @@ LayerTreeView::LayerTreeView(SessionState* in_sessionState, QWidget* in_parent) _refreshCallback = std::make_shared(this); UsdUfe::registerUICallback(PXR_NS::TfToken("onRefreshSystemLock"), _refreshCallback); + + TfWeakPtr me(this); + _layerMutingNoticeKey = TfNotice::Register(me, &LayerTreeView::onLayerMutingChanged); } LayerTreeView::~LayerTreeView() @@ -157,8 +160,13 @@ LayerTreeView::~LayerTreeView() UsdUfe::unregisterUICallback(PXR_NS::TfToken("onRefreshSystemLock"), _refreshCallback); _refreshCallback.reset(); } + + // Stop listening to layer muting. + TfNotice::Revoke(_layerMutingNoticeKey); } +void LayerTreeView::onLayerMutingChanged(const UsdNotice::LayerMutingChanged&) { repaint(); } + LayerTreeItem* LayerTreeView::layerItemFromIndex(const QModelIndex& index) const { return _model->layerItemFromIndex(index); diff --git a/lib/usd/ui/layerEditor/layerTreeView.h b/lib/usd/ui/layerEditor/layerTreeView.h index 14e1ba1171..b364fe0ddd 100644 --- a/lib/usd/ui/layerEditor/layerTreeView.h +++ b/lib/usd/ui/layerEditor/layerTreeView.h @@ -22,6 +22,9 @@ #include +#include +#include + #include #include @@ -68,7 +71,9 @@ class LayerViewMemento * @brief Implements the Qt TreeView for USD layers. This widget is owned by the LayerEditorWidget. * */ -class LayerTreeView : public QTreeView +class LayerTreeView + : public QTreeView + , public PXR_NS::TfWeakBase { Q_OBJECT public: @@ -122,6 +127,9 @@ class LayerTreeView : public QTreeView void onMuteLayerButtonPushed(); void onLockLayerButtonPushed(); + // Notice listener method for layer muting changes. + void onLayerMutingChanged(const UsdNotice::LayerMutingChanged& notice); + bool shouldExpandOrCollapseAll() const; void expandChildren(const QModelIndex& index); void collapseChildren(const QModelIndex& index); @@ -132,6 +140,7 @@ class LayerTreeView : public QTreeView LayerTreeViewStyle _treeViewStyle; QPointer _model; LayerTreeItemDelegate* _delegate; + TfNotice::Key _layerMutingNoticeKey; std::unique_ptr _cachedModelState;