Instead of using pointers for these functions, they should be using
references (in most cases) and let the caller make sure that the
layer actually exists.
Text of preview-tile widgets would change color while pressing the mouse
button on them, this wasn't useful and just made the UI feel glitchy.
The widget background already indicates the state well.
Preview-tile widgets are currently only used in the asset view template.
More usages will be introduced in the asset-shelf patch (#104831).
Caused by 5ed14e9269.
That commit accidentally removed the `copy_v2_v2_int(t->mval, mval);`
line which was responsible for initializing the value of `mval`.
PR adds support for the selection of grease pencil layers in
animation editor.
- selection status is stored in `GreasePencilLayerTreeNode`
- Existing `GP_LAYER_TREE_NODE_SELECT` flag is used for selection
- selection of channel updates the active layer in object properties
Part of #110056
Pull Request: https://projects.blender.org/blender/blender/pulls/110133
Adaptation of the operator `ACTION_OT_keyframe_insert` to take into account grease pencil channels.
Grease pencil keyframes can now be inserted in blank mode, or in additive mode (duplicate the current frame in the new keyframe).
Two API functions were added :
* `add_duplicate_drawings` which copies the data of a drawing to creates a duplicate, and
* `insert_duplicate_frame` which creates a duplicate frame of an existing one either by copy or instance.
The additive mode option is also added to the UI.
The Layer method `frame_key_at` previously private was set to public.
Pull Request: https://projects.blender.org/blender/blender/pulls/110649
Face set code modifies visibility of faces, then flushes those changes
to vertex and edge visibility. However, then it did an extra flush back
from vertices to faces and edges, which shouldn't be necessary.
The Library Overrides view of the Outliner was casting a
`TreeElementOverridesData` pointer to an `ID` pointer, which would be
undefined behavior. Make sure it uses the actual ID referenced by the
`TreeElementOverridesData`.
In order to more reliably pass the asset to the operator, use a string
property with the full asset path instead of using a context pointer.
This is required to support the quick favorites menu, shortcuts, and
to draw operator inputs in the redo panel. In all of those situations
the original context isn't available. This also feels safer, since we
rely less on storing pointers to data with a less-defined lifetime.
Pull Request: https://projects.blender.org/blender/blender/pulls/110018
Historically, the OCIO based color management implementation in Blender
had exceptions to treat specific configurations differently. It was a
compatibility with the legacy "No color management" option.
With time and more development in the area there are better ways of
achieving this goal, if needed.
This commit removes the named-based exception, which also solves confusion
about why certain similar configurations (from OCIO stand point) give
different results. As well as allows to create a cleaner plate for an
upcoming additions in the OCIO configuration such as AgX.
Quite simple and technical change which constant-folds the check for
whether the scene color management enabled or not with "true" value.
Ref #110685
Pull Request: https://projects.blender.org/blender/blender/pulls/110580
#109460 was caused by the introduction of implicit sharing for custom
data layers (7eee378eccc8f87e17). Due to implicit sharing, the vertex
weight layer is now shared between the original and evaluated object in
object/weight paint mode, but not in edit mode because of bmesh. For
that reason, the original data has to be copied to be able to edit it, which
causes its pointer to change. `uiDefButF` can't deal with the situation when
the pointer changes on every redraw.
The solution is to just use an intermediate variable that is passed to the
`uiBut` and to update the vertex weight only when the intermediate value has
changed.
Pull Request: https://projects.blender.org/blender/blender/pulls/109665
The active data-block can now be queried via an `"id"` context member,
just like UI buttons representing a data-block and the Asset Browser do
it already. This is useful for scripts that need this information to
implement own operators. Requested by the Blender Studio for their
pipeline tooling.
Use const arguments for array input arguments as there
is no reason for them to be modified.
Using non-const arguments meant some functions
(uiTemplateNodeSocket for e.g.) couldn't use 'const' qualifier so the
generated type signature would match.
Also use suffix "_num" instead of "_len" for array lengths, ordering
these arguments after the array (in keeping with Blender's conventions).
Strip was removed from `seqbase` prior to calling
`SEQ_edit_remove_flagged_sequences()` which resulted in strip not being
actually removed, and it could be seen in timeline while being active.
The curve UI template can display several curves, typically Combined,
Red, Green, and Blue. Each is displayed by clicking a shortened button
C, R, G, B. The equivalent exists for Hue, Saturation, Value.
These single-lettered buttons can be translated using the already
extracted color letters.
R, G, B, H, S, and V all use the default translation context to refer
to the color already, so they do not need an extra context. C however
is already used for the letter in the context of vector
comparisons (as in A, B, C), so we add a Color context to disambiguate
it.
Pull Request: https://projects.blender.org/blender/blender/pulls/110491
To avoid the small jumps during the Pan operation, a feature was
implemented in the `ED_view3d_navigation_do` utility that replaces the
point used for AutoDepth.
As a result, the depth of the pivot point is now used during the
transform.
Also, to ensure minimal disruption to non-AutoDepth users, this feature
is enabled only when "Auto Depth" is enabled.
Pull Request: https://projects.blender.org/blender/blender/pulls/109451
In the 3D View, after navigating, the initial cursor position was
updated based on the relative position of the cursor in 3D space.
Now the initial relative position is maintained but moved closer to or
further from the 2d center based on zoom.