diff options
author | Bastien Montagne <bastien@blender.org> | 2021-11-22 11:32:59 +0300 |
---|---|---|
committer | Bastien Montagne <bastien@blender.org> | 2021-11-22 11:32:59 +0300 |
commit | db20837c3a2822f19bab1c6bf62b51cdb0daed54 (patch) | |
tree | 49d613ea9c8c47e71f67b9ffa7cc4b66af91a527 /source/blender/editors/interface | |
parent | fb470c256aac5dc8834cf113ca1f2beab373b8da (diff) | |
parent | 6c16bb2706c729012dc63b5703555930b1b8da62 (diff) |
Merge branch 'blender-v3.0-release'
Diffstat (limited to 'source/blender/editors/interface')
-rw-r--r-- | source/blender/editors/interface/interface_templates.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index b30a86c5fcf..1451bba5dcc 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -2036,6 +2036,15 @@ static void constraint_reorder(bContext *C, Panel *panel, int new_index) PointerRNA *con_ptr = UI_panel_custom_data_get(panel); bConstraint *con = (bConstraint *)con_ptr->data; + /* Ensure called operator does have a context with the expected "constraint" member. */ + ListBase contexts = {NULL}; + bContextStore *previous_context_store = CTX_store_get(C); + if (previous_context_store != NULL) { + BLI_addtail(&contexts, previous_context_store); + } + bContextStore *constraint_context_store = CTX_store_add(&contexts, "constraint", con_ptr); + CTX_store_set(C, constraint_context_store); + PointerRNA props_ptr; wmOperatorType *ot = WM_operatortype_find("CONSTRAINT_OT_move_to_index", false); WM_operator_properties_create_ptr(&props_ptr, ot); @@ -2045,6 +2054,12 @@ static void constraint_reorder(bContext *C, Panel *panel, int new_index) RNA_enum_set(&props_ptr, "owner", constraint_from_bone ? 1 : 0); WM_operator_name_call_ptr(C, ot, WM_OP_INVOKE_DEFAULT, &props_ptr); WM_operator_properties_free(&props_ptr); + + /* Cleanup modified context. */ + CTX_store_set(C, previous_context_store); + if (previous_context_store != constraint_context_store) { + CTX_store_free(constraint_context_store); + } } /** |