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:
-rw-r--r--source/blender/editors/interface/interface_templates.c15
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 1d349aa0596..ac638395c0b 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);
+ }
}
/**