Age | Commit message (Collapse) | Author |
|
Solved by using const qualifier for arguments which aren't mutable
in PyC functions.
Differential Revision: https://developer.blender.org/D12369
|
|
Context members of the file space would not be shown in the context API
docs.
|
|
Now you can choose the state of texture (as a filter and repetition) to
render it.
This is important as the original state is very limited.
|
|
Since recently it's possible to query the active file (as object, not
just the name), but it's quite useful for scripting to have access to
all selected files.
This introduces `bpy.context.selected_files`, returning a list of file
objects representing files in the File Browser.
|
|
There were requests to be able to track the file selection in the File
Browser. Just using the file name for that wouldn't if the file browser
has the recursive display enabled. File names could be duplicated then.
So expose the entire path relative to the currently displayed directory.
|
|
|
|
Names describe better what will be applied. Previous names were
extracted from the original code, that weren't accurately named.
|
|
|
|
|
|
Avoid having to include bpy_rna.h for enum utility functions,
recently added to idprop_py_ui_api.c.
|
|
Useful for callers that need the string length.
|
|
Use BLI_str_quoted_substr_range instead of in-line
quote extraction to resolve:
- Bone names containing quotes caused flip to fail.
- Missing NULL check if a matching quote could not be found.
|
|
This is a similar funciton to BLI_str_quoted_substrN
that extracts the range of the quoted string
instead of allocating a new string un-escaped string.
|
|
Rely on BLI_str_quoted_substrN to detect if the prefix exists since
this function exists early there is no need to check before calling.
|
|
The code put the value from the "min" property into the "max"
value. This would have crashed if min was null and max wasn't.
|
|
Assigning a new value to an IDProperty with the Python API would free
the entire contents of the existing property, which unfortunately
happened to include the UI data. The fix is to extract the UI data from
the existing property before freeing its contents. An alternative
would be adding another argument to `IDP_FreePropertyContent_ex`, but
this solution is clearer and doesn't increase complexity elsewhere.
|
|
Objects also have a list of "bone" pose channels embedded directly.
These properties are user visible, so their UI data should be versioned.
|
|
|
|
This is stored internally and used as an integer, so there is no need
to convert it to a float for "as_dict". This was just an oversight.
|
|
|
|
When the same stroke was used as a driver variable, this could make this
stroke already tagged as built in the course of building driver
variables (via `build_gpencil`), but then important stuff from
`build_object_data_geometry_datablock` could be missed later on (because
both of these funtions use `checkIsBuiltAndTag`). Most importantly,
setting up operations such as GEOMETRY_EVAL would be skipped entirely.
`build_object_data_geometry_datablock` seems to cover greasepencil just
fine (does the same as `build_gpencil` and more). Proposed solution is to
remove `build_gpencil` entirely. In `build_id` it would then also call
`build_object_data_geometry_datablock` for `ID_GD` IDs. Now the covered
types that _call_ `build_object_data_geometry_datablock` match exactly
to what is covered _inside_ `build_object_data_geometry_datablock`.
Think this "duplication" of functionality was just overseen in
rB66da2f537ae8 [`build_gpencil` existed long before and said commit made
greasepencil a real object with geometry and such].
thx @JacquesLucke for additional input!
Maniphest Tasks: T88433
Differential Revision: https://developer.blender.org/D12324
|
|
All props of annotations are not animatable by design and opacity must be equal.
As the opacity is reused by gpencil objects, a new prop has been created in order to use different props for annotations and GP objects.
|
|
|
|
|
|
|
|
|
|
The do_color_management option was set, but never read.
|
|
Function wasn't used since we migrated to the new color management
pipeline. It is also not expected it would be needed in the current
design.
|
|
Crash introduced by {rB8e00db42961297facd521139762fe8c42042fc5c}, fixed
with a null check. Object can be null.
|
|
Image Editor
When changing to another texture paint slot, the texture displayed in
the viewport changes accordingly (as well as the image displayed
in the Image Editor).
When changing the active texture in the Node Editor though, only the
texture displayed in the viewport changes.
This was mentioned in T88788 and I am not 100% sure this is desired in
all scenarios (or at all), it should be seen in tandem of D11497. This
change makes it so that the Image Editor changes to the image we changed
to in the Node Editor (keeping them in sync).
If this is not desired in all cases, this could be made an option.
ref T88788
ref D11496
ref D11497
Maniphest Tasks: T88788
Differential Revision: https://developer.blender.org/D11498
|
|
active paint slot
When changing to another texture paint slot, the texture displayed in
the viewport changes accordingly (as well as the image displayed
in the Image Editor).
When changing the active texture in the Node Editor though, only the
texture displayed in the viewport changes.
This _can_ be confusing because you can end up painting on a texture
that you are not looking at in the viewport (so you dont have any
feedback whatsoever). Not 100% sure this is desired in all scenarios,
but this change makes it so that the active paint slot changes to the
one that uses the texture we chaged to in the Node Editor (keeping them
in sync).
If this is not desired in all cases, this could be made an option.
ref T88788
ref D11496
Maniphest Tasks: T88788
Differential Revision: https://developer.blender.org/D11497
|
|
Caused by lazy allocation of passes.
|
|
Caused by {rBf3bf87e5887c}.
When using a GPencil Time Offset Modifier, the bGPDlayer>actframe can be
NULL. This can be determined though, but above optimization commit
skipped getting the active frame in this case entirely (with the
intention to only get it if framenumbers did not match).
Now also call BKE_gpencil_layer_frame_get() if actframe is NULL in order
to fetch a valid one if present.
Maniphest Tasks: T91060
Differential Revision: https://developer.blender.org/D12355
|
|
Run into it when was re-working tiles in the Cycles X project.
Make sure the storage of highlighted tiles is emptied when the
render is finished or cancelled).
The error is only possible to happen if the engine did not do
something correct, but is still good to deal with such situations
more gracefully.
|
|
This was left over from when changing the image set the faces texture.
|
|
When the object display type was set to wireframe or boundbox the depth
buffer wasn't updated resulting in not visible weightpaint overlay.
Thanks to Demeter Dzadik for mentioning it.
|
|
Support axis constraints for the measure tool.
Press X, Y or Z to restrict the dimension to that axis,
it's also possible to toggle between orientations matching transform.
Reviewed By: campbellbarton
Ref D10872
|
|
This makes it possible to calculate orientation from functions
that don't have the context.
|
|
|
|
Many callers expanded a PointerRNA argument,
so add a version of these functions that takes a PointerRNA.
|
|
Assigning a shortcut to bone layers for example,
raised a Python exception when used.
|
|
Use context members instead of not working well or failing due to:
- Missing "path" functions (in the case of edit-bones).
- Paths containing names (in the case of sequence-strips or pose-bones).
While technically correct it's not useful for shortcuts or
menu items to lookup data by name.
|
|
Only append RNA_path_from_ID_to_struct to context attributes if those
paths resolve to ID types.
Also simplify creating RNA paths by adding utility functions:
- WM_context_path_resolve_property_full
- WM_context_path_resolve_full
Part of fix for T90723.
|
|
Selection was already accessible but not active.
Add utility functions:
- ANIM_nla_context_track to access the active track,
following the convention of ANIM_nla_context_strip.
- ANIM_nla_context_*_ptr versions of these functions,
needed to for creating context members to access the ID pointer.
Part of fix for T90723.
|
|
This function was not working if the window is partially out of screen space.
|
|
Math implemented in 929d7597b345 was incorrect, but also inconsistent
with previous behavior.
`SEQ_SPEED_STRETCH` should change length only when right handle is
moved. This is now documented in code.
|
|
API function `move_to_meta` should move strips without changing context
data like `MetaStack` that tells UI which meta strip should be
displayed and operated upon.
`SEQ_time_update_sequence` relied on `MetaStack` to update meta strip
content length. Instead of changing function `SEQ_time_update_sequence`,
use function `SEQ_time_update_meta_strip_range` directly. This is
because caller would have to be aware of parent meta strip that needs
update anyway.
|
|
|
|
This is an alternative to context.scene.sequence_editor.active_strip
which could be verbose, especially with additional None checks.
Part of fix for T90723, extracted from D12297.
|
|
Changes:
- line break
- enum highlighting
- better description
|