diff options
author | Campbell Barton <ideasman42@gmail.com> | 2017-10-28 08:07:56 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2017-10-30 06:26:57 +0300 |
commit | 689ad9ade42fbb03084aaca7e478efddbe891e7f (patch) | |
tree | c5838ab57c43d531b9dc0d014f4f63784cb3f214 /source/blender/windowmanager/manipulators/intern/wm_manipulator_group.c | |
parent | ca495381c566b31ab8edc387dc7f21e9b5f90a5d (diff) |
Fix manipulator drawing before their refresh callback
Caused glitch with Scale-Cage tool.
Diffstat (limited to 'source/blender/windowmanager/manipulators/intern/wm_manipulator_group.c')
-rw-r--r-- | source/blender/windowmanager/manipulators/intern/wm_manipulator_group.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/source/blender/windowmanager/manipulators/intern/wm_manipulator_group.c b/source/blender/windowmanager/manipulators/intern/wm_manipulator_group.c index 24786695cba..e0b12289b9e 100644 --- a/source/blender/windowmanager/manipulators/intern/wm_manipulator_group.c +++ b/source/blender/windowmanager/manipulators/intern/wm_manipulator_group.c @@ -184,9 +184,16 @@ void wm_manipulatorgroup_ensure_initialized(wmManipulatorGroup *mgroup, const bC wm_manipulatorgrouptype_setup_keymap(wgt, wm->defaultconf); BLI_assert(wgt->keymap != NULL); } - mgroup->init_flag |= WM_MANIPULATORGROUP_INIT_SETUP; } + + /* refresh may be called multiple times, this just ensures its called at least once before we draw. */ + if (UNLIKELY((mgroup->init_flag & WM_MANIPULATORGROUP_INIT_REFRESH) == 0)) { + if (mgroup->type->refresh) { + mgroup->type->refresh(C, mgroup); + } + mgroup->init_flag |= WM_MANIPULATORGROUP_INIT_REFRESH; + } } bool wm_manipulatorgroup_is_visible(const wmManipulatorGroup *mgroup, const bContext *C) |