From 82b06f3112b91572169339e69e9f91a8fabc7be2 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 29 Jan 2021 11:12:57 +1100 Subject: PyAPI: Add error when registering a 3D gizmo into a 2D gizmo group Address issue raised in T85145. --- source/blender/makesrna/intern/rna_wm_gizmo.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/source/blender/makesrna/intern/rna_wm_gizmo.c b/source/blender/makesrna/intern/rna_wm_gizmo.c index 5d4d661b16f..50270df5f36 100644 --- a/source/blender/makesrna/intern/rna_wm_gizmo.c +++ b/source/blender/makesrna/intern/rna_wm_gizmo.c @@ -600,6 +600,18 @@ static wmGizmo *rna_GizmoGroup_gizmo_new(wmGizmoGroup *gzgroup, BKE_reportf(reports, RPT_ERROR, "GizmoType '%s' not known", idname); return NULL; } + if ((gzgroup->type->flag & WM_GIZMOGROUPTYPE_3D) == 0) { + /* Allow for neither callbacks to be set, while this doesn't seem like a valid use case, + * there may be rare situations where a developer wants a gizmo to be draw-only. */ + if ((gzt->test_select == NULL) && (gzt->draw_select != NULL)) { + BKE_reportf(reports, + RPT_ERROR, + "GizmoType '%s' is for a 3D gizmo-group. " + "The 'draw_select' callback is set where only 'test_select' will be used.", + idname); + return NULL; + } + } wmGizmo *gz = WM_gizmo_new_ptr(gzt, gzgroup, NULL); return gz; } -- cgit v1.2.3