Brush Assets: Remove local brushes from default startup file #120039

Merged
Hans Goudey merged 3 commits from HooglyBoogly/blender:brush-assets-remove-defaults into brush-assets-project 2024-03-29 17:01:24 +01:00
1 changed files with 23 additions and 0 deletions

View File

@ -21,6 +21,7 @@
#include "BLI_math_rotation.h"
#include "BLI_math_vector.h"
#include "BLI_math_vector_types.hh"
#include "BLI_mempool.h"
#include "BLI_string.h"
#include "BLI_utildefines.h"
@ -904,4 +905,26 @@ void BLO_update_defaults_startup_blend(Main *bmain, const char *app_template)
}
}
}
{
/* Remove default brushes replaced by assets. Also remove outliner `treestore` that may point
* to brushes. Normally the treestore is updated properly but it doesn't seem to update during
* versioning code. It's not helpful anyway. */
LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
LISTBASE_FOREACH (SpaceLink *, space_link, &area->spacedata) {
if (space_link->spacetype == SPACE_OUTLINER) {
SpaceOutliner *space_outliner = reinterpret_cast<SpaceOutliner *>(space_link);
if (space_outliner->treestore) {
HooglyBoogly marked this conversation as resolved Outdated

I would check if (space_outliner->treestore != nullptr), it's fragile to depend on this existing in the .blend.

I would check `if (space_outliner->treestore != nullptr)`, it's fragile to depend on this existing in the .blend.

Oh, good point, thanks

Oh, good point, thanks
BLI_mempool_destroy(space_outliner->treestore);
space_outliner->treestore = nullptr;
}
}
}
}
}
LISTBASE_FOREACH_MUTABLE (Brush *, brush, &bmain->brushes) {
BKE_id_delete(bmain, brush);
}
}
}