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:
authorJulian Eisel <julian@blender.org>2021-06-29 18:20:33 +0300
committerJulian Eisel <julian@blender.org>2021-06-29 19:20:56 +0300
commit2ff714269e53f9a744242cd6c039ec65a47ec7ec (patch)
tree9c045b9cf56f50a86b7af87bc56a5495813f2e70 /source/blender/makesrna
parent63aa6dd845ebdb0f62c95a720e82e554c0208d95 (diff)
UI: Support setting operator properties for `UILayout.operator_menu_enum()`
`UILayout.operator_menu_enum()` now returns the operator properties, just like `UILayout.operator()`. This makes it possible to set options for the operator displayed in the menu. In C it can be done through the new `uiItemMenuEnumFullO()` or `uiItemMenuEnumFullO_ptr()`. It's reasonable to have this, probably just a small thing never bothered to add. D10912 could use it, the following comment can be addressed now too: https://developer.blender.org/diffusion/B/browse/master/source/blender/editors/space_nla/nla_buttons.c$583-586
Diffstat (limited to 'source/blender/makesrna')
-rw-r--r--source/blender/makesrna/intern/rna_ui_api.c26
1 files changed, 16 insertions, 10 deletions
diff --git a/source/blender/makesrna/intern/rna_ui_api.c b/source/blender/makesrna/intern/rna_ui_api.c
index 41d32bb0c92..aa235b599b7 100644
--- a/source/blender/makesrna/intern/rna_ui_api.c
+++ b/source/blender/makesrna/intern/rna_ui_api.c
@@ -384,26 +384,28 @@ static void rna_uiItemsEnumO(uiLayout *layout,
uiItemsFullEnumO(layout, opname, propname, NULL, uiLayoutGetOperatorContext(layout), flag);
}
-static void rna_uiItemMenuEnumO(uiLayout *layout,
- bContext *C,
- const char *opname,
- const char *propname,
- const char *name,
- const char *text_ctxt,
- bool translate,
- int icon)
+static PointerRNA rna_uiItemMenuEnumO(uiLayout *layout,
+ bContext *C,
+ const char *opname,
+ const char *propname,
+ const char *name,
+ const char *text_ctxt,
+ bool translate,
+ int icon)
{
wmOperatorType *ot = WM_operatortype_find(opname, 0); /* print error next */
if (!ot || !ot->srna) {
RNA_warning("%s '%s'", ot ? "unknown operator" : "operator missing srna", opname);
- return;
+ return PointerRNA_NULL;
}
/* Get translated name (label). */
name = rna_translate_ui_text(name, text_ctxt, ot->srna, NULL, translate);
- uiItemMenuEnumO_ptr(layout, C, ot, propname, name, icon);
+ PointerRNA opptr;
+ uiItemMenuEnumFullO_ptr(layout, C, ot, propname, name, icon, &opptr);
+ return opptr;
}
static void rna_uiItemL(uiLayout *layout,
@@ -1028,6 +1030,10 @@ void RNA_api_ui_layout(StructRNA *srna)
parm = RNA_def_string(func, "property", NULL, 0, "", "Identifier of property in operator");
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
api_ui_item_common(func);
+ parm = RNA_def_pointer(
+ func, "properties", "OperatorProperties", "", "Operator properties to fill in");
+ RNA_def_parameter_flags(parm, 0, PARM_REQUIRED | PARM_RNAPTR);
+ RNA_def_function_return(func, parm);
/* useful in C but not in python */
# if 0