From 44862110dec81a45fb9185ef45007e6e5c18cb89 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 25 Feb 2020 09:19:31 +1100 Subject: WM: move cursor refresh tag to the window Avoids having to check the current area is NULL. --- source/blender/editors/interface/interface_region_popup.c | 4 ++-- source/blender/editors/screen/screen_edit.c | 4 ++-- source/blender/makesdna/DNA_screen_types.h | 2 +- source/blender/makesdna/DNA_windowmanager_types.h | 3 ++- source/blender/windowmanager/intern/wm_toolsystem.c | 5 ++--- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/source/blender/editors/interface/interface_region_popup.c b/source/blender/editors/interface/interface_region_popup.c index b72cc7296db..b509f5e352b 100644 --- a/source/blender/editors/interface/interface_region_popup.c +++ b/source/blender/editors/interface/interface_region_popup.c @@ -554,8 +554,8 @@ static void ui_popup_block_remove(bContext *C, uiPopupBlockHandle *handle) CTX_wm_region_set(C, ctx_ar); /* reset to region cursor (only if there's not another menu open) */ - if ((ctx_sa != NULL) && (BLI_listbase_is_empty(&sc->regionbase))) { - ctx_sa->flag |= AREA_FLAG_CURSOR_UPDATE; + if (BLI_listbase_is_empty(&sc->regionbase)) { + win->tag_cursor_refresh = true; } if (handle->scrolltimer) { diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c index 23a6704a617..1fd3f258e6c 100644 --- a/source/blender/editors/screen/screen_edit.c +++ b/source/blender/editors/screen/screen_edit.c @@ -401,8 +401,8 @@ int screen_area_join(bContext *C, bScreen *scr, ScrArea *sa1, ScrArea *sa2) static void region_cursor_set_ex(wmWindow *win, ScrArea *sa, ARegion *ar, bool swin_changed) { 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 (win->tag_cursor_refresh || swin_changed || (ar->type && ar->type->event_cursor)) { + win->tag_cursor_refresh = false; ED_region_cursor_set(win, sa, ar); } } diff --git a/source/blender/makesdna/DNA_screen_types.h b/source/blender/makesdna/DNA_screen_types.h index c0e62f01e66..8fec5354d36 100644 --- a/source/blender/makesdna/DNA_screen_types.h +++ b/source/blender/makesdna/DNA_screen_types.h @@ -474,7 +474,7 @@ enum { /** Update size of regions within the area. */ AREA_FLAG_REGION_SIZE_UPDATE = (1 << 3), AREA_FLAG_ACTIVE_TOOL_UPDATE = (1 << 4), - AREA_FLAG_CURSOR_UPDATE = (1 << 5), + // AREA_FLAG_UNUSED_5 = (1 << 5), AREA_FLAG_UNUSED_6 = (1 << 6), /* cleared */ diff --git a/source/blender/makesdna/DNA_windowmanager_types.h b/source/blender/makesdna/DNA_windowmanager_types.h index b1a797a35fe..8393ca6485f 100644 --- a/source/blender/makesdna/DNA_windowmanager_types.h +++ b/source/blender/makesdna/DNA_windowmanager_types.h @@ -254,7 +254,8 @@ typedef struct wmWindow { short grabcursor; /** Internal: tag this for extra mousemove event, * makes cursors/buttons active on UI switching. */ - short addmousemove; + char addmousemove; + char tag_cursor_refresh; /** Winid also in screens, is for retrieving this window after read. */ int winid; diff --git a/source/blender/windowmanager/intern/wm_toolsystem.c b/source/blender/windowmanager/intern/wm_toolsystem.c index 9184a2b4566..e335800636c 100644 --- a/source/blender/windowmanager/intern/wm_toolsystem.c +++ b/source/blender/windowmanager/intern/wm_toolsystem.c @@ -377,10 +377,9 @@ void WM_toolsystem_ref_set_from_runtime(struct bContext *C, /* Set the cursor if possible, if not - it's fine as entering the region will refresh it. */ { wmWindow *win = CTX_wm_window(C); - ScrArea *sa = CTX_wm_area(C); - if (win && sa) { + if (win != NULL) { win->addmousemove = true; - sa->flag |= AREA_FLAG_CURSOR_UPDATE; + win->tag_cursor_refresh = true; } } -- cgit v1.2.3