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:
authorJulian Eisel <julian@blender.org>2020-06-19 20:55:17 +0300
committerJeroen Bakker <jeroen@blender.org>2020-07-02 10:11:20 +0300
commitef0ded4df38942f4c83001927c58a0a306cf3f34 (patch)
treebdf06106af96fc8bf21265efb852eabfeee9289e
parent910b4210454bd51aa86cbf63ed2dcd90c6e2b298 (diff)
Fix: Crash when closing window while Outliner shows screens
Steps to reproduce were: * From factory settings, change Outliner Display Mode to "Blender File" * Open "Screens" item, make sure all listed screens are visible * Open Preference window, close it * Mouse hover the outliner -> crash Fix is to force an Outliner tree rebuild when closing screens.
-rw-r--r--source/blender/editors/space_outliner/space_outliner.c2
-rw-r--r--source/blender/windowmanager/intern/wm_window.c1
2 files changed, 2 insertions, 1 deletions
diff --git a/source/blender/editors/space_outliner/space_outliner.c b/source/blender/editors/space_outliner/space_outliner.c
index 9450136b6a6..deba4687231 100644
--- a/source/blender/editors/space_outliner/space_outliner.c
+++ b/source/blender/editors/space_outliner/space_outliner.c
@@ -215,7 +215,7 @@ static void outliner_main_region_listener(wmWindow *UNUSED(win),
}
break;
case NC_SCREEN:
- if (ELEM(wmn->data, ND_LAYER)) {
+ if (ELEM(wmn->data, ND_LAYOUTDELETE, ND_LAYER)) {
ED_region_tag_redraw(region);
}
break;
diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c
index 8fb7e47cd45..1baf5ae7caf 100644
--- a/source/blender/windowmanager/intern/wm_window.c
+++ b/source/blender/windowmanager/intern/wm_window.c
@@ -471,6 +471,7 @@ void wm_window_close(bContext *C, wmWindowManager *wm, wmWindow *win)
BLI_assert(BKE_workspace_layout_screen_get(layout) == screen);
BKE_workspace_layout_remove(bmain, workspace, layout);
+ WM_event_add_notifier(C, NC_SCREEN | ND_LAYOUTDELETE, NULL);
}
}