Fix RNA_enum_set_identifier(), needs a context to handle correctly dynamic enums.
This commit is contained in:
@@ -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)
|
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)
|
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);
|
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);
|
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);
|
RNA_boolean_set(kmi->ptr, "extend", false);
|
||||||
|
|
||||||
kmi = WM_keymap_add_item(keymap, "OBJECT_OT_select_hierarchy", LEFTBRACKETKEY, KM_PRESS, KM_SHIFT, 0);
|
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);
|
RNA_boolean_set(kmi->ptr, "extend", true);
|
||||||
|
|
||||||
kmi = WM_keymap_add_item(keymap, "OBJECT_OT_select_hierarchy", RIGHTBRACKETKEY, KM_PRESS, 0, 0);
|
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);
|
RNA_boolean_set(kmi->ptr, "extend", false);
|
||||||
|
|
||||||
kmi = WM_keymap_add_item(keymap, "OBJECT_OT_select_hierarchy", RIGHTBRACKETKEY, KM_PRESS, KM_SHIFT, 0);
|
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);
|
RNA_boolean_set(kmi->ptr, "extend", true);
|
||||||
|
|
||||||
WM_keymap_verify_item(keymap, "OBJECT_OT_parent_set", PKEY, KM_PRESS, KM_CTRL, 0);
|
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);
|
int RNA_enum_get(PointerRNA *ptr, const char *name);
|
||||||
void RNA_enum_set(PointerRNA *ptr, const char *name, int value);
|
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);
|
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 */
|
/* 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);
|
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);
|
PropertyRNA *prop = RNA_struct_find_property(ptr, name);
|
||||||
|
|
||||||
if (prop) {
|
if (prop) {
|
||||||
int value;
|
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);
|
RNA_property_enum_set(ptr, prop, value);
|
||||||
else
|
else
|
||||||
printf("%s: %s.%s has no enum id '%s'.\n", __func__, ptr->type->identifier, name, id);
|
printf("%s: %s.%s has no enum id '%s'.\n", __func__, ptr->type->identifier, name, id);
|
||||||
|
Reference in New Issue
Block a user