Gizmo: hide redo gizmo when spin tool not active
Selecting a another tool left the gizmo, which could overlap other tools gizmos.
This commit is contained in:
@@ -35,6 +35,10 @@ bool ED_gizmo_poll_or_unlink_delayed_from_operator(
|
||||
const struct bContext *C, struct wmGizmoGroupType *gzgt,
|
||||
const char *idname);
|
||||
|
||||
bool ED_gizmo_poll_or_unlink_delayed_from_tool_ex(
|
||||
const struct bContext *C, struct wmGizmoGroupType *gzgt,
|
||||
const char *gzgt_idname);
|
||||
|
||||
/** Use this as poll function directly for: #wmGizmoGroupType.poll */
|
||||
bool ED_gizmo_poll_or_unlink_delayed_from_tool(
|
||||
const struct bContext *C, struct wmGizmoGroupType *gzgt);
|
||||
|
||||
@@ -683,10 +683,14 @@ static void gizmo_spin_prop_angle_set(
|
||||
|
||||
static bool gizmo_mesh_spin_redo_poll(const bContext *C, wmGizmoGroupType *gzgt)
|
||||
{
|
||||
return ED_gizmo_poll_or_unlink_delayed_from_operator(C, gzgt, "MESH_OT_spin");
|
||||
if (ED_gizmo_poll_or_unlink_delayed_from_operator(C, gzgt, "MESH_OT_spin")) {
|
||||
if (ED_gizmo_poll_or_unlink_delayed_from_tool_ex(C, gzgt, "MESH_GGT_spin")) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
static void gizmo_mesh_spin_redo_modal_from_setup(
|
||||
const bContext *C, wmGizmoGroup *gzgroup)
|
||||
{
|
||||
|
||||
@@ -57,15 +57,20 @@ bool ED_gizmo_poll_or_unlink_delayed_from_operator(
|
||||
return true;
|
||||
}
|
||||
|
||||
/** Can use this as poll function directly. */
|
||||
bool ED_gizmo_poll_or_unlink_delayed_from_tool(const bContext *C, wmGizmoGroupType *gzgt)
|
||||
bool ED_gizmo_poll_or_unlink_delayed_from_tool_ex(const bContext *C, wmGizmoGroupType *gzgt, const char *gzgt_idname)
|
||||
{
|
||||
bToolRef_Runtime *tref_rt = WM_toolsystem_runtime_from_context((bContext *)C);
|
||||
if ((tref_rt == NULL) ||
|
||||
!STREQ(gzgt->idname, tref_rt->gizmo_group))
|
||||
!STREQ(gzgt_idname, tref_rt->gizmo_group))
|
||||
{
|
||||
WM_gizmo_group_type_unlink_delayed_ptr(gzgt);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/** Can use this as poll function directly. */
|
||||
bool ED_gizmo_poll_or_unlink_delayed_from_tool(const bContext *C, wmGizmoGroupType *gzgt)
|
||||
{
|
||||
return ED_gizmo_poll_or_unlink_delayed_from_tool_ex(C, gzgt, gzgt->idname);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user