diff options
author | Campbell Barton <ideasman42@gmail.com> | 2019-12-19 07:48:33 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2019-12-19 07:50:48 +0300 |
commit | c14e352d2ceb62288349bfc7afa4453d6cf38646 (patch) | |
tree | e61a2987081e2b07e23b086dae457965f69ec99a /source/blender | |
parent | 7ba1489bd7235a333a4f99040b3c9e7501bf346c (diff) |
Fix error in recent gizmo tweak workaround
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/windowmanager/gizmo/WM_gizmo_types.h | 8 | ||||
-rw-r--r-- | source/blender/windowmanager/gizmo/intern/wm_gizmo_map.c | 7 |
2 files changed, 10 insertions, 5 deletions
diff --git a/source/blender/windowmanager/gizmo/WM_gizmo_types.h b/source/blender/windowmanager/gizmo/WM_gizmo_types.h index fc876b56de7..c667dd564f7 100644 --- a/source/blender/windowmanager/gizmo/WM_gizmo_types.h +++ b/source/blender/windowmanager/gizmo/WM_gizmo_types.h @@ -461,12 +461,12 @@ typedef struct wmGizmoGroup { struct ReportList *reports; /** Has the same result as hiding all gizmos individually. */ - struct { - /* Reasons for hiding. */ - union { + union { + /** Reasons for hiding. */ + struct { uint delay_refresh_for_tweak : 1; }; - /* All, when we only want to check. */ + /** All, when we only want to check if any are hidden. */ uint any; } hide; diff --git a/source/blender/windowmanager/gizmo/intern/wm_gizmo_map.c b/source/blender/windowmanager/gizmo/intern/wm_gizmo_map.c index f176f0e5df4..c3dfdd9a419 100644 --- a/source/blender/windowmanager/gizmo/intern/wm_gizmo_map.c +++ b/source/blender/windowmanager/gizmo/intern/wm_gizmo_map.c @@ -407,7 +407,7 @@ static void gizmomap_prepare_drawing(wmGizmoMap *gzmap, for (wmGizmoGroup *gzgroup = gzmap->groups.first; gzgroup; gzgroup = gzgroup->next) { /* check group visibility - drawstep first to avoid unnecessary call of group poll callback */ - if ((gzgroup->hide.any != 0) || !wm_gizmogroup_is_visible_in_drawstep(gzgroup, drawstep) || + if (!wm_gizmogroup_is_visible_in_drawstep(gzgroup, drawstep) || !WM_gizmo_group_type_poll(C, gzgroup->type)) { continue; } @@ -422,6 +422,11 @@ static void gizmomap_prepare_drawing(wmGizmoMap *gzmap, /* Calls `setup`, `setup_keymap` and `refresh` if they're defined. */ WM_gizmogroup_ensure_init(C, gzgroup); + /* Check after ensure which can run refresh and update this value. */ + if (gzgroup->hide.any != 0) { + continue; + } + /* prepare drawing */ if (gzgroup->type->draw_prepare) { gzgroup->type->draw_prepare(C, gzgroup); |