From f5dc979a7eb0833b7abcf9db9ab9a01905786091 Mon Sep 17 00:00:00 2001 From: Julian Eisel Date: Fri, 20 Sep 2019 12:26:06 +0200 Subject: Cleanup: Add/use utility to remove regions --- source/blender/editors/include/ED_screen.h | 1 + source/blender/editors/screen/screen_edit.c | 11 +++++++++++ source/blender/editors/screen/screen_ops.c | 5 +---- source/blender/editors/space_file/space_file.c | 6 +----- 4 files changed, 14 insertions(+), 9 deletions(-) (limited to 'source') diff --git a/source/blender/editors/include/ED_screen.h b/source/blender/editors/include/ED_screen.h index dbd5e74da5c..7c3aac6c688 100644 --- a/source/blender/editors/include/ED_screen.h +++ b/source/blender/editors/include/ED_screen.h @@ -66,6 +66,7 @@ void ED_region_do_listen(struct wmWindow *win, void ED_region_do_layout(struct bContext *C, struct ARegion *ar); void ED_region_do_draw(struct bContext *C, struct ARegion *ar); void ED_region_exit(struct bContext *C, struct ARegion *ar); +void ED_region_remove(struct bContext *C, struct ScrArea *sa, struct ARegion *ar); void ED_region_pixelspace(struct ARegion *ar); void ED_region_update_rect(struct ARegion *ar); void ED_region_init(struct ARegion *ar); diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c index 815940864ac..319a4f44084 100644 --- a/source/blender/editors/screen/screen_edit.c +++ b/source/blender/editors/screen/screen_edit.c @@ -519,6 +519,17 @@ void ED_screen_ensure_updated(wmWindowManager *wm, wmWindow *win, bScreen *scree } } +/** + * Utility to exit and free an area-region. Screen level regions (menus/popups) need to be treated + * slightly differently, see #ui_region_temp_remove(). + */ +void ED_region_remove(bContext *C, ScrArea *sa, ARegion *ar) +{ + ED_region_exit(C, ar); + BKE_area_region_free(sa->type, ar); + BLI_freelinkN(&sa->regionbase, ar); +} + /* *********** exit calls are for closing running stuff ******** */ void ED_region_exit(bContext *C, ARegion *ar) diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index 53b30373ec3..d798ec4a127 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -3848,10 +3848,7 @@ static int region_quadview_exec(bContext *C, wmOperator *op) for (ar = sa->regionbase.first; ar; ar = arn) { arn = ar->next; if (ar->alignment == RGN_ALIGN_QSPLIT) { - ED_region_exit(C, ar); - BKE_area_region_free(sa->type, ar); - BLI_remlink(&sa->regionbase, ar); - MEM_freeN(ar); + ED_region_remove(C, sa, ar); } } ED_area_tag_redraw(sa); diff --git a/source/blender/editors/space_file/space_file.c b/source/blender/editors/space_file/space_file.c index 34429570671..a70b307e657 100644 --- a/source/blender/editors/space_file/space_file.c +++ b/source/blender/editors/space_file/space_file.c @@ -307,11 +307,7 @@ static void file_refresh(const bContext *C, ScrArea *sa) } /* If there's _no_ file-operation, ensure we _don't_ have the option region */ else if (sa && (sfile->op == NULL) && (region_tool_props != NULL)) { - /* Remove TOOL_PROPS region. */ - ED_region_exit((bContext *)C, region_tool_props); - BKE_area_region_free(sa->type, region_tool_props); - BLI_remlink(&sa->regionbase, region_tool_props); - MEM_freeN(region_tool_props); + ED_region_remove(C, sa, region_tool_props); } ED_area_tag_redraw(sa); -- cgit v1.2.3