From 57f1379104e7e36dd60fc270253e4a4555f0e699 Mon Sep 17 00:00:00 2001 From: Philipp Oeser Date: Tue, 19 Oct 2021 10:18:54 +0200 Subject: 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 --- .../blender/editors/space_outliner/outliner_draw.c | 24 +++++++++++++--------- 1 file changed, 14 insertions(+), 10 deletions(-) (limited to 'source/blender/editors/space_outliner/outliner_draw.c') diff --git a/source/blender/editors/space_outliner/outliner_draw.c b/source/blender/editors/space_outliner/outliner_draw.c index 7cdfb553da5..956c455c545 100644 --- a/source/blender/editors/space_outliner/outliner_draw.c +++ b/source/blender/editors/space_outliner/outliner_draw.c @@ -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; -- cgit v1.2.3