diff options
author | Campbell Barton <ideasman42@gmail.com> | 2019-12-18 17:27:23 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2019-12-18 17:53:15 +0300 |
commit | d591c8a350310e69d4db23759847fb0df2ff23ae (patch) | |
tree | dc11974b50e0d2d06cdfc5a9fe8f2a2ff735f983 /source/blender/editors/space_view3d/view3d_gizmo_tool_generic.c | |
parent | 5467f3de3a4aca99e678f16356c1d54cda5fb42f (diff) |
Gizmo: add the ability to postpone refreshing while tweaking
This resolves a logical problem using tweak as a fallback tool.
See: T66304#828742
The select action would immediately show the gizmo underneath it,
then the tweak would be handled by the gizmo instead of moving the item
under the cursor.
Currently this works by hiding the gizmo until the tweak event ends.
While it's simpler to check if the gizmo received a mouse-down event,
it causes flickering before each drag event which feels like a glitch.
This is optional for each gizmo type because there are cases where this
can be useful to activate the gizmo immediately (mesh rip for example).
Diffstat (limited to 'source/blender/editors/space_view3d/view3d_gizmo_tool_generic.c')
-rw-r--r-- | source/blender/editors/space_view3d/view3d_gizmo_tool_generic.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/source/blender/editors/space_view3d/view3d_gizmo_tool_generic.c b/source/blender/editors/space_view3d/view3d_gizmo_tool_generic.c index f761a44fe16..8cd5ed7a478 100644 --- a/source/blender/editors/space_view3d/view3d_gizmo_tool_generic.c +++ b/source/blender/editors/space_view3d/view3d_gizmo_tool_generic.c @@ -195,7 +195,8 @@ void VIEW3D_GGT_tool_generic_handle_normal(wmGizmoGroupType *gzgt) gzgt->name = "Generic Tool Widget Normal"; gzgt->idname = handle_normal_id; - gzgt->flag |= (WM_GIZMOGROUPTYPE_3D | WM_GIZMOGROUPTYPE_TOOL_FALLBACK_KEYMAP); + gzgt->flag |= (WM_GIZMOGROUPTYPE_3D | WM_GIZMOGROUPTYPE_TOOL_FALLBACK_KEYMAP | + WM_GIZMOGROUPTYPE_DELAY_REFRESH_FOR_TWEAK); gzgt->gzmap_params.spaceid = SPACE_VIEW3D; gzgt->gzmap_params.regionid = RGN_TYPE_WINDOW; @@ -211,6 +212,8 @@ void VIEW3D_GGT_tool_generic_handle_free(wmGizmoGroupType *gzgt) gzgt->name = "Generic Tool Widget Free"; gzgt->idname = handle_free_id; + /* Don't use 'WM_GIZMOGROUPTYPE_DELAY_REFRESH_FOR_TWEAK' here since this style of gizmo + * is better suited to being activated immediately. */ gzgt->flag |= (WM_GIZMOGROUPTYPE_3D | WM_GIZMOGROUPTYPE_TOOL_FALLBACK_KEYMAP); gzgt->gzmap_params.spaceid = SPACE_VIEW3D; |