diff options
author | Julian Eisel <julian@blender.org> | 2021-10-07 15:59:43 +0300 |
---|---|---|
committer | Julian Eisel <julian@blender.org> | 2021-10-07 16:30:59 +0300 |
commit | c0a5b13b5ed3d1477afdbae48653acf87c6a0d08 (patch) | |
tree | 151f46d224e05acbef29318d269d7e7e940da270 /source/blender/editors/space_file | |
parent | 13a28d9e6f12dcba3f97deb20efb0b0761e93db4 (diff) |
Asset Browser: Rework layout & behavior of catalog tree-view
This reworks how tree rows are constructed in the layout and how they
behave in return.
* To open or collapse a row, the triangle/chevron icon has to be clicked
now. The previous behavior of allowing to do it on the entire row, but
only if the item was active already, was just too unusual and felt
weird.
* Reduce margin between chevron icon and the row label.
* Indent child items without chevron some more, otherwise they feel like
a row on the same level as their parent, just without chevron.
* Fix renaming button taking entire row width. Respect indentation now.
* Fix double-clicking to rename toggling collapsed state on each click.
Some hacks/special-handling was needed so tree-rows always highlight
while the mouse is hovering them, even if the mouse is actually hovering
another button inside the row.
Diffstat (limited to 'source/blender/editors/space_file')
-rw-r--r-- | source/blender/editors/space_file/asset_catalog_tree_view.cc | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/source/blender/editors/space_file/asset_catalog_tree_view.cc b/source/blender/editors/space_file/asset_catalog_tree_view.cc index fac38e71220..84bfa58be85 100644 --- a/source/blender/editors/space_file/asset_catalog_tree_view.cc +++ b/source/blender/editors/space_file/asset_catalog_tree_view.cc @@ -223,11 +223,12 @@ void AssetCatalogTreeViewItem::build_row(uiLayout &row) return; } + uiButTreeRow *tree_row_but = tree_row_button(); PointerRNA *props; const CatalogID catalog_id = catalog_item_.get_catalog_id(); props = UI_but_extra_operator_icon_add( - button(), "ASSET_OT_catalog_new", WM_OP_INVOKE_DEFAULT, ICON_ADD); + (uiBut *)tree_row_but, "ASSET_OT_catalog_new", WM_OP_INVOKE_DEFAULT, ICON_ADD); RNA_string_set(props, "parent_path", catalog_item_.catalog_path().c_str()); /* Tree items without a catalog ID represent components of catalog paths that are not @@ -238,7 +239,7 @@ void AssetCatalogTreeViewItem::build_row(uiLayout &row) BLI_uuid_format(catalog_id_str_buffer, catalog_id); props = UI_but_extra_operator_icon_add( - button(), "ASSET_OT_catalog_delete", WM_OP_INVOKE_DEFAULT, ICON_X); + (uiBut *)tree_row_but, "ASSET_OT_catalog_delete", WM_OP_INVOKE_DEFAULT, ICON_X); RNA_string_set(props, "catalog_id", catalog_id_str_buffer); } } @@ -301,6 +302,7 @@ bool AssetCatalogTreeViewItem::drop_into_catalog(const AssetCatalogTreeView &tre /* Trigger re-run of filtering to update visible assets. */ filelist_tag_needs_filtering(tree_view.space_file_.files); file_select_deselect_all(&tree_view.space_file_, FILE_SEL_SELECTED | FILE_SEL_HIGHLIGHTED); + WM_main_add_notifier(NC_SPACE | ND_SPACE_FILE_LIST, nullptr); } return true; @@ -341,7 +343,7 @@ void AssetCatalogTreeViewAllItem::build_row(uiLayout &row) PointerRNA *props; props = UI_but_extra_operator_icon_add( - button(), "ASSET_OT_catalog_new", WM_OP_INVOKE_DEFAULT, ICON_ADD); + (uiBut *)tree_row_button(), "ASSET_OT_catalog_new", WM_OP_INVOKE_DEFAULT, ICON_ADD); /* No parent path to use the root level. */ RNA_string_set(props, "parent_path", nullptr); } |