diff options
author | Campbell Barton <ideasman42@gmail.com> | 2021-01-28 08:12:43 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2021-01-28 08:12:43 +0300 |
commit | 10e093b30d17149008a10df3f52d39744577f17b (patch) | |
tree | b52b1c46b8083c45829cebd4c9076e2ab957b70e /source | |
parent | 93412cb4e75d6999d614ea6a47ec82e12f534cc7 (diff) |
Fix T83539: 'activate_init' fails with buttons that have popups
Activating buttons was running too early, before the popup was
positioned on the screen,
causing data-selectors to be positioned incorrectly.
As the early button activation isn't needed, remove this call.
Ensure this doesn't happen again with an assert.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/editors/interface/interface.c | 5 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_operators.c | 2 |
2 files changed, 5 insertions, 2 deletions
diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c index e53dfa83867..5928a622298 100644 --- a/source/blender/editors/interface/interface.c +++ b/source/blender/editors/interface/interface.c @@ -988,6 +988,11 @@ bool UI_but_active_only(const bContext *C, ARegion *region, uiBlock *block, uiBu */ bool UI_block_active_only_flagged_buttons(const bContext *C, ARegion *region, uiBlock *block) { + + /* Running this command before end-block has run, means buttons that open menus + * wont have those menus correctly positioned, see T83539. */ + BLI_assert(block->endblock != 0); + bool done = false; LISTBASE_FOREACH (uiBut *, but, &block->buttons) { if (but->flag & UI_BUT_ACTIVATE_ON_INIT) { diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 5a64b42a653..e82f6cc9d76 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -1403,8 +1403,6 @@ static uiBlock *wm_block_dialog_create(bContext *C, ARegion *region, void *userD UI_block_bounds_set_popup( block, 6 * U.dpi_fac, (const int[2]){data->width / -2, data->height / 2}); - UI_block_active_only_flagged_buttons(C, region, block); - return block; } |