Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2018-09-24 10:12:54 +0300
committerCampbell Barton <ideasman42@gmail.com>2018-09-24 10:13:16 +0300
commit3d860f53e8becaa8c500b250f5c9ac7215c4f6bf (patch)
tree51bea897b0afdf6ecec31354fa8655c178dec3d9 /source/blender
parent6db79dafb3edac432a2ef98b5fb7fe94b6f746fd (diff)
Gizmo: hide redo gizmo when spin tool not active
Selecting a another tool left the gizmo, which could overlap other tools gizmos.
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/editors/include/ED_gizmo_utils.h4
-rw-r--r--source/blender/editors/mesh/editmesh_extrude_spin_gizmo.c8
-rw-r--r--source/blender/editors/util/gizmo_utils.c11
3 files changed, 18 insertions, 5 deletions
diff --git a/source/blender/editors/include/ED_gizmo_utils.h b/source/blender/editors/include/ED_gizmo_utils.h
index 90968754095..77956b9ca0d 100644
--- a/source/blender/editors/include/ED_gizmo_utils.h
+++ b/source/blender/editors/include/ED_gizmo_utils.h
@@ -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);
diff --git a/source/blender/editors/mesh/editmesh_extrude_spin_gizmo.c b/source/blender/editors/mesh/editmesh_extrude_spin_gizmo.c
index 787038fca03..e3fa02e946e 100644
--- a/source/blender/editors/mesh/editmesh_extrude_spin_gizmo.c
+++ b/source/blender/editors/mesh/editmesh_extrude_spin_gizmo.c
@@ -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)
{
diff --git a/source/blender/editors/util/gizmo_utils.c b/source/blender/editors/util/gizmo_utils.c
index 86eb2c1c003..6b150f93e38 100644
--- a/source/blender/editors/util/gizmo_utils.c
+++ b/source/blender/editors/util/gizmo_utils.c
@@ -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);
+}