Commit Graph

46493 Commits

Author SHA1 Message Date
Pratik Borhade
4bf1931fee Fix #139494: Regression: Filtering doesn't work with custom search prop
If block added in 52b8eba9eb actually
seems reduandant (invert still shows all elements for empty string).
Due to the `filter_byname` condition, custom property used for search
filtering was useless as UI_list_item_index_is_filtered_visible returned
true for all elements.

Pull Request: https://projects.blender.org/blender/blender/pulls/139518
2025-06-17 12:05:55 +02:00
Philipp Oeser
3ddd2dff37 Fix #140210: Edit Bone selection cycling wrong for active but unselected
Unlike object or posemode (where items not only need to be active but
also selected to be treated as a starting point for cycling through to
the next item behind it on the next click), armature editmode would
treat active (but unselected) bones as a starting point as well. Leading
to confusion if you just clear your selection prior.

For reference to the expected behavior, look at these comments in
`mouse_select_eval_buffer`

>/* Only exclude active object when it is selected. */

>/* When the active object is unselected or not in `buffer`, use the
nearest. */

Now for editbones, the way `get_nearest_editbonepoint` works, there were
actually two things preventing stuff from happening as expected:
- [1] we would still get "use_cycle" behavior if we have an unselected
(active) bone -> this is now checked for by looking at active bone
selection flags (NOTE: tip/root needs to be looked at as well). These
checks were once there, bd59781c66 removed them though.
- [2] without "use_cycle" behavior, we are still looping all hit bones
and there could be the situation where we could accept a first bone (in
the `bias > bias_max` condition -- that one could be the closest already
but does not set the `min_depth`), but continue to loop (now entering
the "bias == bias_max && do_nearest" condition and `min_depth` could
still be at INT_MAX) and accept a bone that is actually further away...
That logic is from 328ec2b172

Both points have now been addressed.

Pull Request: https://projects.blender.org/blender/blender/pulls/140348
2025-06-17 12:05:19 +02:00
Philipp Oeser
1203b726d1 Fix #140183: Add Armature Constraint (with target) wrong behavior
Two issues here:
- if only one bone is selected blender would create an **Empty** as
target (does not make sense as a target for an armature constraint
though)
- if other bones are also selected, none would be set up as a real
target for the Armature Constraint

So to resolve, change behavior in the following way:
- if only one bone is selected -> dont create a "dummy" target at all
(just like for `Clamp To` or `Spline IK`, does not really make sense to
create a default Curve / Armature in this case since the user would
always use something else)
- if you have another bone selected -> set it up as bone target in the
armature constraint for the user

For the second to work properly, we have to add a target to the armature
constraint "manually" (since armature constraints dont have a target by
default)

Pull Request: https://projects.blender.org/blender/blender/pulls/140200
2025-06-17 11:11:44 +02:00
Nathan Vegdahl
33b712f909 Core: Always use current open file for blend_name variable
Previously `blend_name` was using the same path to get its file name
as `//` used. However, the choice of path for `//` seems to be
bespokely chosen at each call site.  There may be a logic to it, but
if so it's not immediately clear what it is.

This PR changes `blend_name` to instead always use the currently open
("global") file path, making it well-defined and predictable for
users.

This also prepares better for PR #139438 for 5.0, which adds
`blend_name_lib`, which always uses the blend file that the ID owning
the path is linked from. Over-all this should be much more predictable
and controllable for users.

Pull Request: https://projects.blender.org/blender/blender/pulls/140474
2025-06-16 17:32:11 +02:00
Jeroen Bakker
e8c5d26838 Fix #140285: Refactor clip editor drawing to fix asserts
- Removes asserts where polygon shaders are used to draw lines and
  points. This is incorrect and leads to asserts in Vulkan.
- Kept as close to the existing control flow. Didn't want to introduce
  regressions as this PR lands in 4.5

Pull Request: https://projects.blender.org/blender/blender/pulls/140337
2025-06-16 14:43:06 +02:00
Damien Picard
00d9d58d77 I18n: Fix strange report formattings
A few reports used string formatting in a way which made translation
awkward, by splitting the message into several individually translated
submessages, instead of just one message with formatting markers.

Pull Request: https://projects.blender.org/blender/blender/pulls/139895
2025-06-16 12:39:06 +02:00
Sybren A. Stüvel
953aaf1dae Fix: Pose Inbetweener crashes when bones have custom properties
Fix a crash in the inbetweener (and other similar tools) when bones have
custom properties, but no system properties. It just needed another
`nullptr` check.

Pull Request: https://projects.blender.org/blender/blender/pulls/140455
2025-06-16 12:10:47 +02:00
Jacques Lucke
0937051d52 Fix: Nodes: bad user counting when creating node group
The newly created node tree already has one initial user
when it is created. So the user count does not have to be
increased when it's first assigned.
2025-06-16 06:31:21 +02:00
Guillermo Venegas
a8fdecc0a8 Fix: IO: FBX General import settings layout can't be re-enable
The `General` settings layout can be disabled by unchecking `use_custom_props`,
an since this button button is within this layout it can't be activated back.

NOTE: See that the button can be activated back if the checkbox is still
hovered after being unchecked, if the mouse moves out it can't be enabled back.

Pull Request: https://projects.blender.org/blender/blender/pulls/140228
2025-06-16 06:26:27 +02:00
YimingWu
6756982f07 Fix #139873: Grease Pencil: Auto normalization on assign/remove operator
Auto normalization used to not work on assign/remove vertex group
operator, this was due to `BKE_object_defgroup_validmap_get` and
`vgroup_parray_alloc` did not handle grease pencil type objects. Now
added grease pencil cases in them and auto normalization works as
expected.

Pull Request: https://projects.blender.org/blender/blender/pulls/139912
2025-06-15 12:50:13 +02:00
Pratik Borhade
f9e7769f7f UI: Use selected text theme of list item for tree view
If view items button is active, call `ui_layout_list_set_labels_active` to
set the `SELECT` flag on label button. Due to this flag being set, text_sel theme
color is copied to `wcol.text` (see `UI_SELECT` condition in `widget_state()`).
This `wcol.text` is later used inside `widget_draw_text()` for text color.

Pull Request: https://projects.blender.org/blender/blender/pulls/140330
2025-06-15 12:07:22 +02:00
Campbell Barton
c482c52346 Cleanup: sort CMake file lists 2025-06-14 15:57:33 +10:00
Campbell Barton
ce760b7f0b Fix NDOF panning in 2D views ignoring the delta time
The delta-time is used as a scale for panning in all other views.
2025-06-14 12:25:08 +10:00
Campbell Barton
a197b1811a Fix #140165: NDOF panning reversed
Regression in [0] caused NDOF panning to be reversed
and zoom to be inverted in the 3D viewport.

- Use 2D viewport behavior for cameras & rotation locked views
  since the navigation mode is not used in these cases.
- Restore the same zoom direction as 4.4x.

[0]: 64696cc699
2025-06-14 12:22:36 +10:00
Jacques Lucke
d21d7702ca Fix #140289: only show link warnings when link is visible 2025-06-13 10:17:19 +02:00
Sean Kim
9c946e87a5 Fix #140305: Smooth Paint brush corrupts color attribute data
Pull Request: https://projects.blender.org/blender/blender/pulls/140311
2025-06-13 04:39:53 +02:00
Sean Kim
858d767413 Cleanup: Silence unused function warning
Pull Request: https://projects.blender.org/blender/blender/pulls/140307
2025-06-12 22:12:00 +02:00
Christoph Lendenfeld
95e39f6ff5 Revert "Fix: Autokeying properties does not deselect keys"
This reverts commit 283ae193d9.
It causes issues because the deselection happens regardless of
properties actually getting keyed, meaning
i.e. setting interpolation modes was no longer possible
2025-06-12 16:10:33 +02:00
Clément Foucault
f5dd3ff0b5 Fix #139126: Paint: Undo in Texture Paint mode does not redraw object
This was a case of missing relation tagging update.
The update was functional only after something else
tagged relations.

The relation update needed to be added in both the
Image texture node RNA function (for manually changed
images) and in the add painting slot operator.

Pull Request: https://projects.blender.org/blender/blender/pulls/140270
2025-06-12 15:32:47 +02:00
Christoph Lendenfeld
b9d282b317 Fix #136372: Outliner hierarchy modification not auto keying
When recursively modifying a property via the Outliner while holding Shift,
only the property that was actually clicked got keyed.

With this fix, the clicked property gets keyed twice. Once with the added call,
and once in the ui button code. This shouldn't be a performance concern though.

Pull Request: https://projects.blender.org/blender/blender/pulls/140131
2025-06-12 13:47:24 +02:00
Philipp Oeser
cd43760843 Fix: Graph Editor proportional editing wrong distances
This is a followup to 1345ed9214 which caused a regression in that not
the "real" closest distance was chosen.

The "real" closest distance should be based on the closest selected
item, but instead, it was now more or less based on the _last_ selected
item, so seemingly the whole influence-thing was shifted to the right...

Since we were not applying the closest distance directly (but
postponing), we continued iterating and the min_ff call was not taking
into account the "stored" value.

So to resolve, additionally min_ff the "stored" value as well.

Pull Request: https://projects.blender.org/blender/blender/pulls/140209
2025-06-12 12:40:48 +02:00
Sietse Brouwer
c40a1a9836 Fix #120291: Grease Pencil: Geometry not selected after paste
In Grease Pencil, when pasting geometry from the clipboard, the pasted
geometry should always be selected, so that the user can continue
working with it. In some cases though, the geometry wasn't selected.
And selection failed when there was a mismatch between the selection
domain on the clipboard and the active selection domain when pasting
(e.g. selection domain on the clipboard was 'Point' and the active
selection domain was 'Curve').
This PR ensures that the pasted geometry is always selected, in the
correct selection domain.

Pull Request: https://projects.blender.org/blender/blender/pulls/140127
2025-06-12 08:20:46 +02:00
Christoph Lendenfeld
283ae193d9 Fix: Autokeying properties does not deselect keys
When autokeying properties, it didn't deselect
keys in editors like it does now for other ways of keying.

------

Part of #138877
Not tagging this PR as a fix because it doesn't completely resolve the issue

Pull Request: https://projects.blender.org/blender/blender/pulls/139886
2025-06-12 07:42:44 +02:00
Christoph Lendenfeld
96daf409c0 Fix: Autokey subframes when editing buttons
Previously, autokeying properties from the UI (outliner, n-panel)
would snap to full frames even when the current frame is a subframe.

This PR also fixes the display of properties in the
outliner when subframes are used. If the property is keyed
on the current subframe it is now yellow.

Found while trying to fix #136372

Pull Request: https://projects.blender.org/blender/blender/pulls/140117
2025-06-12 07:40:42 +02:00
Christoph Lendenfeld
04162c9a93 Fix #138695: Pasting single keyframes not taking NLA offset into account
When pasting single keyframes NLA mapping was not applied.

Pull Request: https://projects.blender.org/blender/blender/pulls/139891
2025-06-12 07:39:11 +02:00
Christoph Lendenfeld
da2a09fe63 Fix #139788: Applying a pose no longer autokeys
When applying a pose asset created with 4.4 and later,
autokeyframing no longer worked. That is because poses
are generated without any FCurve groups now, and the
code assumed there to be an FCurve group for every
bone in the pose action.

I decided to remove that assumption and instead use
`BKE_action_find_fcurves_with_bones` which iterates
fcurves in an action+slot combination
and calls the provided callback. This is the logic that
the code to apply a pose uses as well.

Pull Request: https://projects.blender.org/blender/blender/pulls/139794
2025-06-12 07:34:38 +02:00
Harley Acheson
1f1c20fa08 Fix: Allow Properties Snap To Min at 2X Scale
Slight adjustment to the minimum area snapping size to ensure that
Properties snaps to a minimum that shows the category tabs. Currently
this snaps nicely at 1X scale but does not show the categories at 2X.

Pull Request: https://projects.blender.org/blender/blender/pulls/140241
2025-06-12 01:54:28 +02:00
Pratik Borhade
39a138aa92 Fix #139887: Outliner crash after excluding collection
Caused by 6fe4496f4c
This is due to missing null check

Pull Request: https://projects.blender.org/blender/blender/pulls/140024
2025-06-11 11:38:53 +02:00
Sean Kim
47523a4192 Fix #140153: Cavity automasking with hidden faces can corrupt mesh
When calculating the cavity factor, it is possible for the relative
distance of all traversed connected vertices to be zero. This results in
a division by zero which does not get clamped correctly to the expected
[0.0, 1.0] bounds. Prior to 4.2, this would have had no effect, as the
processing of this vertex would be have been skipped entirely. Due to
changes during the brush refactor, this flaw in the existing code was
exposed.

Pull Request: https://projects.blender.org/blender/blender/pulls/140168
2025-06-11 07:38:45 +02:00
John Kiril Swenson
f16cc57409 Cleanup: VSE: Ensure strip->type check uses equals comparison
Usually, this enum should only ever be compared with `==`.
Confusingly, however, to check if a strip is an effect, one must
'bitwise-and' it instead. This can backfire if e.g. one tries to do
(strip->type & STRIP_TYPE_IMAGE) which doesn't work.

Make sure we only ever 'and' against the type enum when checking if
it is an effect. There was only this one case that didn't adhere.
2025-06-10 20:50:16 -05:00
John Kiril Swenson
5c9e7f52b5 Fix: VSE: Prevent slipping single image strips
This was possible even before the slip 2.0 refactor (#137072) but the
behavior doesn't make sense.
Allow slipping only if it is an image sequence.
2025-06-10 20:46:30 -05:00
Sean Kim
42b75c2cc4 Fix #140120: Multiplane Scrape behaves incorrectly
Introduced with 23951e1b12

The multiplane scrape brush uses two separate distances, one in world
space and the other in local brush space. Both need to be filtered on
for determining the brush strength.

Pull Request: https://projects.blender.org/blender/blender/pulls/140143
2025-06-10 22:35:44 +02:00
Christoph Lendenfeld
27d2d0a23a Fix: Crash when snapping to first key using subframes
When pressing Ctrl to snap the playhead while scrubbing,
Blender could crash while trying to snap to the first key.
This would happen if the current frame was higher than the
left keyframe, but the difference was less than the `BEZT_BINARYSEARCH_THRESH`.

Pull Request: https://projects.blender.org/blender/blender/pulls/140122
2025-06-10 16:40:07 +02:00
Sietse Brouwer
ab1b451250 Fix: Grease Pencil: Wrong check on editable layer and keyframe in Sculpt Mode and Vertex Paint mode
In Grease Pencil, when using the tools in Sculpt Mode and Vertex Paint
mode, the check on editable layers wasn't entirely accurate. There was
a strict check on an editable _active_ layer, but since the tools work
on _all_ editable layers, the check should be wider: if there is _any_
editable layer, the tool can work.
That is fixed in this PR. Now the tools can be used when, for example,
a layer group is active or when the active layer is hidden, but there
are other editable layers present.

In Vertex Paint mode there was an additional issue: with Auto Keying
enabled, a new keyframe was created for the active layer only. A new
keyframe should be created for _every_ editable layer. As is the case
now with this PR.

Pull Request: https://projects.blender.org/blender/blender/pulls/140119
2025-06-10 15:45:44 +02:00
Philipp Oeser
5c1eb99279 Fix #140109: Grease Pencil - Lasso Erase does not delete single points
By definition, Bounds for single points (size zero) are empty (this
matches BLI_rct behavior), so doing an intersect will actually fail.

So to resolve, use the existing `is_point_inside_bounds` for single-
point-curves.

Pull Request: https://projects.blender.org/blender/blender/pulls/140124
2025-06-10 15:42:27 +02:00
Jacques Lucke
2e44db85d2 Fix #138511: support dropping material asset into Set Material node
The `Drop Name` operator previously only worked for local data-blocks and not for assets.
This makes it possible to drop assets with this operator too.

Pull Request: https://projects.blender.org/blender/blender/pulls/140053
2025-06-10 12:10:15 +02:00
Sean Kim
12f4e17044 Sculpt: Assert when applying a translation that contains NaN
There have been a number of commits that have introduced regressions
in Sculpt mode where NaN begins to be propagated. While it is visually
very obvious that this is happening, this commit adds an assert so that
any automated testing with asserts on will also catch this issue.

Related to 23951e1b12

Pull Request: https://projects.blender.org/blender/blender/pulls/133992
2025-06-10 01:48:21 +02:00
Sean Kim
44bfeb2214 Fix #140078: Sculpt Paint brushes can apply NaN
Introduced with 23951e1b12

The paint brush uses either absolute or local distance values, mapping
this distance to a brush strength requires using different values for
`BKE_brush_calc_curve_factors` and cannot just use
`calc_brush_strength_factors`. To fix this, use the more generic method
instead to allow passing the correct radius.

Pull Request: https://projects.blender.org/blender/blender/pulls/140084
2025-06-10 01:46:09 +02:00
Sean Kim
1131254644 Fix #139969: Clay Strips brush can corrupt mesh
Introduced with 23951e1b12.

When using brushes that use a cube distance, some distances are set to
be float::max(). This breaks assumptions made inside the previously
linked commit, as the operations inside `BKE_brush_calc_curve_factors`
can easily cause this distance value to become infinity, which when
multiplied with the factor value of 0 results in NaN propagation in the
mesh.

To fix this, set the max distance in `calc_cube_distance` to 1.0f.

Pull Request: https://projects.blender.org/blender/blender/pulls/139965
2025-06-09 22:06:23 +02:00
casey-bianco-davis
672d8cfc6f Fix #130597: Grease Pencil: Brush cursor radius not working in perspective projection.
This fix make it so that the brush cursor is always the same size as
the drawn strokes.

The code logic is modified from `pixel_radius_to_world_space_radius`
in `grease_pencil_utils.cc`

Co-authored-by: Falk David <falk@blender.org>
Pull Request: https://projects.blender.org/blender/blender/pulls/139964
2025-06-09 14:14:31 +02:00
Jacques Lucke
b58c5f6e77 Fix #139172: group outputs show up in link-drag-search incorrectly 2025-06-09 12:15:15 +02:00
Jacques Lucke
9efc23bb69 Fix #140018: no warning when using bake node or simulation in zone
Baking and storing simulation state within loops or closures is not supported.
Previously, attempting to use the bake node or simulation zone in such a zone
would just silently fail. Now there is an error on the node and the bake
settings are grayed out.

Pull Request: https://projects.blender.org/blender/blender/pulls/140041
2025-06-09 12:08:24 +02:00
Jacques Lucke
a8e461f2de Fix #139985: refit column width when data type changes 2025-06-09 10:03:16 +02:00
Jacques Lucke
cd789b2c49 Fix #140014: enforce minimum width when creating group from reroute node
Also unifies the min/default/max width of all group nodes. The minimum width
has been increased from 40 to 60 for Geometry Nodes because there was is
an assert when the node was that thin already. The other group nodes already
used 60 as min width.
2025-06-09 08:50:46 +02:00
Jacques Lucke
101b94fe92 Fix #140017: creating a node group from Bake node crashes
Extension sockets were not handled correctly. Those are not
exposed in the group.
2025-06-09 08:30:03 +02:00
Jason C. Wenger
0087d20e9c Fix the order dissolve angle is shown in the redo panel
The ordering of the Dissolve Selection panel in edge mode now matches
the ordering of the Dissolve Edges Panel.

Ref !139958
2025-06-07 12:54:17 +10:00
Sean Kim
23951e1b12 Fix #139846: Plane brushes behave incorrectly with constant falloff
When constant falloff is used, `BKE_brush_calc_curve_factors` doesn't do
any extra filtering of the given distances. The Plane brush previously
didn't filter the distances, leading to incorrect deformations when the
constant falloff was used.

To fix this, this commit makes a number of changes:
* `BKE_brush_calc_curve_factors` no longer sets the factor for an
  element to 0 if it is outside of the provided distance. This is
  replaced with an assert.
* The Plane brush and Cloth brush have an explicit
  `filter_distances_with_radius` added.

Pull Request: https://projects.blender.org/blender/blender/pulls/139851
2025-06-06 22:48:18 +02:00
Jeroen Bakker
9e221a10d3 Fix #139901: UI: Incorrect flow when drawing scopes
When drawing image scope the vulkan backend raised some asserts. After
checking them the issue was in the calling code, that could lead to
undefined behavior on other platforms as well.

It isn't allowed to have an immediate mode shader bound, when performing
batch drawing. There was also a point batch that didn't use any point
shader resulting in undefined behavior as well.

For 5.0 we should add this as a GPU module check.

Pull Request: https://projects.blender.org/blender/blender/pulls/139926
2025-06-06 14:01:02 +02:00
Sietse Brouwer
0c41c0372e Fix #132700: Grease Pencil: Strokes with locked materials receive weight value
With this fix strokes with locked materials are not affected any more
by the Grease Pencil weight paint tools. The vertex weights in
material-locked strokes are read-only: they are not changed, but the
weights do count for Average, Blur and Smear.

Pull Request: https://projects.blender.org/blender/blender/pulls/138900
2025-06-06 13:53:06 +02:00
Bastien Montagne
f6a9f082e9 Core: Add data-level support for new 'system IDprops' storage for Blender 4.5 forward compatibility with 5.0 blendfiles
This mainly adds DNA level IDProp storage for system properties, their
handling in data management code, and the forward-versioning code
copying back content from system properties into 'all-in-one' single
IDProperties storage, for data types that will support both in Blender
5.0.

There is no user-facing changes expected here.

Part of #123232.

Pull Request: https://projects.blender.org/blender/blender/pulls/139257
2025-06-06 11:49:54 +02:00