From 22397ad819a207f044e9144aab9529b667cdc160 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 24 Sep 2024 17:41:53 +1000 Subject: [PATCH] Fix #128012: disabling "Load UI" makes nodes unselectable Resolve regression in [0] which caused the tool not to refresh when loading a file without it's UI. [0]: 83fe5712ab6170d0177616f29708120f6cdff037 --- source/blender/blenkernel/BKE_screen.hh | 6 ++++++ source/blender/blenkernel/intern/blendfile.cc | 6 ++++++ source/blender/blenkernel/intern/screen.cc | 8 ++++++++ 3 files changed, 20 insertions(+) diff --git a/source/blender/blenkernel/BKE_screen.hh b/source/blender/blenkernel/BKE_screen.hh index 9a44ade3684..5ef883db81d 100644 --- a/source/blender/blenkernel/BKE_screen.hh +++ b/source/blender/blenkernel/BKE_screen.hh @@ -692,6 +692,12 @@ ScrArea *BKE_screen_find_area_xy(const bScreen *screen, int spacetype, const int void BKE_screen_gizmo_tag_refresh(bScreen *screen); +/** + * Refresh any screen data that should be set on file-load + * with "Load UI" disabled. + */ +void BKE_screen_runtime_refresh_for_blendfile(bScreen *screen); + void BKE_screen_view3d_sync(View3D *v3d, Scene *scene); void BKE_screen_view3d_scene_sync(bScreen *screen, Scene *scene); bool BKE_screen_is_fullscreen_area(const bScreen *screen) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(); diff --git a/source/blender/blenkernel/intern/blendfile.cc b/source/blender/blenkernel/intern/blendfile.cc index 75dc41fc3c1..ebbe2aada69 100644 --- a/source/blender/blenkernel/intern/blendfile.cc +++ b/source/blender/blenkernel/intern/blendfile.cc @@ -956,6 +956,12 @@ static void setup_app_data(bContext *C, } } } + + if (mode != LOAD_UI) { + LISTBASE_FOREACH (bScreen *, screen, &bfd->main->screens) { + BKE_screen_runtime_refresh_for_blendfile(screen); + } + } } /* Logic for 'track_undo_scene' is to keep using the scene which the active screen has, as long diff --git a/source/blender/blenkernel/intern/screen.cc b/source/blender/blenkernel/intern/screen.cc index 13c7cf03e19..c25c06bc049 100644 --- a/source/blender/blenkernel/intern/screen.cc +++ b/source/blender/blenkernel/intern/screen.cc @@ -481,6 +481,14 @@ void BKE_screen_gizmo_tag_refresh(bScreen *screen) } } +void BKE_screen_runtime_refresh_for_blendfile(bScreen *screen) +{ + LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { + area->runtime.tool = nullptr; + area->runtime.is_tool_set = false; + } +} + /** * Avoid bad-level calls to #WM_gizmomap_delete. */