Geometry Nodes: use placeholder instead of label in some string sockets

This makes the input field much wider. I enabled this for most string sockets
except for a few where it is important to see the label even if the user has
inserted a string already (usually because there is more than one string input).

Pull Request: https://projects.blender.org/blender/blender/pulls/127992
This commit is contained in:
Jacques Lucke
2024-09-24 18:22:32 +02:00
parent 8027720e51
commit a6d5652043
15 changed files with 33 additions and 17 deletions

View File

@@ -1303,6 +1303,7 @@ static void std_node_socket_draw(
return;
}
const char *label = text;
text = (sock->flag & SOCK_HIDE_LABEL) ? "" : text;
/* Some socket types draw the gizmo icon in a special way to look better. All others use a
@@ -1368,7 +1369,7 @@ static void std_node_socket_draw(
case SOCK_STRING: {
if (socket_needs_attribute_search(*node, *sock)) {
if (text[0] == '\0') {
node_geometry_add_attribute_search_button(*C, *node, *ptr, *layout);
node_geometry_add_attribute_search_button(*C, *node, *ptr, *layout, label);
}
else {
uiLayout *row = uiLayoutSplit(layout, 0.4f, false);
@@ -1378,7 +1379,15 @@ static void std_node_socket_draw(
}
else {
if (text[0] == '\0') {
uiItemR(layout, ptr, "default_value", DEFAULT_FLAGS, "", ICON_NONE);
uiItemFullR(layout,
ptr,
RNA_struct_find_property(ptr, "default_value"),
-1,
0,
UI_ITEM_NONE,
"",
ICON_NONE,
label);
}
else {
uiLayout *row = uiLayoutSplit(layout, 0.4f, false);

View File

@@ -231,7 +231,8 @@ static void attribute_search_exec_fn(bContext *C, void *data_v, void *item_v)
void node_geometry_add_attribute_search_button(const bContext & /*C*/,
const bNode &node,
PointerRNA &socket_ptr,
uiLayout &layout)
uiLayout &layout,
const StringRefNull placeholder)
{
uiBlock *block = uiLayoutGetBlock(&layout);
uiBut *but = uiDefIconTextButR(block,
@@ -249,6 +250,7 @@ void node_geometry_add_attribute_search_button(const bContext & /*C*/,
0.0f,
0.0f,
"");
UI_but_placeholder_set(but, placeholder.c_str());
const bNodeSocket &socket = *static_cast<const bNodeSocket *>(socket_ptr.data);
AttributeSearchData *data = MEM_cnew<AttributeSearchData>(__func__);

View File

@@ -400,7 +400,8 @@ void NODE_GGT_backdrop_corner_pin(wmGizmoGroupType *gzgt);
void node_geometry_add_attribute_search_button(const bContext &C,
const bNode &node,
PointerRNA &socket_ptr,
uiLayout &layout);
uiLayout &layout,
StringRefNull placeholder = "");
/* `node_context_path.cc` */

View File

@@ -42,8 +42,12 @@ static void node_declare(NodeDeclarationBuilder &b)
b.add_input<decl::Color>("A", "A_COL").translation_context(BLT_I18NCONTEXT_ID_NODETREE);
b.add_input<decl::Color>("B", "B_COL").translation_context(BLT_I18NCONTEXT_ID_NODETREE);
b.add_input<decl::String>("A", "A_STR").translation_context(BLT_I18NCONTEXT_ID_NODETREE);
b.add_input<decl::String>("B", "B_STR").translation_context(BLT_I18NCONTEXT_ID_NODETREE);
b.add_input<decl::String>("A", "A_STR")
.translation_context(BLT_I18NCONTEXT_ID_NODETREE)
.hide_label();
b.add_input<decl::String>("B", "B_STR")
.translation_context(BLT_I18NCONTEXT_ID_NODETREE)
.hide_label();
b.add_input<decl::Float>("C").default_value(0.9f);
b.add_input<decl::Float>("Angle").default_value(0.0872665f).subtype(PROP_ANGLE);

View File

@@ -10,7 +10,7 @@ namespace blender::nodes::node_fn_replace_string_cc {
static void node_declare(NodeDeclarationBuilder &b)
{
b.add_input<decl::String>("String");
b.add_input<decl::String>("String").hide_label();
b.add_input<decl::String>("Find").description("The string to find in the input string");
b.add_input<decl::String>("Replace").description("The string to replace each match with");
b.add_output<decl::String>("String");

View File

@@ -10,7 +10,7 @@ namespace blender::nodes::node_fn_slice_string_cc {
static void node_declare(NodeDeclarationBuilder &b)
{
b.add_input<decl::String>("String");
b.add_input<decl::String>("String").hide_label();
b.add_input<decl::Int>("Position");
b.add_input<decl::Int>("Length").min(0).default_value(10);
b.add_output<decl::String>("String");

View File

@@ -12,7 +12,7 @@ namespace blender::nodes::node_fn_string_length_cc {
static void node_declare(NodeDeclarationBuilder &b)
{
b.add_input<decl::String>("String");
b.add_input<decl::String>("String").hide_label();
b.add_output<decl::Int>("Length");
}

View File

@@ -21,7 +21,7 @@ namespace blender::nodes::node_geo_get_named_grid_cc {
static void node_declare(NodeDeclarationBuilder &b)
{
b.add_input<decl::Geometry>("Volume");
b.add_input<decl::String>("Name");
b.add_input<decl::String>("Name").hide_label();
b.add_input<decl::Bool>("Remove").default_value(true).translation_context(
BLT_I18NCONTEXT_OPERATOR_DEFAULT);

View File

@@ -21,7 +21,7 @@ static void node_declare(NodeDeclarationBuilder &b)
{
const bNode *node = b.node_or_null();
b.add_input<decl::String>("Name").is_attribute_name();
b.add_input<decl::String>("Name").is_attribute_name().hide_label();
if (node != nullptr) {
const NodeGeometryInputNamedAttribute &storage = node_storage(*node);

View File

@@ -12,7 +12,7 @@ namespace blender::nodes::node_geo_input_named_layer_selection__cc {
static void node_declare(NodeDeclarationBuilder &b)
{
b.add_input<decl::String>("Name");
b.add_input<decl::String>("Name").hide_label();
b.add_output<decl::Bool>("Selection").field_source_reference_all();
}

View File

@@ -21,7 +21,7 @@ enum class PatternMode {
static void node_declare(NodeDeclarationBuilder &b)
{
b.add_input<decl::Geometry>("Geometry");
b.add_input<decl::String>("Name").is_attribute_name();
b.add_input<decl::String>("Name").is_attribute_name().hide_label();
b.add_output<decl::Geometry>("Geometry").propagate_all();
}

View File

@@ -9,7 +9,7 @@ namespace blender::nodes::node_geo_set_geometry_name {
static void node_declare(NodeDeclarationBuilder &b)
{
b.add_input<decl::Geometry>("Geometry");
b.add_input<decl::String>("Name");
b.add_input<decl::String>("Name").hide_label();
b.add_output<decl::Geometry>("Geometry").propagate_all();
}

View File

@@ -33,7 +33,7 @@ static void node_declare(NodeDeclarationBuilder &b)
b.add_input<decl::Geometry>("Geometry");
b.add_input<decl::Bool>("Selection").default_value(true).hide_value().field_on_all();
b.add_input<decl::String>("Name").is_attribute_name();
b.add_input<decl::String>("Name").is_attribute_name().hide_label();
if (node != nullptr) {
const NodeGeometryStoreNamedAttribute &storage = node_storage(*node);

View File

@@ -21,7 +21,7 @@ namespace blender::nodes::node_geo_store_named_grid_cc {
static void node_declare(NodeDeclarationBuilder &b)
{
b.add_input<decl::Geometry>("Volume");
b.add_input<decl::String>("Name");
b.add_input<decl::String>("Name").hide_label();
b.add_output<decl::Geometry>("Volume");
const bNode *node = b.node_or_null();

View File

@@ -28,7 +28,7 @@ NODE_STORAGE_FUNCS(NodeGeometryStringToCurves)
static void node_declare(NodeDeclarationBuilder &b)
{
b.add_input<decl::String>("String");
b.add_input<decl::String>("String").hide_label();
b.add_input<decl::Float>("Size").default_value(1.0f).min(0.0f).subtype(PROP_DISTANCE);
b.add_input<decl::Float>("Character Spacing").default_value(1.0f).min(0.0f);
b.add_input<decl::Float>("Word Spacing").default_value(1.0f).min(0.0f);