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:
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.
|
@ -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) {
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue