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>2019-12-19 07:48:33 +0300
committerCampbell Barton <ideasman42@gmail.com>2019-12-19 07:50:48 +0300
commitc14e352d2ceb62288349bfc7afa4453d6cf38646 (patch)
treee61a2987081e2b07e23b086dae457965f69ec99a
parent7ba1489bd7235a333a4f99040b3c9e7501bf346c (diff)
Fix error in recent gizmo tweak workaround
-rw-r--r--source/blender/windowmanager/gizmo/WM_gizmo_types.h8
-rw-r--r--source/blender/windowmanager/gizmo/intern/wm_gizmo_map.c7
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);