diff options
author | Campbell Barton <ideasman42@gmail.com> | 2018-10-25 08:06:47 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2018-10-25 08:06:47 +0300 |
commit | 6d49b623e2efce59b58bb1295024ab8ac492370a (patch) | |
tree | ebe29d04b2e9730dfb4f7cd733e63e2676794dfc /source/blender/windowmanager/intern/wm_draw.c | |
parent | 46587b3ccb0ec842500ce2c3f2359b78550aad0f (diff) |
WM: space, region type filtering for paint cursor
Avoids calling poll on mouse-move for unrelated space/region types.
Diffstat (limited to 'source/blender/windowmanager/intern/wm_draw.c')
-rw-r--r-- | source/blender/windowmanager/intern/wm_draw.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/source/blender/windowmanager/intern/wm_draw.c b/source/blender/windowmanager/intern/wm_draw.c index b76fc0abfa7..c8e0360ed88 100644 --- a/source/blender/windowmanager/intern/wm_draw.c +++ b/source/blender/windowmanager/intern/wm_draw.c @@ -85,7 +85,7 @@ /* ******************* paint cursor *************** */ -static void wm_paintcursor_draw(bContext *C, ARegion *ar) +static void wm_paintcursor_draw(bContext *C, ScrArea *sa, ARegion *ar) { wmWindowManager *wm = CTX_wm_manager(C); wmWindow *win = CTX_wm_window(C); @@ -94,6 +94,15 @@ static void wm_paintcursor_draw(bContext *C, ARegion *ar) if (ar->visible && ar == screen->active_region) { for (pc = wm->paintcursors.first; pc; pc = pc->next) { + + if ((pc->space_type != SPACE_TYPE_ANY) && (sa->spacetype != pc->space_type)) { + continue; + } + + if ((pc->region_type != RGN_TYPE_ANY) && (ar->regiontype != pc->region_type)) { + continue; + } + if (pc->poll == NULL || pc->poll(C)) { /* Prevent drawing outside region. */ glEnable(GL_SCISSOR_TEST); @@ -612,7 +621,7 @@ static void wm_draw_window_onscreen(bContext *C, wmWindow *win, int view) CTX_wm_region_set(C, ar); /* make region ready for draw, scissor, pixelspace */ - wm_paintcursor_draw(C, ar); + wm_paintcursor_draw(C, sa, ar); CTX_wm_region_set(C, NULL); CTX_wm_area_set(C, NULL); |