diff options
author | Julian Eisel <julian@blender.org> | 2021-10-27 18:38:59 +0300 |
---|---|---|
committer | Julian Eisel <julian@blender.org> | 2021-10-27 19:09:00 +0300 |
commit | 487faed6d0a1170a2f098552f794280fabe82186 (patch) | |
tree | b8d8fedaff9421a924afbae9faeb23f2b8d24be1 /source/blender/editors/interface | |
parent | defc1b8e1815155840cff1736523760083a05807 (diff) |
Asset Browser: Ensure parent catalogs are expanded when adding child
When pressing the '+' icon to add a new child catalog, or when adding it
through the context menu, the new catalog should be visible. So the
this change makes sure the parent is uncollapsed if needed.
Diffstat (limited to 'source/blender/editors/interface')
-rw-r--r-- | source/blender/editors/interface/tree_view.cc | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/source/blender/editors/interface/tree_view.cc b/source/blender/editors/interface/tree_view.cc index c08fa51d5a5..d64f9d9c975 100644 --- a/source/blender/editors/interface/tree_view.cc +++ b/source/blender/editors/interface/tree_view.cc @@ -169,6 +169,21 @@ void AbstractTreeView::change_state_delayed() foreach_item([](AbstractTreeViewItem &item) { item.change_state_delayed(); }); } +void AbstractTreeView::unveil_new_items_in_focused_parent() const +{ + foreach_item([](AbstractTreeViewItem &item) { + if (!item.is_new_ || !item.parent_) { + return; + } + if (item.parent_->is_active() || + /* Tree-row button is not created if a parent is collapsed. It's required for the + * hover-check. */ + (item.parent_->tree_row_but_ && item.parent_->is_hovered())) { + item.parent_->set_collapsed(false); + } + }); +} + /* ---------------------------------------------------------------------- */ void AbstractTreeViewItem::tree_row_click_fn(struct bContext * /*C*/, @@ -393,6 +408,7 @@ void AbstractTreeViewItem::update_from_old(const AbstractTreeViewItem &old) is_open_ = old.is_open_; is_active_ = old.is_active_; is_renaming_ = old.is_renaming_; + is_new_ = false; } bool AbstractTreeViewItem::matches(const AbstractTreeViewItem &other) const @@ -569,6 +585,7 @@ void TreeViewBuilder::build_tree_view(AbstractTreeView &tree_view) tree_view.update_from_old(block_); tree_view.change_state_delayed(); tree_view.build_layout_from_tree(TreeViewLayoutBuilder(block_)); + tree_view.unveil_new_items_in_focused_parent(); } /* ---------------------------------------------------------------------- */ |