Fix T103756: wrong anonymous attribute tooltip

This commit is contained in:
Jacques Lucke 2023-01-09 14:52:06 +01:00
parent 29a41ed6c2
commit ca45c2dc59
Notes: blender-bot 2023-02-13 23:17:13 +01:00
Referenced by issue #103756, Regression: Geometry Node: Anonymous attribute tooltip display wrong dependencies names
5 changed files with 24 additions and 4 deletions

View File

@ -47,6 +47,8 @@ class AnonymousAttributeID {
return name_;
}
virtual std::string user_name() const;
void user_add() const
{
users_.fetch_add(1);

View File

@ -268,7 +268,7 @@ class AnonymousAttributeFieldInput : public GeometryFieldInput {
AnonymousAttributeFieldInput(AutoAnonymousAttributeID anonymous_id,
const CPPType &type,
std::string producer_name)
: GeometryFieldInput(type, anonymous_id->name()),
: GeometryFieldInput(type, anonymous_id->user_name()),
anonymous_id_(std::move(anonymous_id)),
producer_name_(producer_name)
{

View File

@ -4,6 +4,11 @@
namespace blender::bke {
std::string AnonymousAttributeID::user_name() const
{
return this->name();
}
bool AnonymousAttributePropagationInfo::propagate(const AnonymousAttributeID &anonymous_id) const
{
if (this->propagate_all) {

View File

@ -49,12 +49,16 @@ using geo_eval_log::NodeWarningType;
*/
class NodeAnonymousAttributeID : public AnonymousAttributeID {
std::string long_name_;
std::string socket_name_;
public:
NodeAnonymousAttributeID(const Object &object,
const ComputeContext &compute_context,
const bNode &bnode,
const StringRef identifier);
const StringRef identifier,
const StringRef name);
std::string user_name() const override;
};
class GeoNodeExecParams {
@ -288,13 +292,15 @@ class GeoNodeExecParams {
if (!this->anonymous_attribute_output_is_required(output_identifier) && !force_create) {
return {};
}
const bNodeSocket &output_socket = node_.output_by_identifier(output_identifier);
const GeoNodesLFUserData &user_data = *this->user_data();
const ComputeContext &compute_context = *user_data.compute_context;
return MEM_new<NodeAnonymousAttributeID>(__func__,
*user_data.modifier_data->self_object,
compute_context,
node_,
output_identifier);
output_identifier,
output_socket.name);
}
/**

View File

@ -18,7 +18,9 @@ namespace blender::nodes {
NodeAnonymousAttributeID::NodeAnonymousAttributeID(const Object &object,
const ComputeContext &compute_context,
const bNode &bnode,
const StringRef identifier)
const StringRef identifier,
const StringRef name)
: socket_name_(name)
{
const ComputeContextHash &hash = compute_context.hash();
{
@ -36,6 +38,11 @@ NodeAnonymousAttributeID::NodeAnonymousAttributeID(const Object &object,
}
}
std::string NodeAnonymousAttributeID::user_name() const
{
return socket_name_;
}
void GeoNodeExecParams::error_message_add(const NodeWarningType type,
const StringRef message) const
{