diff options
Diffstat (limited to 'source/blender/windowmanager/gizmo/intern/wm_gizmo_group.c')
-rw-r--r-- | source/blender/windowmanager/gizmo/intern/wm_gizmo_group.c | 34 |
1 files changed, 29 insertions, 5 deletions
diff --git a/source/blender/windowmanager/gizmo/intern/wm_gizmo_group.c b/source/blender/windowmanager/gizmo/intern/wm_gizmo_group.c index e46cd9049a5..aa4058c95f4 100644 --- a/source/blender/windowmanager/gizmo/intern/wm_gizmo_group.c +++ b/source/blender/windowmanager/gizmo/intern/wm_gizmo_group.c @@ -879,26 +879,28 @@ void WM_gizmo_group_type_add(const char *idname) WM_gizmo_group_type_add_ptr(gzgt); } -void WM_gizmo_group_type_ensure_ptr_ex( +bool WM_gizmo_group_type_ensure_ptr_ex( wmGizmoGroupType *gzgt, wmGizmoMapType *gzmap_type) { wmGizmoGroupTypeRef *gzgt_ref = WM_gizmomaptype_group_find_ptr(gzmap_type, gzgt); if (gzgt_ref == NULL) { WM_gizmo_group_type_add_ptr_ex(gzgt, gzmap_type); + return true; } + return false; } -void WM_gizmo_group_type_ensure_ptr( +bool WM_gizmo_group_type_ensure_ptr( wmGizmoGroupType *gzgt) { wmGizmoMapType *gzmap_type = WM_gizmomaptype_ensure(&gzgt->gzmap_params); - WM_gizmo_group_type_ensure_ptr_ex(gzgt, gzmap_type); + return WM_gizmo_group_type_ensure_ptr_ex(gzgt, gzmap_type); } -void WM_gizmo_group_type_ensure(const char *idname) +bool WM_gizmo_group_type_ensure(const char *idname) { wmGizmoGroupType *gzgt = WM_gizmogrouptype_find(idname, false); BLI_assert(gzgt != NULL); - WM_gizmo_group_type_ensure_ptr(gzgt); + return WM_gizmo_group_type_ensure_ptr(gzgt); } void WM_gizmo_group_type_remove_ptr_ex( @@ -921,6 +923,28 @@ void WM_gizmo_group_type_remove(struct Main *bmain, const char *idname) WM_gizmo_group_type_remove_ptr(bmain, gzgt); } +void WM_gizmo_group_type_reinit_ptr_ex( + struct Main *bmain, wmGizmoGroupType *gzgt, + wmGizmoMapType *gzmap_type) +{ + wmGizmoGroupTypeRef *gzgt_ref = WM_gizmomaptype_group_find_ptr(gzmap_type, gzgt); + BLI_assert(gzgt_ref != NULL); + WM_gizmomaptype_group_unlink(NULL, bmain, gzmap_type, gzgt); + WM_gizmo_group_type_add_ptr_ex(gzgt, gzmap_type); +} +void WM_gizmo_group_type_reinit_ptr( + struct Main *bmain, wmGizmoGroupType *gzgt) +{ + wmGizmoMapType *gzmap_type = WM_gizmomaptype_ensure(&gzgt->gzmap_params); + WM_gizmo_group_type_reinit_ptr_ex(bmain, gzgt, gzmap_type); +} +void WM_gizmo_group_type_reinit(struct Main *bmain, const char *idname) +{ + wmGizmoGroupType *gzgt = WM_gizmogrouptype_find(idname, false); + BLI_assert(gzgt != NULL); + WM_gizmo_group_type_reinit_ptr(bmain, gzgt); +} + /* delayed versions */ void WM_gizmo_group_type_unlink_delayed_ptr_ex( |