[Bf-blender-cvs] [44862110dec] master: WM: move cursor refresh tag to the window

Campbell Barton noreply at git.blender.org
Mon Feb 24 23:28:21 CET 2020


Commit: 44862110dec81a45fb9185ef45007e6e5c18cb89
Author: Campbell Barton
Date:   Tue Feb 25 09:19:31 2020 +1100
Branches: master
https://developer.blender.org/rB44862110dec81a45fb9185ef45007e6e5c18cb89

WM: move cursor refresh tag to the window

Avoids having to check the current area is NULL.

===================================================================

M	source/blender/editors/interface/interface_region_popup.c
M	source/blender/editors/screen/screen_edit.c
M	source/blender/makesdna/DNA_screen_types.h
M	source/blender/makesdna/DNA_windowmanager_types.h
M	source/blender/windowmanager/intern/wm_toolsystem.c

===================================================================

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;
     }
   }



More information about the Bf-blender-cvs mailing list