From d421adb83e8d39bd9d74ea3d526326b70e93c341 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 18 Sep 2018 16:10:07 +1000 Subject: Gizmo: de-duplicate poll logic Checking the active tool or operator was a common way to check if the gizmo was still in use. --- .../editors/space_view3d/view3d_gizmo_preselect.c | 29 +++------------------- 1 file changed, 3 insertions(+), 26 deletions(-) (limited to 'source/blender/editors/space_view3d/view3d_gizmo_preselect.c') diff --git a/source/blender/editors/space_view3d/view3d_gizmo_preselect.c b/source/blender/editors/space_view3d/view3d_gizmo_preselect.c index 7987134e84b..7b8e3a76c85 100644 --- a/source/blender/editors/space_view3d/view3d_gizmo_preselect.c +++ b/source/blender/editors/space_view3d/view3d_gizmo_preselect.c @@ -30,6 +30,7 @@ #include "BKE_context.h" +#include "ED_gizmo_utils.h" #include "ED_screen.h" #include "UI_resources.h" @@ -49,18 +50,6 @@ struct GizmoGroupPreSelElem { wmGizmo *gizmo; }; -static bool WIDGETGROUP_mesh_preselect_elem_poll(const bContext *C, wmGizmoGroupType *gzgt) -{ - bToolRef_Runtime *tref_rt = WM_toolsystem_runtime_from_context((bContext *)C); - if ((tref_rt == NULL) || - !STREQ(gzgt->idname, tref_rt->gizmo_group)) - { - WM_gizmo_group_type_unlink_delayed_ptr(gzgt); - return false; - } - return true; -} - static void WIDGETGROUP_mesh_preselect_elem_setup(const bContext *UNUSED(C), wmGizmoGroup *gzgroup) { const wmGizmoType *gzt_presel = WM_gizmotype_find("GIZMO_GT_mesh_preselect_elem_3d", true); @@ -82,7 +71,7 @@ void VIEW3D_GGT_mesh_preselect_elem(wmGizmoGroupType *gzgt) gzgt->gzmap_params.spaceid = SPACE_VIEW3D; gzgt->gzmap_params.regionid = RGN_TYPE_WINDOW; - gzgt->poll = WIDGETGROUP_mesh_preselect_elem_poll; + gzgt->poll = ED_gizmo_poll_or_unlink_delayed_from_tool; gzgt->setup = WIDGETGROUP_mesh_preselect_elem_setup; } @@ -97,18 +86,6 @@ struct GizmoGroupPreSelEdgeRing { wmGizmo *gizmo; }; -static bool WIDGETGROUP_mesh_preselect_edgering_poll(const bContext *C, wmGizmoGroupType *gzgt) -{ - bToolRef_Runtime *tref_rt = WM_toolsystem_runtime_from_context((bContext *)C); - if ((tref_rt == NULL) || - !STREQ(gzgt->idname, tref_rt->gizmo_group)) - { - WM_gizmo_group_type_unlink_delayed_ptr(gzgt); - return false; - } - return true; -} - static void WIDGETGROUP_mesh_preselect_edgering_setup(const bContext *UNUSED(C), wmGizmoGroup *gzgroup) { const wmGizmoType *gzt_presel = WM_gizmotype_find("GIZMO_GT_mesh_preselect_edgering_3d", true); @@ -130,7 +107,7 @@ void VIEW3D_GGT_mesh_preselect_edgering(wmGizmoGroupType *gzgt) gzgt->gzmap_params.spaceid = SPACE_VIEW3D; gzgt->gzmap_params.regionid = RGN_TYPE_WINDOW; - gzgt->poll = WIDGETGROUP_mesh_preselect_edgering_poll; + gzgt->poll = ED_gizmo_poll_or_unlink_delayed_from_tool; gzgt->setup = WIDGETGROUP_mesh_preselect_edgering_setup; } -- cgit v1.2.3