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.
This commit is contained in:
parent
93412cb4e7
commit
10e093b30d
Notes:
blender-bot
2023-02-14 06:00:50 +01:00
Referenced by issue #83539, PointerProperty doesn't activate correctly with 'activate_init' Referenced by issue #83540, 'activate_init' freezes Blender window when called from operator props_popup
|
@ -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) {
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue