forked from bartvdbraak/blender
Fix RNA_enum_set_identifier(), needs a context to handle correctly dynamic enums.
This commit is contained in:
parent
e63c773b7c
commit
261ac69f57
@ -363,7 +363,7 @@ static inline void set_enum(PointerRNA& ptr, const char *name, int value)
|
||||
|
||||
static inline void set_enum(PointerRNA& ptr, const char *name, const string &identifier)
|
||||
{
|
||||
RNA_enum_set_identifier(&ptr, name, identifier.c_str());
|
||||
RNA_enum_set_identifier(NULL, &ptr, name, identifier.c_str());
|
||||
}
|
||||
|
||||
static inline string get_string(PointerRNA& ptr, const char *name)
|
||||
|
@ -336,19 +336,19 @@ void ED_keymap_object(wmKeyConfig *keyconf)
|
||||
WM_keymap_add_item(keymap, "OBJECT_OT_select_mirror", MKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0);
|
||||
|
||||
kmi = WM_keymap_add_item(keymap, "OBJECT_OT_select_hierarchy", LEFTBRACKETKEY, KM_PRESS, 0, 0);
|
||||
RNA_enum_set_identifier(kmi->ptr, "direction", "PARENT");
|
||||
RNA_enum_set_identifier(NULL, kmi->ptr, "direction", "PARENT");
|
||||
RNA_boolean_set(kmi->ptr, "extend", false);
|
||||
|
||||
kmi = WM_keymap_add_item(keymap, "OBJECT_OT_select_hierarchy", LEFTBRACKETKEY, KM_PRESS, KM_SHIFT, 0);
|
||||
RNA_enum_set_identifier(kmi->ptr, "direction", "PARENT");
|
||||
RNA_enum_set_identifier(NULL, kmi->ptr, "direction", "PARENT");
|
||||
RNA_boolean_set(kmi->ptr, "extend", true);
|
||||
|
||||
kmi = WM_keymap_add_item(keymap, "OBJECT_OT_select_hierarchy", RIGHTBRACKETKEY, KM_PRESS, 0, 0);
|
||||
RNA_enum_set_identifier(kmi->ptr, "direction", "CHILD");
|
||||
RNA_enum_set_identifier(NULL, kmi->ptr, "direction", "CHILD");
|
||||
RNA_boolean_set(kmi->ptr, "extend", false);
|
||||
|
||||
kmi = WM_keymap_add_item(keymap, "OBJECT_OT_select_hierarchy", RIGHTBRACKETKEY, KM_PRESS, KM_SHIFT, 0);
|
||||
RNA_enum_set_identifier(kmi->ptr, "direction", "CHILD");
|
||||
RNA_enum_set_identifier(NULL, kmi->ptr, "direction", "CHILD");
|
||||
RNA_boolean_set(kmi->ptr, "extend", true);
|
||||
|
||||
WM_keymap_verify_item(keymap, "OBJECT_OT_parent_set", PKEY, KM_PRESS, KM_CTRL, 0);
|
||||
|
@ -1006,7 +1006,7 @@ void RNA_float_set_array(PointerRNA *ptr, const char *name, const float *values
|
||||
|
||||
int RNA_enum_get(PointerRNA *ptr, const char *name);
|
||||
void RNA_enum_set(PointerRNA *ptr, const char *name, int value);
|
||||
void RNA_enum_set_identifier(PointerRNA *ptr, const char *name, const char *id);
|
||||
void RNA_enum_set_identifier(struct bContext *C, PointerRNA *ptr, const char *name, const char *id);
|
||||
bool RNA_enum_is_equal(struct bContext *C, PointerRNA *ptr, const char *name, const char *enumname);
|
||||
|
||||
/* lower level functions that don't use a PointerRNA */
|
||||
|
@ -4992,13 +4992,13 @@ void RNA_enum_set(PointerRNA *ptr, const char *name, int value)
|
||||
printf("%s: %s.%s not found.\n", __func__, ptr->type->identifier, name);
|
||||
}
|
||||
|
||||
void RNA_enum_set_identifier(PointerRNA *ptr, const char *name, const char *id)
|
||||
void RNA_enum_set_identifier(bContext *C, PointerRNA *ptr, const char *name, const char *id)
|
||||
{
|
||||
PropertyRNA *prop = RNA_struct_find_property(ptr, name);
|
||||
|
||||
if (prop) {
|
||||
int value;
|
||||
if (RNA_property_enum_value(NULL, ptr, prop, id, &value))
|
||||
if (RNA_property_enum_value(C, ptr, prop, id, &value))
|
||||
RNA_property_enum_set(ptr, prop, value);
|
||||
else
|
||||
printf("%s: %s.%s has no enum id '%s'.\n", __func__, ptr->type->identifier, name, id);
|
||||
|
Loading…
Reference in New Issue
Block a user