Commit Graph

39232 Commits

Author SHA1 Message Date
Julian Eisel
e6f4e62ea0 Cleanup: Remove unnecessary asset temporary ID consumer override
The override from 733e4d827a makes this one unnecessary.
2023-09-19 15:46:42 +02:00
Julian Eisel
733e4d827a Refactor: Use asset representation from context instead of asset handle
f6a6b27ac1 made the asset representation type available through context
wherever asset handle was previously. This moves us closer to replacing
the asset handle type.

Part of #102877 and #108806.
2023-09-19 15:43:56 +02:00
Campbell Barton
5815a00acf Fix duplicate items in edit-mesh select similar enum
The enum contained two instances of NORMAL & FACE,
prefix with VERT/EDGE/FACE for clarity.
2023-09-19 21:26:57 +10:00
Campbell Barton
82be70a95f Fix crashes for some operators poll functions in background mode 2023-09-19 21:19:20 +10:00
Campbell Barton
221182c204 Fix assert accessing bone collection enum
Enum functions shouldn't return null,
use rna_enum_dummy_NULL_items instead.
2023-09-19 21:09:27 +10:00
Sybren A. Stüvel
62639080bc Anim: armature edit mode, replace 'bone layers' operator with collections
In armature edit mode, replace the 'bone layers' operator with the 'move
to bone collection' operator. This operator now works in both pose mode
and edit mode, and is available with the 'M' hotkey in either mode.
2023-09-19 11:45:40 +02:00
Lukas Tönne
78315faf8f Fix #112490: Always draw socket icons in "hidden" nodes
In #112326 the socket visibility functions were updated to take the
open/closed state of panels into account for visibility of the socket
icon. However, in "hidden" (collapsed) nodes the panels should be
ignored entirely, drawing all sockets on the root level. This requires
looking at the node flags to determine socket icon visibility, so a
simple method of `bNodeSocket` is not sufficient.

This patch moves the more complex visibility queries for sockets into
`bNode`, where both node and socket flags can be accessed. These should
be used for actual visibility rather than the plain flag accessors on
`bNodeSocket`.

Renamed `is_visible_or_panel_closed` back to just `is_visible`, the
other `is_visible` variant is now integrated in `bNode::is_socket_drawn`.

Pull Request: https://projects.blender.org/blender/blender/pulls/112520
2023-09-19 10:47:21 +02:00
Campbell Barton
097b97518c Fix crash running "Operator Cheat Sheet" 2023-09-19 17:27:42 +10:00
Campbell Barton
6b1b41bbd6 Fix #112541: Tooltip for "Set Tool by Name" crashes in operator search 2023-09-19 16:16:17 +10:00
Campbell Barton
085b094f18 Cleanup: use const arguments & variables 2023-09-19 11:09:20 +10:00
Sybren A. Stüvel
e59944dba4 Anim: armature edit mode 'select by bone color' operator
In the armature edit mode 'select similar' operator, replace the 'select
by same bone group' operator with 'select by same bone color'.
2023-09-18 18:06:06 +02:00
Sybren A. Stüvel
d5329eeea2 Anim: armature edit mode 'select by bone collection' operator
In the armature edit mode 'select similar' operator, replace 'select by
layer' with 'select by bone collection.
2023-09-18 18:06:06 +02:00
Sybren A. Stüvel
c230c52626 Anim: implement 'Select Grouped' by bone color
The pose mode 'Select Grouped' operator can now select by bone color.
This compares either the theme palette index, or the full custom color.
In other words, if custom colors are visually very similar but binary
not equal, they will be treated as different.

The last bytes of the custom colors (so `solid[3]`, `active[3]`, and
`selected[3]`) aren't used for these comparisons, as the values are
inconsistently either 0 or 255 depending on how the color was set. There
is no way to influence this with the color picker in the GUI, and AFAIK
the alpha channel isn't used for drawing either.
2023-09-18 18:06:06 +02:00
Sybren A. Stüvel
e41fbfd6e9 Anim: add 'select grouped: bone collection' pose mode operator
Add 'Bone Collection' to the 'Select Grouped' operator in pose mode.
This removes the 'Same Layer' option, and replaces it with 'Same Bone
Collection'. It selects all the bones that are in the same collections
as the active bone.

When there are multiple armatures in pose mode, the bone collections are
matched by name.
2023-09-18 18:06:06 +02:00
ChengduLittleA
34877ec38b Fix #112083: Loop cut requires GL only in interactive mode
Loop cut operator should only require OpenGL in interactive mode, this
makes it possible to run background python script calling the operator.

Thanks for the help from Campbell Barton (@ideasman42)

Pull Request: https://projects.blender.org/blender/blender/pulls/112121
2023-09-18 15:45:16 +02:00
Sybren A. Stüvel
7be628b396 Anim: bone collections: make the "(de)select bones" work on linked arms
The "(de)select bones in collection" operators only change the selection
state on the pose (when in pose mode), and thus should be able to work
even when the armature (which contains the bone collections) is read-only.
2023-09-18 14:48:34 +02:00
Sybren A. Stüvel
38871b9728 Anim: (de)select bones in collection, remove 'name' operator property
Simplify the "(de)select bones in collection" operators by removing their
'name' property. They now only operate on the active bone collection. This
means the poll function can be more specific, making the enabled/disabled
state of the buttons more sensible.
2023-09-18 14:48:34 +02:00
Sybren A. Stüvel
02659c0d01 Anim: merge bone collection assignment menus
Remove the Ctrl+G shortcut (remnant of the bone group assignment operator),
and change the 'Pose / Bone Collections' menu so that it handles linked
and overridden data properly. Shift+M now shows that menu too.
2023-09-18 14:48:34 +02:00
Sybren A. Stüvel
c6b553d57c Anim: Add bone collections to the outliner
Add bone collections to the outliner, underneath the Armature.

This basically follows the same approach as the bone groups (which were
removed from the outliner in the previous commit).
2023-09-18 12:14:54 +02:00
Sybren A. Stüvel
d7e9497a06 Anim: remove bone groups from the outliner
Bone groups have been replaced by bone collections. The data in DNA is
there just for versioning & forward compatibility, so the UI elements are
being removed from Blender 4.0.
2023-09-18 12:14:54 +02:00
Campbell Barton
f952e9768d Cleanup: add "_safe(..)" suffix to BLI_str_utf8_as_unicode_step
This makes it clearer other "safe" functions should be used in
combination with the resulting offsets.

Also correct doc-string which wasn't updated from the "or_error()"
version of this function.
2023-09-18 15:07:09 +10:00
Campbell Barton
ab4562738c Cleanup: add asserts, improve wmEvent::utf8_buf doc-string
- rna_Event_unicode_length would return -1 if utf8_buf wasn't a valid
  unicode sequence, while this shouldn't happen, assert and return zero
  instead of returning a bad length.
- Move comment on wmEvent::utf8_buf null termination to a doc-string.
2023-09-18 14:32:15 +10:00
Campbell Barton
ed552e9e4f Cleanup: add suffix to clarify unicode functions that return an error
There were enough cases of callers ignoring a potential the error value,
using the column width for e.g. to calculate pixel sizes, or the size in
bytes to calculate buffer offsets.

Since text fields & labels can include characters that return an error
from BLI_str_utf8_as_unicode, add the suffix to make this explicit.
2023-09-18 13:41:03 +10:00
Campbell Barton
a47f6ffa4d Cleanup: use booleans for text drawing & editing 2023-09-18 12:25:31 +10:00
Campbell Barton
b091195a8a Fix text editor cursor motion with tabs
- Moving the cursor to the beginning/end of the line didn't work
  with word-wrap enabled.
- Moving the cursor up/down without word-wrap enabled
  didn't maintain the column.

Resolve using column conversion functions with tab support.
2023-09-18 12:11:07 +10:00
Campbell Barton
66028c8c97 Fix crash converting spaces to tabs
The cursor & selection weren't updated after converting between tabs
& spaces, meaning they could be invalid (in the middle of a UTF8 byte
sequence or out of bounds).

Resolve by storing the column and restoring it afterwards.
2023-09-18 12:11:06 +10:00
Campbell Barton
108dad4e52 BLI_string: prevent buffer overflow for BLI_str_utf8_offset_* functions
Strings that include Latin1 encoding or corrupt UTF8 byte sequences
could read past the buffer bounds (stepping over the null terminator).

Resolve by passing in the string length.

Other changes to support non-UTF8 byte sequences:

- BLI_str_utf8_offset_{to/from}_index were accumulating
  the UTF8 offset without accounting for non-UTF8 characters
  which could cause a buffer underflow or enter an eternal loop.

- BLI_str_utf8_offset_to_index would read past the buffer bounds if the
  offset passed in if it was in the middle of a UTF8 byte sequence.
2023-09-18 11:47:34 +10:00
Hans Goudey
2fac2228d0 Cycles: Use Blender headers to access geometry data, avoid copy
Since 34b4487844, attributes are always made mutable when
accessed from the RNA API. This can result in unnecessary copies, which
increases memory usage and reduces performance.

Cycles is the only user of the C++ RNA API, which we'd like to remove
in the future since it doesn't really make sense in the big picture.
Hydra is now a better alternative for external render engines.

To start that change and fix the unnecessary copies, this commit
moves to use Blender headers directly for accessing attribute and
other geometry data. This also removes the few places that still had
overhead from the RNA API after the changes ([0]) in 3.6. In a simple
test with a large grid, I observed a 1.76x performance improvement,
from 1.04 to 0.59 seconds to extract the mesh data to Cycles.

[0]: https://wiki.blender.org/wiki/Reference/Release_Notes/3.6/Cycles#Performance

Pull Request: https://projects.blender.org/blender/blender/pulls/112306
2023-09-18 02:50:09 +02:00
Campbell Barton
342ebeac09 Fix text editor word-wrap displaying characters with an unknown width
Characters with an unknown width (control characters for  e.g.)
caused word wrap not to work properly, the text cursor was out of sync
with the displayed text.

Use BLI_str_utf8_char_width_safe which is the convention for the
text editor.
2023-09-17 21:20:28 +10:00
Campbell Barton
0add567339 Text Editor: improvements to auto-close implementation
- Restore the selection if auto-closing a selection fails.
- Simplify auto-close selection by ordering the selection.
- Call text_update_line_edited on the selection when auto-closing
  a selection to ensure formatting is recalculated for the region.
- Internal changes needed to support multi-byte auto-closing
  although this is still limited to ASCII at the moment.
2023-09-17 17:17:34 +10:00
Campbell Barton
b9124d8a85 Fix text editor auto-close potentially auto-closing non-brackets
Entering non ascii characters would truncate the code-point to char
when passing it to text_closing_character_pair_get(), which could then
match bracket values. Resolve by checking the characters are ascii.
2023-09-17 17:17:33 +10:00
Campbell Barton
1cda66b911 WM: resolve transform triggering key-maps to be rebuilt
Since [0] modal transform in the 3D viewport caused key-maps to be
rebuilt by the event system. Creating a temporary copy for
ViewOpsData_Utility flagged the key-map as outdated.

This could crash (resolved by [1] - for the most-part), but would still
rebuild the whole key-map, adding unnecessary overhead.

This would also reset the KMI_EXPANDED flag, causing transform
to hide key-map items when using Blender with the key-map editor open.

Add a function to temporarily suppress key-map updates.
While not ideal, full support for temporary key-maps that behave
differently to user key-maps is a bigger project for something
that's only needed in one place.

[0]: 017d4912b2
[1]: 9a0eaa2062
2023-09-17 13:36:25 +10:00
Campbell Barton
edc47d3d5a Cleanup: split ID property access into get/ensure functions
- Add IDP_EnsureProperties,
- Remove create_if_needed argument from IDP_GetProperties.

Split access & creation so intention reads more clearly without
looking up function arguments.
2023-09-17 12:16:40 +10:00
Campbell Barton
e39940e255 Fix error from 106d2bb312
Swapped width/height for the image size.
2023-09-17 11:32:41 +10:00
Campbell Barton
e3444fd314 Cleanup: various non-functional C++ changes 2023-09-17 09:05:40 +10:00
Campbell Barton
106d2bb312 Cleanup: document ownership for uiTooltipField, add function attributes
- Document ownership.
- Make some arguments const.
- Use function style casts.
- Make width/height into a size[2].
2023-09-17 09:05:40 +10:00
Campbell Barton
c75a304b51 Cleanup: use lowercase ui prefix for enum, rename Color -> ColorID
Follow current conventions for types e.g. uiFontStyle, uiBlock etc.
Also rename UiTooltipColor to uiTooltipColorID since this isn't
storing the color.
2023-09-17 09:05:40 +10:00
Campbell Barton
7eae806dda Cleanup: format, spelling 2023-09-17 09:05:40 +10:00
Pablo Vazquez
fd6076ae3e UI: Add icons to Color Ramp context menu items
* Add icon to "Reset Color Ramp" (same used by Reset to Default Value)
* Add icon to "Flip Color Ramp" (sideways arrows, similar to invert
  vertex groups).
* Add separators after stops distribution operators, and before
  reset since they have pretty different purposes.
2023-09-17 00:31:47 +02:00
Harley Acheson
b3baeeaa32 UI: Fix Error in Custom Tooltips
Fix typo in ui_tooltip_data_from_button_or_extra_icon introduced in
6453b00f44. Incorrect variable referenced - but_label.strinfo used
instead of but_tip_label.strinfo.

Pull Request: https://projects.blender.org/blender/blender/pulls/112428
2023-09-16 00:25:42 +02:00
Harley Acheson
58435f25d6 Cleanup: Make format
Formatting changes resulting from Make Formatting.
2023-09-15 12:12:23 -07:00
Harley Acheson
6453b00f44 UI: Custom Tooltips with Optional Images
This adds an optional uiBut callback that allows creating a tooltip
line-by-line with specified style and color in any order. It also
allows adding images as well to create very informative tooltips.

Pull Request: https://projects.blender.org/blender/blender/pulls/105905
2023-09-15 21:06:30 +02:00
Harley Acheson
ee81a49bb2 Cleanup: Make format
Formatting changes resulting from Make Format
2023-09-15 10:42:40 -07:00
Leon Schittek
42f8b49581 Fix: Show modal keymap for operators called inside macros
Display the modal keymap in the status bar for modal operators that
are called within macros. Most notably, the keymap for the transform
operator is displayed when it's called as part of the duplicate,
extrude, or loopcut operators or when moving nodes.

Pull Request: https://projects.blender.org/blender/blender/pulls/108027
2023-09-15 19:33:20 +02:00
Bastien Montagne
0ce02355c1 I18N module: updates for transition to weblate.
Remove `es_ES` language.
Rename `uz_UZ` to `uz_UZ@latin`
Rename `zh_CN` to `zh_HANS`
Rename `zh_TW` to `zh_HANT`

Add support for lowercase chars in `country` part of the locale code
(although in the end it is not needed, since `boost::locale` backend
does not supports lowercase 'country' part in locales identifiers
currently) .

Related to https://projects.blender.org/infrastructure/blender-projects-platform/issues/65
2023-09-15 18:08:52 +02:00
Julian Eisel
728d47f3e4 Asset shelf: Use asset representation for asset shelf BPY methods
Changes the `asset_poll()` and `draw_context_menu()` methods for asset
shelves to use the `AssetRepresentation` type, instead of `AssetHandle`.
The latter should be removed, so it's better to avoid using it in the
asset shelf BPY to avoid future compatibility breakage. This is possible
now with d421ebac5e.
2023-09-15 16:17:44 +02:00
Sybren A. Stüvel
9580c377fe Cleanup: Anim, add some more comments to the bone collection system
Add some TODOs and clarification in comments.

No functional changes.
2023-09-15 14:54:04 +02:00
Sybren A. Stüvel
89962977e5 Anim: only show editable bone collections in M/shift+M menu
When showing a list of bone collections in the M/Shift+M menus, only show
those bone collections that can be assigned to. Bone collections from
linked armatures are hidden, because they're read-only anyway.

It would probably be better to still show these read-only collections,
but not sure how that can be done with the current code.
2023-09-15 14:54:04 +02:00
Sybren A. Stüvel
24048ef05d Anim: allow assigning bones to added-in-local-override collections
Assigning & unassigning to the active collection works. Using named
collections is still untested.
2023-09-15 14:54:04 +02:00
Sybren A. Stüvel
347ffd6262 Anim: add support for renaming bone collections added by overrides
Add a flag `BONE_COLLECTION_OVERRIDE_LIBRARY_LOCAL` that's only set on
bone collections that have been overridden locally.
2023-09-15 14:54:03 +02:00