From 06b183d1ca48ea638b8c54102c0c9adf55cef76f Mon Sep 17 00:00:00 2001 From: Julian Eisel Date: Mon, 1 Nov 2021 16:30:40 +0100 Subject: [PATCH] Fix T91507: Crash when calling context menu from confirmation popup A typical issue with popup handling: We have to respect the menu-region and give it priority over the regular region for handling. In this case there isn't a regular region in context even. --- source/blender/editors/interface/interface_context_menu.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/interface/interface_context_menu.c b/source/blender/editors/interface/interface_context_menu.c index 516fd4fc7fc..72e7203c6ea 100644 --- a/source/blender/editors/interface/interface_context_menu.c +++ b/source/blender/editors/interface/interface_context_menu.c @@ -926,7 +926,7 @@ bool ui_popup_context_menu_for_button(bContext *C, uiBut *but, const wmEvent *ev } { - const ARegion *region = CTX_wm_region(C); + const ARegion *region = CTX_wm_menu(C) ? CTX_wm_menu(C) : CTX_wm_region(C); uiButTreeRow *treerow_but = (uiButTreeRow *)ui_tree_row_find_mouse_over(region, event->xy); if (treerow_but) { BLI_assert(treerow_but->but.type == UI_BTYPE_TREEROW); @@ -1212,7 +1212,7 @@ bool ui_popup_context_menu_for_button(bContext *C, uiBut *but, const wmEvent *ev } /* UI List item context menu. Scripts can add items to it, by default there's nothing shown. */ - ARegion *region = CTX_wm_region(C); + const ARegion *region = CTX_wm_menu(C) ? CTX_wm_menu(C) : CTX_wm_region(C); const bool is_inside_listbox = ui_list_find_mouse_over(region, event) != NULL; const bool is_inside_listrow = is_inside_listbox ? ui_list_row_find_mouse_over(region, event->xy) != NULL :