From 0b626703f99fb7146915f4be9e7013bae0c64c61 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 22 Feb 2020 10:41:19 +1100 Subject: 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. --- .../blender/editors/interface/interface_region_popup.c | 4 +--- source/blender/editors/screen/area.c | 18 ++++++++++++------ source/blender/editors/screen/screen_edit.c | 5 ----- 3 files changed, 13 insertions(+), 14 deletions(-) (limited to 'source/blender') diff --git a/source/blender/editors/interface/interface_region_popup.c b/source/blender/editors/interface/interface_region_popup.c index 867ac652505..dee462e929a 100644 --- a/source/blender/editors/interface/interface_region_popup.c +++ b/source/blender/editors/interface/interface_region_popup.c @@ -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) { diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c index c9e6cd24ac0..26240482e6d 100644 --- a/source/blender/editors/screen/area.c +++ b/source/blender/editors/screen/area.c @@ -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 */ diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c index 8e0e8116da2..23a6704a617 100644 --- a/source/blender/editors/screen/screen_edit.c +++ b/source/blender/editors/screen/screen_edit.c @@ -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); } } -- cgit v1.2.3