Fix T92265: Outliner crash clicking override warning buttons
`outliner_draw_overrides_buts` uses `uiDefIconBlockBut` but doing so without defining a function callback to actually build a block. This will make the button go down the route of spawning a popup, but without a menu. Crash then happens later accesing the (missing) menu in `ui_handler_region_menu`. So while we could dive into making this usage failsafe (carefully checking `BUTTON_STATE_MENU_OPEN` in combination with `uiHandleButtonData->menu` being NULL all over), but it seems much more straightforward to just use `uiDefIconBut` (instead of `uiDefIconBlockBut`) since this Override Warning buttons seem not to intend spawning a menu anyways? Maniphest Tasks: T92265 Differential Revision: https://developer.blender.org/D12917
This commit is contained in:
parent
b3b7319de7
commit
57f1379104
Notes:
blender-bot
2023-02-14 08:25:14 +01:00
Referenced by issue #88449: Blender LTS: Maintenance Task 2.93 Referenced by issue #88449, Blender LTS: Maintenance Task 2.93 Referenced by issue #92265, Clicking in Library Overrides Outliner triggers crash in this file
|
@ -1841,16 +1841,20 @@ static bool outliner_draw_overrides_buts(uiBlock *block,
|
|||
if (tip == NULL) {
|
||||
tip = TIP_("Some sub-items require attention");
|
||||
}
|
||||
uiBut *bt = uiDefIconBlockBut(block,
|
||||
NULL,
|
||||
NULL,
|
||||
1,
|
||||
ICON_ERROR,
|
||||
(int)(region->v2d.cur.xmax - OL_TOG_USER_BUTS_STATUS),
|
||||
te->ys,
|
||||
UI_UNIT_X,
|
||||
UI_UNIT_Y,
|
||||
tip);
|
||||
uiBut *bt = uiDefIconBut(block,
|
||||
UI_BTYPE_BUT,
|
||||
1,
|
||||
ICON_ERROR,
|
||||
(int)(region->v2d.cur.xmax - OL_TOG_USER_BUTS_STATUS),
|
||||
te->ys,
|
||||
UI_UNIT_X,
|
||||
UI_UNIT_Y,
|
||||
NULL,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
tip);
|
||||
UI_but_flag_enable(bt, but_flag);
|
||||
}
|
||||
any_item_has_warnings = any_item_has_warnings || item_has_warnings || any_child_has_warnings;
|
||||
|
|
Loading…
Reference in New Issue