fix (actually nasty workaround), for groups incorrectly drawing in the object panel...
authorCampbell Barton <ideasman42@gmail.com>
Tue, 3 Jul 2012 10:32:10 +0000 (10:32 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Tue, 3 Jul 2012 10:32:10 +0000 (10:32 +0000)
also minor style cleanup in bpy_rna.c

release/scripts/startup/bl_ui/properties_object.py
source/blender/python/intern/bpy_rna.c

index 3c30f27f16b2ccac0ea7d11a48b45793edb23d0d..4ce909d3645f28588cc17fb688e97c862d2ac327 100644 (file)
@@ -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)
index 04f9a90f0d27e7cdeb66e5e2209246fdbdf91f8b..4bba7ba6838fb202bef2d122ef033da9f295fd46 100644 (file)
@@ -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");