[Bf-blender-cvs] [57f1379104e] master: Fix T92265: Outliner crash clicking override warning buttons
Philipp Oeser
noreply at git.blender.org
Tue Oct 19 16:45:50 CEST 2021
Commit: 57f1379104e7e36dd60fc270253e4a4555f0e699
Author: Philipp Oeser
Date: Tue Oct 19 10:18:54 2021 +0200
Branches: master
https://developer.blender.org/rB57f1379104e7e36dd60fc270253e4a4555f0e699
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
===================================================================
M 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;
More information about the Bf-blender-cvs
mailing list