Cleanup: internal changes to cursor resetting

- Move gizmo cursor check into ED_region_cursor_set so the result of
  calling this function is the same as flagging for cursor update.

- Use tagging in ui_popup_block_remove which avoids adding a
  mouse-move event in case the cursor needs to be changed again.
This commit is contained in:
Campbell Barton 2020-02-22 10:41:19 +11:00
parent 3e77765362
commit 0b626703f9
Notes: blender-bot 2023-02-14 06:37:09 +01:00
Referenced by commit fb47c131df, Fix crash when open default template
Referenced by issue #74102,  2.83.4 Immediate crash upon using splash screen to open Recent/ New files.
3 changed files with 13 additions and 14 deletions

View File

@ -555,9 +555,7 @@ static void ui_popup_block_remove(bContext *C, uiPopupBlockHandle *handle)
/* reset to region cursor (only if there's not another menu open) */
if (BLI_listbase_is_empty(&sc->regionbase)) {
ED_region_cursor_set(win, ctx_sa, ctx_ar);
/* in case cursor needs to be changed again */
WM_event_add_mousemove(C);
ctx_sa->flag |= AREA_FLAG_CURSOR_UPDATE;
}
if (handle->scrolltimer) {

View File

@ -1869,15 +1869,21 @@ void ED_region_floating_initialize(ARegion *ar)
void ED_region_cursor_set(wmWindow *win, ScrArea *sa, ARegion *ar)
{
if (ar && sa && ar->type && ar->type->cursor) {
ar->type->cursor(win, sa, ar);
}
else {
if (WM_cursor_set_from_tool(win, sa, ar)) {
if (ar != NULL) {
if ((ar->gizmo_map != NULL) && WM_gizmomap_cursor_set(ar->gizmo_map, win)) {
return;
}
if (sa && ar->type && ar->type->cursor) {
ar->type->cursor(win, sa, ar);
return;
}
WM_cursor_set(win, WM_CURSOR_DEFAULT);
}
if (WM_cursor_set_from_tool(win, sa, ar)) {
return;
}
WM_cursor_set(win, WM_CURSOR_DEFAULT);
}
/* for use after changing visibility of regions */

View File

@ -403,11 +403,6 @@ static void region_cursor_set_ex(wmWindow *win, ScrArea *sa, ARegion *ar, bool s
BLI_assert(WM_window_get_active_screen(win)->active_region == ar);
if (sa->flag & AREA_FLAG_CURSOR_UPDATE || swin_changed || (ar->type && ar->type->event_cursor)) {
sa->flag &= ~AREA_FLAG_CURSOR_UPDATE;
if (ar->gizmo_map != NULL) {
if (WM_gizmomap_cursor_set(ar->gizmo_map, win)) {
return;
}
}
ED_region_cursor_set(win, sa, ar);
}
}