diff options
author | Campbell Barton <ideasman42@gmail.com> | 2012-07-03 14:32:10 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2012-07-03 14:32:10 +0400 |
commit | 314a2758505aeba72e2c87f06c5a61c6ceb7773c (patch) | |
tree | ce598cd11bd9a212b7e19236647baac90ce00a52 | |
parent | 2f5735a9d4745f33e850a163248c6c18a1305f64 (diff) |
fix (actually nasty workaround), for groups incorrectly drawing in the object panel when the blend file has naming collisions with library data.
also minor style cleanup in bpy_rna.c
-rw-r--r-- | release/scripts/startup/bl_ui/properties_object.py | 9 | ||||
-rw-r--r-- | source/blender/python/intern/bpy_rna.c | 18 |
2 files changed, 16 insertions, 11 deletions
diff --git a/release/scripts/startup/bl_ui/properties_object.py b/release/scripts/startup/bl_ui/properties_object.py index 3c30f27f16b..4ce909d3645 100644 --- a/release/scripts/startup/bl_ui/properties_object.py +++ b/release/scripts/startup/bl_ui/properties_object.py @@ -159,7 +159,7 @@ class OBJECT_PT_groups(ObjectButtonsPanel, Panel): def draw(self, context): layout = self.layout - ob = context.object + obj = context.object row = layout.row(align=True) row.operator("object.group_link", text="Add to Group") @@ -167,8 +167,13 @@ class OBJECT_PT_groups(ObjectButtonsPanel, Panel): # XXX, this is bad practice, yes, I wrote it :( - campbell index = 0 + obj_name = obj.name for group in bpy.data.groups: - if ob.name in group.objects: + # XXX this is slow and stupid!, we need 2 checks, one thats fast + # and another that we can be sure its not a name collission + # from linked library data + group_objects = group.objects + if obj_name in group.objects and obj in group_objects[:]: col = layout.column(align=True) col.context_pointer_set("group", group) diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c index 04f9a90f0d2..4bba7ba6838 100644 --- a/source/blender/python/intern/bpy_rna.c +++ b/source/blender/python/intern/bpy_rna.c @@ -873,7 +873,7 @@ static PyObject *pyrna_struct_repr(BPy_StructRNA *self) if (path) { if (GS(id->name) == ID_NT) { /* nodetree paths are not accurate */ ret = PyUnicode_FromFormat("bpy.data...%s", - path); + path); } else { ret = PyUnicode_FromFormat("bpy.data.%s[%R].%s", @@ -980,7 +980,7 @@ static PyObject *pyrna_prop_repr(BPy_PropertyRNA *self) if (path) { if (GS(id->name) == ID_NT) { /* nodetree paths are not accurate */ ret = PyUnicode_FromFormat("bpy.data...%s", - path); + path); } else { ret = PyUnicode_FromFormat("bpy.data.%s[%R].%s", @@ -2040,12 +2040,12 @@ static int pyrna_prop_collection_bool(BPy_PropertyRNA *self) * This is done for faster lookups. */ #define PYRNA_PROP_COLLECTION_ABS_INDEX(ret_err) \ if (keynum < 0) { \ - keynum_abs += RNA_property_collection_length(&self->ptr, self->prop); \ - if (keynum_abs < 0) { \ - PyErr_Format(PyExc_IndexError, \ - "bpy_prop_collection[%d]: out of range.", keynum); \ - return ret_err; \ - } \ + keynum_abs += RNA_property_collection_length(&self->ptr, self->prop); \ + if (keynum_abs < 0) { \ + PyErr_Format(PyExc_IndexError, \ + "bpy_prop_collection[%d]: out of range.", keynum); \ + return ret_err; \ + } \ } (void)0 @@ -3508,8 +3508,8 @@ static PyObject *pyrna_struct_getattro(BPy_StructRNA *self, PyObject *pyname) PyList_Append(ret, linkptr); Py_DECREF(linkptr); } + break; } - break; default: /* should never happen */ BLI_assert(!"Invalid context type"); |