From 02fb605f8a6199240f8b2ca8ddb8d8c3bebb8a80 Mon Sep 17 00:00:00 2001 From: Julian Eisel Date: Mon, 30 Oct 2023 12:40:00 +0100 Subject: [PATCH] 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. --- source/blender/editors/screen/area.cc | 3 ++- source/blender/editors/screen/screen_edit.cc | 4 +++- source/blender/editors/space_view3d/space_view3d.cc | 2 +- source/blender/windowmanager/intern/wm_draw.cc | 5 +---- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/source/blender/editors/screen/area.cc b/source/blender/editors/screen/area.cc index bb38c300da0..164d4d87ba5 100644 --- a/source/blender/editors/screen/area.cc +++ b/source/blender/editors/screen/area.cc @@ -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_draw_region_free(region, true); + WM_draw_region_free(region); + region->visible = false; MEM_SAFE_FREE(region->headerstr); diff --git a/source/blender/editors/screen/screen_edit.cc b/source/blender/editors/screen/screen_edit.cc index 7afd54aa614..fab0ca57336 100644 --- a/source/blender/editors/screen/screen_edit.cc +++ b/source/blender/editors/screen/screen_edit.cc @@ -805,7 +805,9 @@ void ED_region_exit(bContext *C, ARegion *region) WM_event_remove_handlers(C, ®ion->handlers); 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); diff --git a/source/blender/editors/space_view3d/space_view3d.cc b/source/blender/editors/space_view3d/space_view3d.cc index de2c1855687..1bdb32fa8c6 100644 --- a/source/blender/editors/space_view3d/space_view3d.cc +++ b/source/blender/editors/space_view3d/space_view3d.cc @@ -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) */ - WM_draw_region_free(region, false); + WM_draw_region_free(region); } void ED_view3d_shade_update(Main *bmain, View3D *v3d, ScrArea *area) diff --git a/source/blender/windowmanager/intern/wm_draw.cc b/source/blender/windowmanager/intern/wm_draw.cc index 11ae1ec07ed..f30ee18b3a0 100644 --- a/source/blender/windowmanager/intern/wm_draw.cc +++ b/source/blender/windowmanager/intern/wm_draw.cc @@ -1591,12 +1591,9 @@ void wm_draw_region_clear(wmWindow *win, ARegion * /*region*/) 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); - if (hide) { - region->visible = 0; - } } void wm_draw_region_test(bContext *C, ScrArea *area, ARegion *region)