diff options
author | Germano Cavalcante <germano.costa@ig.com.br> | 2021-11-09 16:54:50 +0300 |
---|---|---|
committer | Germano Cavalcante <germano.costa@ig.com.br> | 2021-11-09 17:26:41 +0300 |
commit | 07a4338b3a3d05cc5202f0d550886a6a8f299429 (patch) | |
tree | 42fffe1d7d37bd893accdd0b64dd3f7ef07cb27a | |
parent | 41607ced2bafa41269b5c06b3a4b2fc574d5ac83 (diff) |
View3D Snap Cursor: make the pool a little more restrictive
The snap cursor tagged overlapping regions to redrawn even though the
cursor itself is not drawn.
-rw-r--r-- | source/blender/editors/space_view3d/view3d_cursor_snap.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/source/blender/editors/space_view3d/view3d_cursor_snap.c b/source/blender/editors/space_view3d/view3d_cursor_snap.c index fbdab71ec1d..a4d7c60d906 100644 --- a/source/blender/editors/space_view3d/view3d_cursor_snap.c +++ b/source/blender/editors/space_view3d/view3d_cursor_snap.c @@ -770,7 +770,22 @@ static bool v3d_cursor_snap_pool_fn(bContext *C) return false; } - ARegion *region = BKE_area_find_region_type(area, RGN_TYPE_WINDOW); + ARegion *region = CTX_wm_region(C); + if (region->regiontype != RGN_TYPE_WINDOW) { + if (!region->overlap) { + return false; + } + /* Sometimes the cursor may be on an invisible part of an overlapping region. */ + const wmWindowManager *wm = CTX_wm_manager(C); + const wmEvent *event = wm->winactive->eventstate; + if (ED_region_overlap_isect_xy(region, event->xy)) { + return false; + } + /* Find the visible region under the cursor. + * TODO(Germano): Shouldn't this be the region in context? */ + region = BKE_area_find_region_type(area, RGN_TYPE_WINDOW); + } + RegionView3D *rv3d = region->regiondata; if (rv3d->rflag & RV3D_NAVIGATING) { /* Don't draw the cursor while navigating. It can be distracting. */ |