Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorJulian Eisel <eiseljulian@gmail.com>2019-09-20 13:26:06 +0300
committerJulian Eisel <eiseljulian@gmail.com>2019-09-20 13:28:15 +0300
commitf5dc979a7eb0833b7abcf9db9ab9a01905786091 (patch)
tree743ebabb3823f1a61bbf5b51cbf54871d3ff4ccb /source
parent09b728ff3e3702ab7718f8604a8712ce34783803 (diff)
Cleanup: Add/use utility to remove regions
Diffstat (limited to 'source')
-rw-r--r--source/blender/editors/include/ED_screen.h1
-rw-r--r--source/blender/editors/screen/screen_edit.c11
-rw-r--r--source/blender/editors/screen/screen_ops.c5
-rw-r--r--source/blender/editors/space_file/space_file.c6
4 files changed, 14 insertions, 9 deletions
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);