[Bf-blender-cvs] [f5dc979a7eb] master: Cleanup: Add/use utility to remove regions

Julian Eisel noreply at git.blender.org
Fri Sep 20 12:28:45 CEST 2019


Commit: f5dc979a7eb0833b7abcf9db9ab9a01905786091
Author: Julian Eisel
Date:   Fri Sep 20 12:26:06 2019 +0200
Branches: master
https://developer.blender.org/rBf5dc979a7eb0833b7abcf9db9ab9a01905786091

Cleanup: Add/use utility to remove regions

===================================================================

M	source/blender/editors/include/ED_screen.h
M	source/blender/editors/screen/screen_edit.c
M	source/blender/editors/screen/screen_ops.c
M	source/blender/editors/space_file/space_file.c

===================================================================

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);



More information about the Bf-blender-cvs mailing list