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:
authorBastien Montagne <montagne29@wanadoo.fr>2017-06-28 21:50:21 +0300
committerBastien Montagne <montagne29@wanadoo.fr>2017-06-28 21:50:21 +0300
commitb5696f27991ce8ff9c95ed54d0a0387ed31f02ce (patch)
tree17ca4dcd9bccfd0ebb4d11b207688eb699ee3ecd
parent16eca8f47ed6096ce726306b1059f4d50b04454f (diff)
Fix node UI not using translation context correctly.
Now that some node types may have custom context, we need to handle that in the (convoluted :| ) UI code of nodes as well. Reported in T43295 by Gabriel Gazzán (@gab3d), thanks.
-rw-r--r--release/scripts/modules/nodeitems_utils.py12
-rw-r--r--source/blender/blenkernel/intern/node.c16
2 files changed, 21 insertions, 7 deletions
diff --git a/release/scripts/modules/nodeitems_utils.py b/release/scripts/modules/nodeitems_utils.py
index be6f031217c..904062c36cd 100644
--- a/release/scripts/modules/nodeitems_utils.py
+++ b/release/scripts/modules/nodeitems_utils.py
@@ -61,13 +61,19 @@ class NodeItem:
# if no custom label is defined, fall back to the node type UI name
return getattr(bpy.types, self.nodetype).bl_rna.name
+ @property
+ def translation_context(self):
+ if self._label:
+ return bpy.app.translations.contexts.default
+ else:
+ # if no custom label is defined, fall back to the node type UI name
+ return getattr(bpy.types, self.nodetype).bl_rna.translation_context
+
# NB: is a staticmethod because called with an explicit self argument
# NodeItemCustom sets this as a variable attribute in __init__
@staticmethod
def draw(self, layout, context):
- default_context = bpy.app.translations.contexts.default
-
- props = layout.operator("node.add_node", text=self.label, text_ctxt=default_context)
+ props = layout.operator("node.add_node", text=self.label, text_ctxt=self.translation_context)
props.type = self.nodetype
props.use_transform = True
diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c
index dd28a534d22..78323557ae2 100644
--- a/source/blender/blenkernel/intern/node.c
+++ b/source/blender/blenkernel/intern/node.c
@@ -3174,12 +3174,20 @@ void nodeSynchronizeID(bNode *node, bool copy_to_id)
void nodeLabel(bNodeTree *ntree, bNode *node, char *label, int maxlen)
{
- if (node->label[0] != '\0')
+ if (node->label[0] != '\0') {
BLI_strncpy(label, node->label, maxlen);
- else if (node->typeinfo->labelfunc)
+ }
+ else if (node->typeinfo->labelfunc) {
node->typeinfo->labelfunc(ntree, node, label, maxlen);
- else
- BLI_strncpy(label, IFACE_(node->typeinfo->ui_name), maxlen);
+ }
+ else {
+ /* Kind of hacky and weak... Ideally would be better to use RNA here. :| */
+ const char *tmp = CTX_IFACE_(BLT_I18NCONTEXT_ID_NODETREE, node->typeinfo->ui_name);
+ if (tmp == node->typeinfo->ui_name) {
+ tmp = IFACE_(node->typeinfo->ui_name);
+ }
+ BLI_strncpy(label, tmp, maxlen);
+ }
}
static void node_type_base_defaults(bNodeType *ntype)