Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulian Eisel <julian@blender.org>2021-10-27 18:38:59 +0300
committerJulian Eisel <julian@blender.org>2021-10-27 19:09:00 +0300
commit487faed6d0a1170a2f098552f794280fabe82186 (patch)
treeb8d8fedaff9421a924afbae9faeb23f2b8d24be1 /source/blender/editors/interface
parentdefc1b8e1815155840cff1736523760083a05807 (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.cc17
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();
}
/* ---------------------------------------------------------------------- */