diff options
-rw-r--r-- | source/blender/editors/screen/screen_edit.c | 6 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_window.c | 2 |
2 files changed, 7 insertions, 1 deletions
diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c index b0d1557a66f..1f6ce4fed73 100644 --- a/source/blender/editors/screen/screen_edit.c +++ b/source/blender/editors/screen/screen_edit.c @@ -1124,6 +1124,12 @@ void ED_screen_exit(bContext *C, wmWindow *window, bScreen *screen) /* mark it available for use for other windows */ screen->winid= 0; + /* if temp screen, delete it */ + if(screen->full == SCREENTEMP) { + Main *bmain= CTX_data_main(C); + free_libblock(&bmain->screen, screen); + } + CTX_wm_window_set(C, prevwin); } diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c index 75325a1d9f9..d9b6117cbb3 100644 --- a/source/blender/windowmanager/intern/wm_window.c +++ b/source/blender/windowmanager/intern/wm_window.c @@ -233,7 +233,7 @@ void wm_window_close(bContext *C, wmWindowManager *wm, wmWindow *win) CTX_wm_window_set(C, win); /* needed by handlers */ WM_event_remove_handlers(C, &win->handlers); WM_event_remove_handlers(C, &win->modalhandlers); - ED_screen_exit(C, win, win->screen); + ED_screen_exit(C, win, win->screen); /* will free the current screen if it is a temp layout */ wm_window_free(C, wm, win); /* check remaining windows */ |