UI: remove checks for other popovers when switching menu

I'm unable to redo the original report,
Revert fix for T43247..
This commit is contained in:
Campbell Barton 2019-07-31 18:51:32 +10:00
parent 94b81d51a6
commit 7761657129
Notes: blender-bot 2023-02-14 06:17:14 +01:00
Referenced by commit f7c13f2d76, Revert "UI: remove checks for other popovers when switching menu"
3 changed files with 0 additions and 32 deletions

View File

@ -10112,7 +10112,6 @@ static int ui_handler_region_menu(bContext *C, const wmEvent *event, void *UNUSE
but = ui_region_find_active_but(ar);
if (but) {
bScreen *screen = CTX_wm_screen(C);
uiBut *but_other;
uiHandleButtonData *data;
@ -10123,8 +10122,6 @@ static int ui_handler_region_menu(bContext *C, const wmEvent *event, void *UNUSE
/* Make sure this popup isn't dragging a button.
* can happen with popovers (see T67882). */
(ui_region_find_active_but(data->menu->region) == NULL) &&
/* make sure mouse isn't inside another menu (see T43247) */
(ui_screen_region_find_mouse_over(screen, event) == NULL) &&
(ELEM(but->type, UI_BTYPE_PULLDOWN, UI_BTYPE_POPOVER, UI_BTYPE_MENU)) &&
(but_other = ui_but_find_mouse_over(ar, event)) && (but != but_other) &&
(ELEM(but_other->type, UI_BTYPE_PULLDOWN, UI_BTYPE_POPOVER, UI_BTYPE_MENU))) {

View File

@ -938,9 +938,6 @@ uiBut *ui_region_find_active_but(struct ARegion *ar) ATTR_WARN_UNUSED_RESULT;
bool ui_region_contains_point_px(const struct ARegion *ar, int x, int y) ATTR_WARN_UNUSED_RESULT;
bool ui_region_contains_rect_px(const struct ARegion *ar, const rcti *rect_px);
ARegion *ui_screen_region_find_mouse_over_ex(bScreen *screen, int x, int y);
ARegion *ui_screen_region_find_mouse_over(bScreen *screen, const struct wmEvent *event);
/* interface_context_menu.c */
bool ui_popup_context_menu_for_button(struct bContext *C, uiBut *but);
void ui_popup_context_menu_for_panel(struct bContext *C, struct ARegion *ar, struct Panel *pa);

View File

@ -570,29 +570,3 @@ bool ui_region_contains_rect_px(const ARegion *ar, const rcti *rect_px)
}
/** \} */
/* -------------------------------------------------------------------- */
/** \name Screen (#bScreen) Spatial
* \{ */
/** Check if the cursor is over any popups. */
ARegion *ui_screen_region_find_mouse_over_ex(bScreen *screen, int x, int y)
{
for (ARegion *ar = screen->regionbase.first; ar; ar = ar->next) {
rcti winrct;
ui_region_winrct_get_no_margin(ar, &winrct);
if (BLI_rcti_isect_pt(&winrct, x, y)) {
return ar;
}
}
return NULL;
}
ARegion *ui_screen_region_find_mouse_over(bScreen *screen, const wmEvent *event)
{
return ui_screen_region_find_mouse_over_ex(screen, event->x, event->y);
}
/** \} */