With 4da5377e17 control characters are shown as space characters. But
word wrapping code will use the codepoint from the glyph if available,
which means a soft wrap on space instead of a hard wrap on line feed.
Just oversight, no need to use the glyph for that. In fact we always
want to deal with the character, not the visual representation of it.
Pull Request: https://projects.blender.org/blender/blender/pulls/135541
When adding the assert I thought this wasn't happening on Linux
(since I'm unable to redo it locally).
However the builtbot hits this assert on Linux, causing tests to fail.
Resolves#135195
The equivalent operation in edit mode reused existing vertices
rather than taking the new positions from the convex hull output.
This commit implements the same behavior for the geometry node.
Pull Request: https://projects.blender.org/blender/blender/pulls/135536
The offset calculation would overflow inside `ibuf_get_color` given the
incoming arguments and image size.
Another similar problem, found from quick inspection, would occur inside
`ibuf_get_color_clip` as well.
Pull Request: https://projects.blender.org/blender/blender/pulls/135476
Caused by 839108f623.
Now, when there is no mapping available between the evaluated
mesh and the original, the evaluated mesh won't have the edit mesh
pointer set. Since this code really just cares about the original BMesh,
just retrieve it with the original object. This function expects an
evaluated object since `BKE_object_get_editmesh_eval_cage`
asserts for that laer on.
Area's butspacetype_subtype always needs to be cleared after switching
space and subtype, whether the space supports subtypes or not.
Otherwise an operation that only changes type (so assumed subtype of
zero) will use the area's previous subtype if it has subtypes. This is
restoring prior undocumented behavior, now with a nice comment.
Pull Request: https://projects.blender.org/blender/blender/pulls/135533
Replicate the Overlay-Legacy behavior for selected face overlays in
X-Ray mode:
Use depth testing for `edit_mesh_faces_ps_` when X-Ray is fully opaque.
X-Ray is always considered fully opaque in Preview/Render mode since
X-Ray transparency is not supported.
Pull Request: https://projects.blender.org/blender/blender/pulls/135524
Setting the offset to 0 for these cases fixes the issue.
We still want to draw the edit face in this case to a be able
to zoom on the retopo surface. We just don't want the offset.
Pull Request: https://projects.blender.org/blender/blender/pulls/135511
Previously, when pressing the Backspace key inside an open color picker,
the HSV and Hex field components would not refresh. Only the RGB
components would.
Fixed by calling the attached button function callbacks which propagates
the color changes to the other color picker buttons from the RGB values.
Pull Request: https://projects.blender.org/blender/blender/pulls/135131
Resolve naming collisions for structs which could cause the wrong size
to be used allocating the `LaplacianSystem` when calculating mesh
weights from an armature.
Ref !135491
While we can avoid this crash by enforcing that the animation can't
play while drawing, this PR fixes the problem by remembering the
drawing that the operation was started on.
This seems like the right thing to do in general because there might be
other ways that the frame can be changed.
From my tests this seems to work even in cases where we use multi
frame editing.
Pull Request: https://projects.blender.org/blender/blender/pulls/135451
Fix an issue where imported F-Curves were allocated but not zeroed out,
when importing skeletal animation from USD.
When growing the F-Curve array, `BKE_fcurve_bezt_resize()` will now zero
out new array elements, instead of leaving the initialisation to the
caller. There are many fields in `BezTriple`, and the caller is likely
to only set those that can be imported (like the keyframe coordinates &
handles).
This fixes an issue introduced in 857743db9d.
Pull Request: https://projects.blender.org/blender/blender/pulls/135448
In any Action Slot selector, when there is no slot selected yet, replace
the 'Duplicate' and 'Unassign' buttons with a large 'New' button. This
is consistent with the ID selector, which does the same thing.
Care is taken to ensure this is only applied to the use case of
selecting Action Slots, in order to minimize the UI changes in Blender
4.4.
The only other use case of `template_search()` that I could find, is the
View Layer selector in the top-right corner of the window. However, even
without the "_is this an Action Slot selector_" guard, it would not show
these changes, as Blender guarantees there is always a view layer
assigned. Add-ons may still use `template_search()` in other ways,
though, so it's still good to keep this guard in place.
Pull Request: https://projects.blender.org/blender/blender/pulls/135443
The detection of when the wireframe is drawn by the edit mode overlays
instead was incorrect and didn't handle recent changes to avoid drawing
edit mode overlay data for invalid evaluated/original edit mesh mappings.
See code comments for more detail.
Pull Request: https://projects.blender.org/blender/blender/pulls/135402
Primitive tools were not using the brush randomization options.
This moves the randomization functions into the editor utilities for Grease Pencil
and enables primitive curve generation to use them.
Pull Request: https://projects.blender.org/blender/blender/pulls/135454
Prior to 4.3, it is possible to toggle Stabilize Stroke during a Grease
Pencil stroke with shift key, however this is broken by brush system
changes. Now this behaviour is re-implemented.
Note: Shift-toggling of Stabilize Stroke is only for Grease Pencil for
now, as mesh sculpt mode will use shift key for smooth brush instead of
pointer smoothing.
Pull Request: https://projects.blender.org/blender/blender/pulls/135024
When accessing the key-map for tooltips it's important to use
the final "user" keymap, combine from "active" & "default".
Using the active keyconfig would only keys from key-maps that had
been modified.
Prior versions of Blender showed control characters as spaces, but
since we recently made fallback optional they are no longer visible.
This is because with fallback we are guaranteed to return a glyph, but
without fallback the current font will not have entries for these. This
PR just shows them as spaces, just like before. But does not do so for
carriage return and line feed.
Pull Request: https://projects.blender.org/blender/blender/pulls/135484
The report was storing a non-2D-Vector attribute with geometry nodes
over a valid UVMap, resulting in the evaluated mesh not having a valid
`CD_PROP_FLOAT2` layer anymore. There is already a check to early out
for the original mesh in case it has no UVs, but as mentioned, not for
the **evaluated** (cage/multi-no-res) mesh which is actually/rightfully
used to get the UVs.
To resolve, check again if we have UVs right after getting he mesh that
is actually used.
(we might even want to remove the first check, seems redundant now -
even though it would early out a bit sooner...)
Pull Request: https://projects.blender.org/blender/blender/pulls/135388
Mitigates #93726.
With this asset previews will no longer flicker in the asset browser
on actions like undo, redo or when using "Adjust Last Operation" if
the asset library doesn't contain assets from the current file.
Previews of assets from the current file would have to be cleared on
undo & redo, because their memory location can change then. However the
file browser's data model didn't allow clearing just these previews, so
previews from external assets would have to be reloaded from disk too,
causing the flickering.
Noticed we can trivially skip clearing of previews if there are no
assets from the current file anyway. This mitigates the issue quite a
bit until preview handling is rewritten, see #122439.
Adding a new asset will tag asset browsers to clear and reload the
assets from the current file. Since a859ed1130, such changes will also
clear all asset browsers showing the affected asset libraries. So the
clearing of current file assets would happen on an already cleared
asset/file list. This case wasn't considered before, so it would lead to
a failed but harmless assert. Handle this case properly.
Since a859ed1130, changes like adding an asset will cause all visible
asset browsers showing the affected asset library to be cleared. This
should cause the asset browser to trigger a re-load of the asset
libraries, but a logic error made only assets from the current file be
loaded instead of the full library.
While sorting reports for the "list of bug fixes for old bug reports",
occasionally triagers have encountered a report that's too difficult or time consum
ng to track down the correct information for.
In cases like this, it was decided that just ignoring the bug report
was a better option, and so this commit adds a option to do this by
adding the string `skip_for_bug_fix_release_notes` to the report.
preferable as `<!-- skip_for_bug_fix_release_notes -->` since it's
invisible.
Pull Request: https://projects.blender.org/blender/blender/pulls/135218
This makes it so that we ship the test data for every major release
in its own separate archive. (In case someone wants to easily run the
tests for a specific older release without using git)
Pull Request: https://projects.blender.org/blender/blender/pulls/135293
In the Action Editor and Dopesheet, Action/Slot summaries erroneously showed
keys that were hidden in their sub-channels.
The root cause was that the functions for building Action/Slot summary key
lists, `action_to_keylist()` and `action_slot_to_keylist()`, weren't doing
animation filtering *at all*, instead just looping over all f-curves.
This PR fixes the bug by replacing `action_slot_to_keylist()` with a new
`action_slot_summary_to_keylist()` function, which calls into the animation
filtering code to determine which f-curves to include in their key list, and
also using it in place of `action_to_keylist()` at the relevant call sites.
Additionally, properly filtering the channels for the summaries requires both a
`bAnimContext` and the ID that's being animated, so this PR threads those
through to `action_slot_summary_to_keylist()`.
Note that `action_to_keylist()` is still used in some places that actually
*want* an unfiltered list of keys. Those call sites have been left as-is, and
`action_to_keylist()` remains for that purpose.
Pull Request: https://projects.blender.org/blender/blender/pulls/134922
Changing the `affected_drawings_` set in a threaded loop is not safe.
Since running the eraser in parallel over multiple drawings is unlikely to
improve performance on top of internal threading, handling layers in a simple
sequential loop is preferable here.
Pull Request: https://projects.blender.org/blender/blender/pulls/135428
The issue was that the versioning code didn't run when loading the action.
Thus it had no slots and so was crashing trying to get the first slot.
This PR fixes that in 2 ways:
* Check the slot count of the loaded action, and return/notify the user
* Actually make sure the actions are versioned
Point 1 is important anyway because actions can have no slots (though unlikely).
Point 2 ensures that old pose assets can actually be used
Pull Request: https://projects.blender.org/blender/blender/pulls/135232
Quite obscure issue, seemingly caused by the fact that HIP-RT is
passing a large (about 20 MB) global array to a different library
(HIP driver, via hipModuleLoadData). Having global variables of
such size seems to be always problematic as they can not be stored
on stack and, possibly, extra mapping is involved here. It is not
clear whether it is a quirk of the HIP driver, or Linux, or, maybe,
something completely different.
It is possible to work-around the problem by making a temporary
copy of data on heap memory and pass it to the hipModuleLoadData().
This is how other areas are dealing with modules in Blender.
This change contains patch against HIP-RT and the new HIP-RT
library compiled with the patch. It seems to fix the problem
reported in the report.
This change does not resolve OIDN on HIP GPU which seems to have
the same issue. However, it is not a recent regression and the
bug with OIDN GPU denoising can be reproduced using Blender 4.3.
Pull Request: https://projects.blender.org/blender/blender/pulls/135403
Caused by 6d832ee5b3
The bone names were flipped correctly, however, we were missing the
actual FCurve BezTriple flipping.
This was caused by passing the wrong FCurve into
`do_curve_mirror_flippping` -- this function is checking for existence
of the FCurve in the `KeyframeCopyBuffer`, so we gotta pass
`fcurve_in_copy_buffer` (instead of the new fcu).
Pull Request: https://projects.blender.org/blender/blender/pulls/135381
Caused by 40ac21e5a5 [does not remember/resore the previous ScrArea &
ARegion anymore].
Without this, the operator reporting might get confused by using the
wrong area/region, so added back
NOTE: I tried to just notify `NC_SPACE | ND_SPACE_INFO_REPORT` in
`screen_opengl_render_end` (same as in `wm_operator_finished` >
`wm_operator_register`), but to no avail...
Think this is quite good pratice to leave us with the original area/
region anyways though.
Thx @brecht for improvements (restoring in `screen_opengl_render_init`
already, also taking care of restoring in some early out cases)
Co-authored-by: Brecht Van Lommel <brecht@blender.org>
Pull Request: https://projects.blender.org/blender/blender/pulls/135394
For this to work, we have to take into account handles in TransVert as
well.
Behavior is the same as in legacy curves (meaning that if the control
point itself is selected, the handles are ignores).
Part of #133448 (same thing for grease pencil, which I plan to also make
part of TransVert, but better solve for Curves first, so we can share
code here).
Pull Request: https://projects.blender.org/blender/blender/pulls/134945
The compositor backdrop is still visible even after a new completely
different file is loaded. This is because compositor contexts cache
things like the backdrop, and contexts are stored on interactive
compositor renders, which are not freed until Blender is closed. To fix
this, we cleanup the interactive compositor renders that were created
upon file load.
Pull Request: https://projects.blender.org/blender/blender/pulls/135390
Enable VK loader debug messages when running blender_debug_gpu_*
scripts.
Allows easier debugging for users not familiar with using terminal.
It won't log anything when using OpenGL.
Vulkan loading logging can be big (1000 lines) but gives a lot of insight
how vulkan and related applications are configured on the user system
Sadly it does contains actual paths but think it is OK as the user is still
responsible for uploading it in the tracker.
An example of a log has been attached.
See #135327.
Pull Request: https://projects.blender.org/blender/blender/pulls/135399
This commits fixes a type error issue when reporting that a addon was
designed for a version of Blender newer than the current one.
Thanks to @Rakete for the fix.
Ref: !135392
This was caused by the normals not being available (default to
`vec3(0)`) which produced `NaN`s down the line after the
unsafe normalize. Changing to `safe_normalize` fixes the issue.