Merge branch 'master' into blender2.8
[blender.git] / source / blender / python / intern / bpy_rna_callback.c
index 45d556d68e9932496f1c1519de1ddc4dddf8a79f..7adb1d40fcc973d447842c50cd75d40bf765e952 100644 (file)
@@ -101,7 +101,10 @@ PyObject *pyrna_callback_add(BPy_StructRNA *self, PyObject *args)
 
        if (RNA_struct_is_a(self->ptr.type, &RNA_Region)) {
                if (cb_event_str) {
-                       if (pyrna_enum_value_from_id(region_draw_mode_items, cb_event_str, &cb_event, "bpy_struct.callback_add()") == -1) {
+                       if (pyrna_enum_value_from_id(
+                                   region_draw_mode_items, cb_event_str,
+                                   &cb_event, "bpy_struct.callback_add()") == -1)
+                       {
                                return NULL;
                        }
                }
@@ -210,10 +213,16 @@ PyObject *pyrna_callback_classmethod_add(PyObject *UNUSED(self), PyObject *args)
                        return NULL;
                }
 
-               if (pyrna_enum_value_from_id(region_draw_mode_items, cb_event_str, &cb_event, "bpy_struct.callback_add()") == -1) {
+               if (pyrna_enum_value_from_id(
+                           region_draw_mode_items, cb_event_str,
+                           &cb_event, "bpy_struct.callback_add()") == -1)
+               {
                        return NULL;
                }
-               else if (pyrna_enum_value_from_id(rna_enum_region_type_items, cb_regiontype_str, &cb_regiontype, "bpy_struct.callback_add()") == -1) {
+               else if (pyrna_enum_value_from_id(
+                                rna_enum_region_type_items, cb_regiontype_str,
+                                &cb_regiontype, "bpy_struct.callback_add()") == -1)
+               {
                        return NULL;
                }
                else {
@@ -225,7 +234,10 @@ PyObject *pyrna_callback_classmethod_add(PyObject *UNUSED(self), PyObject *args)
                        else {
                                SpaceType *st = BKE_spacetype_from_id(spaceid);
                                ARegionType *art = BKE_regiontype_from_id(st, cb_regiontype);
-
+                               if (art == NULL) {
+                                       PyErr_Format(PyExc_TypeError, "region type '%.200s' not in space", cb_regiontype_str);
+                                       return NULL;
+                               }
                                handle = ED_region_draw_cb_activate(art, cb_region_draw, (void *)args, cb_event);
                                Py_INCREF(args);
                        }
@@ -276,7 +288,10 @@ PyObject *pyrna_callback_classmethod_remove(PyObject *UNUSED(self), PyObject *ar
                customdata = ED_region_draw_cb_customdata(handle);
                Py_DECREF((PyObject *)customdata);
 
-               if (pyrna_enum_value_from_id(rna_enum_region_type_items, cb_regiontype_str, &cb_regiontype, "bpy_struct.callback_remove()") == -1) {
+               if (pyrna_enum_value_from_id(
+                           rna_enum_region_type_items, cb_regiontype_str,
+                           &cb_regiontype, "bpy_struct.callback_remove()") == -1)
+               {
                        return NULL;
                }
                else {
@@ -288,7 +303,10 @@ PyObject *pyrna_callback_classmethod_remove(PyObject *UNUSED(self), PyObject *ar
                        else {
                                SpaceType *st = BKE_spacetype_from_id(spaceid);
                                ARegionType *art = BKE_regiontype_from_id(st, cb_regiontype);
-
+                               if (art == NULL) {
+                                       PyErr_Format(PyExc_TypeError, "region type '%.200s' not in space", cb_regiontype_str);
+                                       return NULL;
+                               }
                                ED_region_draw_cb_exit(art, handle);
                        }
                }