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
diff options
context:
space:
mode:
-rw-r--r--source/blender/blenkernel/intern/screen.c12
-rw-r--r--source/blender/editors/interface/interface_handlers.c8
2 files changed, 14 insertions, 6 deletions
diff --git a/source/blender/blenkernel/intern/screen.c b/source/blender/blenkernel/intern/screen.c
index af5134cd6a0..2831f45195e 100644
--- a/source/blender/blenkernel/intern/screen.c
+++ b/source/blender/blenkernel/intern/screen.c
@@ -164,15 +164,19 @@ void BKE_screen_area_free(ScrArea *sa)
/* don't free screen itself */
void free_screen(bScreen *sc)
{
- ScrArea *sa;
- ARegion *ar;
+ ScrArea *sa, *san;
+ ARegion *ar, *arn;
- for(ar=sc->regionbase.first; ar; ar=ar->next)
+ for(ar=sc->regionbase.first; ar; ar=arn) {
+ arn= ar->next;
BKE_area_region_free(ar);
+ }
BLI_freelistN(&sc->regionbase);
- for(sa= sc->areabase.first; sa; sa= sa->next)
+ for(sa= sc->areabase.first; sa; sa= san) {
+ san= sa->next;
BKE_screen_area_free(sa);
+ }
BLI_freelistN(&sc->vertbase);
BLI_freelistN(&sc->edgebase);
diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c
index a81b80c5abe..30a88d7c045 100644
--- a/source/blender/editors/interface/interface_handlers.c
+++ b/source/blender/editors/interface/interface_handlers.c
@@ -3530,17 +3530,21 @@ static int ui_handler_region(bContext *C, wmEvent *event)
static void ui_handler_remove_region(bContext *C)
{
+ bScreen *sc;
ARegion *ar;
ar= C->region;
- if(ar==NULL) return;
+ if(ar == NULL) return;
uiFreeBlocks(C, &ar->uiblocks);
+
+ sc= C->screen;
+ if(sc == NULL) return;
/* delayed apply callbacks, but not for screen level regions, those
* we rather do at the very end after closing them all, which will
* be done in ui_handler_region/window */
- if(BLI_findindex(&C->screen->regionbase, ar) == -1)
+ if(BLI_findindex(&sc->regionbase, ar) == -1)
ui_apply_but_funcs_after(C);
}