diff options
author | Hans Goudey <h.goudey@me.com> | 2021-10-26 19:05:01 +0300 |
---|---|---|
committer | Hans Goudey <h.goudey@me.com> | 2021-10-26 19:05:11 +0300 |
commit | 3371a4c472eef06d1c9e15451b245cb4575d667f (patch) | |
tree | a0dcc154e4cb449b40ec3e9607d971e01eb80083 /source/blender/editors/include/UI_interface.hh | |
parent | f1a662c15771d7ced920986db6b94c50d3e6c815 (diff) |
UI: Improve node editor breadcrumbs display
This patch upgrades node editor breadcrumbs to have slightly more
visual weight, to including the base path of object/modifier/world,
etc, have more visually pleasing spacing, and contain icons.
In the code, a generic "context path" is added to interface code.
The idea is that this could be used to draw other breadcrumbs in areas
like the property editor or the spreadsheet, and features could be added
to all of those areas at the same time.
Ideally we would be able to control the color of the breadcrumbs with a
specific theme color, but since they are drawn with the regular layout
system, that is not easily possible.
Thanks to @fabian_schempp for the original patch.
Differential Revision: https://developer.blender.org/D10413
Diffstat (limited to 'source/blender/editors/include/UI_interface.hh')
-rw-r--r-- | source/blender/editors/include/UI_interface.hh | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/source/blender/editors/include/UI_interface.hh b/source/blender/editors/include/UI_interface.hh index 5edccfa8c88..b14ee6c4a59 100644 --- a/source/blender/editors/include/UI_interface.hh +++ b/source/blender/editors/include/UI_interface.hh @@ -23,15 +23,40 @@ #include <memory> #include "BLI_string_ref.hh" +#include "BLI_vector.hh" + +#include "UI_resources.h" namespace blender::nodes::geometry_nodes_eval_log { struct GeometryAttributeInfo; } struct uiBlock; +struct StructRNA; +struct uiSearchItems; + namespace blender::ui { + class AbstractTreeView; +/** + * An item in a breadcrumb-like context. Currently this struct is very simple, but more + * could be added to it in the future, to support interactivity or tooltips, for example. + */ +struct ContextPathItem { + /* Text to display in the UI. */ + std::string name; + /* #BIFIconID */ + int icon; +}; + +void context_path_add_generic(Vector<ContextPathItem> &path, + StructRNA &rna_type, + void *ptr, + const BIFIconID icon_override = ICON_NONE); + +void template_breadcrumbs(uiLayout &layout, Span<ContextPathItem> context_path); + void attribute_search_add_items( StringRefNull str, const bool is_output, |