Cleanup: Don't unset region visibility in unrelated WM function
`WM_draw_region_free()` should manage region-draw data, and not change region state. This should be done by normal region state management functions. Especially for a flag like `ARegion::visible` which is just the cached result of the region's visibility evaluation, not the proper way to actualy manage the region visibility.
This commit is contained in:
parent
28a28b9a2c
commit
02fb605f8a
|
@ -2182,7 +2182,8 @@ static void area_offscreen_exit(wmWindowManager *wm, wmWindow *win, ScrArea *are
|
||||||
}
|
}
|
||||||
|
|
||||||
WM_event_modal_handler_region_replace(win, region, nullptr);
|
WM_event_modal_handler_region_replace(win, region, nullptr);
|
||||||
WM_draw_region_free(region, true);
|
WM_draw_region_free(region);
|
||||||
|
region->visible = false;
|
||||||
|
|
||||||
MEM_SAFE_FREE(region->headerstr);
|
MEM_SAFE_FREE(region->headerstr);
|
||||||
|
|
||||||
|
|
|
@ -805,7 +805,9 @@ void ED_region_exit(bContext *C, ARegion *region)
|
||||||
|
|
||||||
WM_event_remove_handlers(C, ®ion->handlers);
|
WM_event_remove_handlers(C, ®ion->handlers);
|
||||||
WM_event_modal_handler_region_replace(win, region, nullptr);
|
WM_event_modal_handler_region_replace(win, region, nullptr);
|
||||||
WM_draw_region_free(region, true);
|
WM_draw_region_free(region);
|
||||||
|
/* The region is not in a state that it can be visible in anymore. Reinitializing is needed. */
|
||||||
|
region->visible = false;
|
||||||
|
|
||||||
MEM_SAFE_FREE(region->headerstr);
|
MEM_SAFE_FREE(region->headerstr);
|
||||||
|
|
||||||
|
|
|
@ -186,7 +186,7 @@ void ED_view3d_stop_render_preview(wmWindowManager *wm, ARegion *region)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* A bit overkill but this make sure the viewport is reset completely. (fclem) */
|
/* A bit overkill but this make sure the viewport is reset completely. (fclem) */
|
||||||
WM_draw_region_free(region, false);
|
WM_draw_region_free(region);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ED_view3d_shade_update(Main *bmain, View3D *v3d, ScrArea *area)
|
void ED_view3d_shade_update(Main *bmain, View3D *v3d, ScrArea *area)
|
||||||
|
|
|
@ -1591,12 +1591,9 @@ void wm_draw_region_clear(wmWindow *win, ARegion * /*region*/)
|
||||||
screen->do_draw = true;
|
screen->do_draw = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void WM_draw_region_free(ARegion *region, bool hide)
|
void WM_draw_region_free(ARegion *region)
|
||||||
{
|
{
|
||||||
wm_draw_region_buffer_free(region);
|
wm_draw_region_buffer_free(region);
|
||||||
if (hide) {
|
|
||||||
region->visible = 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void wm_draw_region_test(bContext *C, ScrArea *area, ARegion *region)
|
void wm_draw_region_test(bContext *C, ScrArea *area, ARegion *region)
|
||||||
|
|
Loading…
Reference in New Issue