Not sure how the WorkSpaceLayout.screen pointer could end up being NULL,
but apparently that happens, or at least happened with older files.
Rather than just adding NULL-checks, prefer not keeping around those
invalid layouts at all.
It was too easy to end up with invalid region rectangles and we were
badly protected against them, so that they were hard to catch.
In fact we still create a main region for the top-bar, which ended up
getting a region height of -1. While this doesn't seem to have caused
issues in practice, we should prevent them entirely.
So idea was that at the end of region layout resolving,
`BLI_rcti_is_valid()` should return `true` for the region rectangle.
Further changes here ensure this is true: The `RGN_FLAG_TOO_SMALL` flag
is now set whenever there is not enough space for a region or if it
would get a size of zero or less.
Note: Should the assert fail, please do not just disable it and try to
actually address the root of the issue.
In Blender 2.80 Shift + H (`object_hide_view_set(unselected=True)`) used to
(temporarily) hide objects only if their collection was visible in the current
view layer.
This behavior was changed in rB0812949bbc3d7acfd1f20a47087ff973110aa177 (D5992)
by using `BASE_VISIBLE_DEPSGRAPH` for the decision which object's (temporary)
visibility should remain unchanged. Since the view layer visibility and depsgraph
visibility has been decoupled in said commit, the correct condition
to check is `BASE_VISIBLE_VIEWLAYER`.
This patch is a fix for T72302
Differential Revision: https://developer.blender.org/D6583
rB4cde92303f3d made a MESH-only check (but that is no longer mandatory
since the Mesh is fetched by MOD_deform_mesh_eval_get instead of ctx-
>object->data now...). This would fail for projecting beveled curves
(resulting mesh missing), now also get the mesh for curves if we use
MOD_SHRINKWRAP_PROJECT (and only then).
Maniphest Tasks: T68489
Differential Revision: https://developer.blender.org/D6548
when using UDIMS
A more generic approach might be considered in the future (I assume
there are other operators around that need an update in shifting their
uvs) though.
Maniphest Tasks: T72648
Differential Revision: https://developer.blender.org/D6570
When a node was partially/fully hidden, this was causing the mask flags
to update incorrectly because it was not checking all vertices, so they
were assigned the fully_masked state and not updating in the transform
tool and mesh filter.
Reviewed By: jbakker
Maniphest Tasks: T73094
Differential Revision: https://developer.blender.org/D6573
The PBVH usually is rebuild after a topology change, so it does not make
sense to keep the previous dynamic mesh preview vertex list. This may
cause a crash is the number of vertices of the new mesh (and preview) is
larger previous one. Now the list is deleted with the PBVH and a new one
will be generated using the new mesh when the cursor is updated.
Reviewed By: jbakker
Maniphest Tasks: T71712
Differential Revision: https://developer.blender.org/D6476
Simply loading factory settings and dragging an area separator
immediately after would cause an assert because of these invalid sizes.
Seems that since rB07499c04f612 we correctly initialize DPI related
UserPref values with 0, which caused DPI dependant initialization of
global areas to set ScrArea.global.size_min/max to 0 too.
The `do_versions_after_linking_280()` function was missing a placeholder
for the newly added versioning code. I copied the comments from the
`blo_do_versions_280()` function.
No functional changes.
During development of Blender 2.80 the `Object.hide` property was removed,
and later reintroduced in rB5e968a996a53 as `Object.hide_viewport`. Of
course there are some technical details missing in this summary, but this
is the view that's given in the 2.80 release notes.
FCurves on `Object.hide` weren't updated in versioning code, resulting in
the property no longer being animated. This commit corrects the RNA path
of such FCurves.
This might be useful in some places. Much of the code makes the implicit
assumption that the rectangle has valid coordinate order, good to make
it more explicit.
When splitting a Quad View by dragging a corner an quad area can become
negative size because of a one pixel offset to calculate the start of
the area.
This patch solves this to make sure that there are no negative areas. By
adapting the `ARegion.winrct`.
Reviewed By: Severin
Differential Revision: https://developer.blender.org/D6579
The original code had 0 as a magic number in the test whether the weight
belongs to a locked group, instead of comparing it to the actual group
number.
Thanks @mano-wii for providing the diff.
The Viewport Render Keyframes operator didn't include keyframes from
grease pencil animation or from mesh shape key animation (see T72861).
To find all related datablocks that could be considered as part of the
selected object, `BKE_library_foreach_ID_link(..., IDWALK_RECURSE)` is
used. To prevent relations like constraint targets from being visited,
the recursion is stopped when it finds a different object.
Reviewed By: mont29
Differential Revision: https://developer.blender.org/D6558