This was caused by 3dfec1ff73
which introduce the new behavior. This was to fix workflows
using a lot of semi-transparent objects which made nagivation
difficult.
This patch first roll back to the previous behavior: The
unselectable object will affect depth-aware operators.
This patch introduces a new visibility property to remove
the influence of objects in all depth picking operations
and selection operations. However the object is still
selectable through non-drawing selection operators
(e.g. select by material) and through the outliner.
This is to adress the aforementionned navigation issues.
Pull Request: https://projects.blender.org/blender/blender/pulls/146706
644fb2b679 fixed a long standing issue
that offscreen example showed the wrong colors. However the fix assumes
that input texture color space is always sRGB.
This adds a shader variation that draws textures that are stored in scene referred
linear color space (like all of our Image data-block).
Co-authored-by: Clément Foucault <foucault.clem@gmail.com>
Pull Request: https://projects.blender.org/blender/blender/pulls/147788
Adding panel toggles in nodegroups have somewhat of a UX antipattern. When
running the operator, it checks for conditions that indicate it should not run,
and if those are hit, it cancels execution and mentions the invalid condition in
the footer bar.
This is not ideal, the user should not have to call the operator to find out
whether it can be called.
Why it got implemented like this is likely a consequence of all interface items
being the same "New Item" operator. Poll functions cannot use operator
properties, so variants of the same operator cannot check for different
conditions for execution.
This is a problem for panel toggles, as they have more restrictions to when they
can be added that don't apply to other interface items.
This patch creates a separate operator for adding panel toggles. This allows the
condition checks to be implemented in the poll function, which enables greying
out the operator buttons and showing on tooltips what condition is invalid.
Pull Request: https://projects.blender.org/blender/blender/pulls/146379
The issue was that the data-blocks of two different undo steps were detected to
be identical, even if the attributes changed. That's because even if the
implicitly-shared data was different, they were turned into the same pointer by
cadb3fe5c5 on write.
This patch makes it so that for undo steps, implicitly shared data does not use
the pointer stability feature (in a sense, implicit-sharing itself provides
pointer stability for undo steps already).
The main tricky aspect is that we need to know if a pointer is implicitly shared
in `writestruct_at_address_nr` and oftentimes that's called before the
corresponding shared data is actually written with `BLO_write_shared`. The
solution is to enforce that the blend-write code has to know what pointers are
implicitly-shared before they are written the first time. The simplest way to
ensure that is to call `BLO_write_shared` first. However, that's not always
possible, especially when the pointer is directly embedded in an ID. Therefore,
there is a new `BLO_write_shared_tag` function that can be used in such cases.
The undo performance for the file in #141262 is still fixed with this change.
Pull Request: https://projects.blender.org/blender/blender/pulls/148144
When saving asset catalogs to an already-existing file, only perform
that save when there were local changes to the catalogs. This prevents
unnecessary writes to the catalog definition file, as that can cause
conflicts when multiple Blender instances share the same asset library
(either directly or via Syncthing/Dropbox/etc.)
Pull Request: https://projects.blender.org/blender/blender/pulls/148205
This has ripple effects by making the "hide value" setting ineffective and
always hiding socket values as well as graying out the "hide value" node group
option.
Pull Request: https://projects.blender.org/blender/blender/pulls/148188
The bone collection operator was not updated to handle the new flag
which is now on the `bPoseChannel` instead of the `Bone`.
For this to work, the operator now needs the `bArmature` as well as the `Object`
and they need to be in sync. Additional code was added to the poll function
to ensure this is the case.
As a bonus, when working with multiple armatures this now works as expected
where only the bones of the active armature are selected even if the armature is
shared. The active object is determined by the last bone clicked.
Pull Request: https://projects.blender.org/blender/blender/pulls/148185
When connecting node sockets, a search menu opens. Its items need to
be added, and translated manually. This commits adds a few missing
items from recent nodes.
It does the same for sockets coming from node group assets.
Reported by Ye Gui in #43295.
Pull Request: https://projects.blender.org/blender/blender/pulls/148079
Brush directions are dynamic, the enum can have different options
depending on brush type. This commit manually extracts the options.
The labels use the "Brush" translation context, to disambiguate
"Deflate", the operation, with the compression algorithm.
Also `smooth_direction_items` is moved inside
`rna_Brush_direction_itemf()`, since it is used only there, same as
the other brush direction items.
Reported by Ye Gui in #43295.
Pull Request: https://projects.blender.org/blender/blender/pulls/148081
When select-sync was used with both edge & face modes enabled,
vertex selection logic was used which resulted in no visible selection.
Now edge selection is used when both edge and face modes are enabled.
Ref !148181
Implement pinned with select-sync (technically not a bug),
more an oversight in !138197.
Some subtle functional changes have been made.
- Select pinned now only works in vertex select mode
since previously it was possible to select vertices in edge/face modes
where the selection wasn't displayed.
- The island selection option is ignored when selecting pinned.
- The select pinned operator wasn't working with select sync edge/face
modes. Exits with an error instead.
Ref !148181
PRs #147511 and #147595 ensured that any check for scene strip renders
in the prefetch thread would also recurse into "sequencer-type" scene
strips, but this introduced the potential for an infinite recursion.
Fix by using `SeqRenderState` to detect such a recursion.
Also remove unused `seqbasep` context member in `PrefetchJob`, and
add a check for non-nullptr `Editing`, fixing a crash where the scene was
present without an `Editing` counterpart.
Pull Request: https://projects.blender.org/blender/blender/pulls/147949
Add a simple check to the Marker keymap poll. Since there's no `bContext`
passed to the function we can reconstruct it from the workspace.
We can exit early if there is no sequencer scene (when no markers are
guaranteed). View layer can remain the same since it only applies in the
`SPACE_ACTION` case.
Pull Request: https://projects.blender.org/blender/blender/pulls/147903
It was requested to allow strips inside of meta strips to be used as
masks for modifiers. There is need for mask is to be shared between
multiple strips in multiple meta strips. More discussion is in #146970.
Pull Request: https://projects.blender.org/blender/blender/pulls/148097
`socket.socket_typeinfo()` can be nullptr when reading blend files that
contains custom socket types that are not registered yet. This fix
prevents crashing when this happenes (but the socket will stay
unregistered).
Pull Request: https://projects.blender.org/blender/blender/pulls/148103
The descriptions for `POSELIB_OT_asset_modify` and
`GEOMETRY_OT_execute_node_group` are dynamic. They were already
extracted, but the translation did not happen in the description
function.
This commit adds the appropriate `TIP_` translation macro.
Reported by Ye Gui in #43295.
The "Unassigned Node Tools" menu type is declared manually in a
function, and its label is not automatically translated. This commit
extracts it using `N_()`. Note that its description was already
extracted the same way.
Reported by Ye Gui in #43295.
A scrollbar button would be cast to a number-slider button, and values from
this memory used for scrollbar specific calculations. Looks like an error from
809499a3d0.
In practice the error wouldn't be visible, since the actually used value would
by chance be the intended value, from what I can tell. That's because
`uiButNumberSlider.step_size` and `uiButScrollBar.visual_height` have the same
memory offset within the button memory.
A scrollbar button would be cast to a number-slider button, and values from
this memory used for scrollbar specific calculations. Looks like an error from
809499a3d0.
In practice the error wouldn't be visible, since the actually used value would
by chance be the intended value, from what I can tell. That's because
`uiButNumberSlider.step_size` and `uiButScrollBar.visual_height` have the same
memory offset within the button memory.
This patch adds support for disabling outputs in built-in nodes based on
menu inputs using a custom usage_inference callback. This just
essentially calls usage_inference_fn for outputs as well, while it was
only being called for inputs. Additionally, the usage_by_menu methods
were adjusted to only consider outputs if it is being called on inputs.
Some types were renamed to be more general, and not just for inputs.
Pull Request: https://projects.blender.org/blender/blender/pulls/148132
Instead of reordering edges to be able to map them with hash sets, new
edges order (since 157e7e0351) is kept as-is in order to not
touch edge attributes. In early return in case of correct mesh this new
ordering was missed. This was found in file from #147694.
Pull Request: https://projects.blender.org/blender/blender/pulls/147872
Forgot that the Armature's bones list only contain root bones...
Fix the versioning code.
Also adding a 'recovery' extra versioning step for files that may have
already been opened and re-saved in Blender 5.0 (though this step is
not 100% handling all cases, in case some script or add-on already
created some system properties in a bone in 5.0, the existing user
properties from 4.5 and before won't be copied over anymore).
Pull Request: https://projects.blender.org/blender/blender/pulls/148125
Fix playhead snapping to seconds, when the frame rate is less than 0.5
FPS.
This makes it possible to snap to fractions of frames, to support setups
with multiple seconds per frame. Of course this only has any effect
(apart from not crashing) when sub-frames are enabled.
I've also added unit tests, and verified that the values are the same
from before this refactor.
Pull Request: https://projects.blender.org/blender/blender/pulls/148074