Commit Graph

8699 Commits

Author SHA1 Message Date
Jacques Lucke
01f020ca23 Merge branch 'blender-v5.0-release' 2025-10-16 19:22:14 +02:00
Jacques Lucke
04fcc4126e Fix #147282: double clicking on value enters node group
This fix makes the enter-node-group operator pass through when interacting with a button.

The code is by @JulianEisel.

Pull Request: https://projects.blender.org/blender/blender/pulls/148133
2025-10-16 19:21:12 +02:00
Julian Eisel
2e76bb47bb Refactor: BKE: Move icon header to C++
Was trying to use a C++ type (`blender::Span`) in the header but
couldn't. I would rather not use a less safe raw pointer to a buffer.

Pull Request: https://projects.blender.org/blender/blender/pulls/148214
2025-10-16 17:45:26 +02:00
Julian Eisel
ba71402e24 Fix: Undefined behavior when using UI list or tree-view scrollbar
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.
2025-10-15 16:21:58 +02:00
Julian Eisel
f86c042724 Fix: Undefined behavior when using UI list or tree-view scrollbar
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.
2025-10-15 16:20:39 +02:00
Harley Acheson
eb80ed1dd5 Merge branch 'blender-v5.0-release' 2025-10-14 18:16:01 -07:00
Harley Acheson
75e06730a8 Fix #147684: Close Tooltips When Out of Menu Bounds
With #145523 it is possible to have a tooltip open on a menu or popup
and it will not go away when expected. This PR removes any tooltips if
you move out of the menu item bounds.

Pull Request: https://projects.blender.org/blender/blender/pulls/148099
2025-10-15 03:14:17 +02:00
Harley Acheson
4e4c7543dc Merge branch 'blender-v5.0-release' 2025-10-14 10:59:54 -07:00
Harley Acheson
8b726ad83d Fix #148030: Right Side Corner Zone Width Change
With #144591 it was not my intent to increase the width of the right-
side corner action zones when visible "Corner Handles" are enabled. It
is only the left side that gains the icon so making the right side
wider only interferes with other content. This PR just fixes this by
defining different widths for right versus left zones.

Pull Request: https://projects.blender.org/blender/blender/pulls/148076
2025-10-14 19:58:04 +02:00
Harley Acheson
d6dad498b6 Merge branch 'blender-v5.0-release' 2025-10-13 18:42:31 -07:00
Harley Acheson
1ae52b6bd0 Fix: Quick Tooltip Position Can Jiggle
Quick tooltips immediately show a word or two and then shows more
detailed information after a pause. It is possible to have these two
things shows at differing positions (vertically or horizontally) and
therefore jiggle. Some padding code uses the width and height and half
of a padding amount, which can result in differing values if the first
width or height is an odd amount but the second is even, or vice versa.
This happens quite infrequently and depends on the user scale. This PR
just replaces one line that does the padding in a way that results in
consistent values.

Pull Request: https://projects.blender.org/blender/blender/pulls/148019
2025-10-14 03:40:28 +02:00
Nika Kutsniashvili
75eaecf350 UI: Dope Sheet: Custom theme color for interpolation modes
Split the "Interpolation Line" theme property into three for each
interpolation mode, and use them accordingly. In the current theme
refactor, almost all theme properties of the dope sheet are getting
either removed (unused), or moved (shared). This decluttering opens up
the possibility to allow more theming, and let artists read the Dope
Sheet better.

## Avoiding Confusion

There's two "Bézier" interpolation types:
- Called "Bézier" in the interpolation type menu, and
- Called "Bézier" in the code, for the types that are labeled as
  **"Easing" and "Dynamic"** in the interpolation type menu.

Since this commit is about the interpolation lines, which are **not**
drawn for the former, **this PR only covers Constant, Linear, and the
latter form of Bézier interpolation types.**

Pull Request: https://projects.blender.org/blender/blender/pulls/144255
2025-10-13 18:01:21 +02:00
Harley Acheson
3ad589e973 Merge branch 'blender-v5.0-release' 2025-10-12 16:30:01 -07:00
Harley Acheson
6691529dcc Fix #147926: Incorrect Icon used for Generic Collection
We have icons that represent specific individual collections. like
Icon_Outliner_Collection for a default (uncolored) collection, and
Icon_Collection_color_x for ones with colors. For "collections" as a
general thing though we have icon_group. Sometimes we confuse the two,
for example the list of tabs to show in Properties uses a different
icon than the actual category icon. This PR fixes the complaint by
using the correct icon for each of these purposes.

Pull Request: https://projects.blender.org/blender/blender/pulls/147942
2025-10-13 01:26:16 +02:00
Campbell Barton
c4b2c1c19e Cleanup: spelling (check_spelling_*), trailing spaces in comments 2025-10-12 12:12:46 +11:00
Harley Acheson
64b4db4a12 Fix #147765: Padding of Quick Tooltips
Some tooltips pop up up instantly with just a word or two and then
expand later to show more information, for example for the Properties
categories. This type of tooltip is not considering padding when
clamping to the window bounds, making it possible for them to be
positioned in such a way that clips some content. This PR just adds
padding to the window bounds.

Pull Request: https://projects.blender.org/blender/blender/pulls/147835
2025-10-10 20:04:27 +02:00
Damien Picard
84fc90bb43 I18n: Extract many messages from ED_push_undo
This function is used to add undo steps. It includes a message, for
use in the Undo History menu. This label uses the "Operator" context
for translation.

This commit adds automatic extraction of two functions `ED_undo_push`
and `ED_undo_grouped_push`, as well as manual extraction for many
strings not declared in the function calls.

In order to extract those messages using the proper context, the
extraction logic had to be changed so that a custom context could be
specified. The regexes can now be either a pattern, or
a (ctxt_override, pattern) tuple.

Pull Request: https://projects.blender.org/blender/blender/pulls/147581
2025-10-10 16:01:35 +02:00
Lukas Tönne
2b01bbd73c Fix #147752: Button swap is missing custom tooltip callbacks
Tooltips could crash where callbacks receive the wrong argument.
This is because the swap function was missing the `custom_tip_func` callback,
but was swapping the callback argument.

Pull Request: https://projects.blender.org/blender/blender/pulls/147806
2025-10-10 15:37:55 +02:00
Damien Picard
331ac6157f Cleanup: I18n: Remove unused translation macros
The translated strings literals were empty.

Pull Request: https://projects.blender.org/blender/blender/pulls/147583
2025-10-09 12:09:58 +02:00
Richard Antalik
a82f3a0fe0 UI: Add tab filter popover to vertical tabs
This adds unobtrusive tab button for selecting displayed tabs to the
tabs region. The idea is, that this way, the filter is much more
discoverable than it being hidden in options popover. The button is
grayed out, when all tabs are visible.

To only draw arrow, is achieved by setting `UILayout.emboss` to `NONE`
or `NONE_OR_STATUS`

Pull Request: https://projects.blender.org/blender/blender/pulls/135132
2025-10-09 04:51:18 +02:00
Andrej730
dec032e12e Anim: Indicate Parent Inverse Matrix State in UI
Show the Parent Inverse matrix in the Object properties, Transform
panel. The matrix is shown decomposed as location/rotation/scale.

Pull Request: https://projects.blender.org/blender/blender/pulls/113364
2025-10-08 11:13:24 +02:00
Falk David
0c18c1cfc2 Anim: VSE: Add overlay to visualize scene strip range when using scene syncing
This adds an overlay to the animation editors to visualize the current scene strip
in and out points in the scene timeline when the `Sync Scene Time` option in
the sequencer is used.

* Adds an overlay toggle + panel to the dopesheet.
* Adds a new theme setting (for the overlay) under
  `Common` > `Animation` > `Scene Strip Range`.
* Adds the overlay drawing to the dopesheet.

Pull Request: https://projects.blender.org/blender/blender/pulls/146165
2025-10-07 17:34:47 +02:00
Pratik Borhade
ad04c9dfdf UI: Tree View: Active item focus
Adding new element or changing panel looses the focus on active
element. Now handled in this PR inside the function `scroll_active_into_view`.
Iterate all tree view elements then use the index of active to set the
`scroll_value_`.

Resolves #143930

See PR description for the video

Pull Request: https://projects.blender.org/blender/blender/pulls/143977
2025-10-07 07:55:03 +02:00
Harley Acheson
b11093306b UI: SVG Icons for Collection Colors
A test of using multi-color SVG icons in place of the current "vector"
(custom drawn) style we are using now. These use separate colors for
the box body versus outline, shadow, handhold. Colored by the theme
colors.

Pull Request: https://projects.blender.org/blender/blender/pulls/126307
2025-10-07 02:07:28 +02:00
Harley Acheson
5953ff318c UI: Add Preference for Menu Close on Leave
This PR changes the current behavior that closes menus that are open
when your mouse is moved out of its "safe" area (a bit wider than its
visible bounds). With this PR applied menus stay open unless you click
elsewhere, hover a neighboring menu, press escape, or select an item.
Although this PR turns off menu mouse leave, it also adds a preference
that can be used to turn it back on.

Pull Request: https://projects.blender.org/blender/blender/pulls/145523
2025-10-06 20:19:12 +02:00
Leon Schittek
dea345d287 UI: Nodes: Show custom color on muted nodes
Use the custom color even when nodes are muted, to keep them more
recognizable.
The muted state is still indicated by mixing in the background color
and making the node transparent.

Additionally this makes small tweaks so the header colors of muted
nodes are the same between the collapsed and uncollapsed state.

Pull Request: https://projects.blender.org/blender/blender/pulls/147349
2025-10-06 18:10:22 +02:00
Jacques Lucke
ceca413bcb RNA: add callback to support dynamic property ui name
This adds a new `PropertyRNA::name_func` property which is similar to the many
existing functions like `editable`, `get_default`, etc. It allows dynamically
getting a UI name for the property.

This is especially useful for node sockets, because those all have the same
hardcoded name "Default Value" which is not helpful. Since we already have
custom tooltips for sockets, this is mostly not visible to the user anymore. The
exception being menu sockets which draw the property name as title. Instead of
"Default Value", this patch makes it show the correct title.

Pull Request: https://projects.blender.org/blender/blender/pulls/147137
2025-10-06 10:40:05 +02:00
Pratik Borhade
bc5ab4526a Fix #146993: Select tree view elements in popup menu
It seems `ui_handler_region_menu/ui_handle_menu_event` doesn't handle
any events other than press/double-click as they return `WM_UI_HANDLER_BREAK`.
`KM_CLICK` event is not possible due to above case. i.e. clicked element
can't be set active inside `ui_handle_view_item_event()`. (Guess `HANDLER_BREAK` also
prevents from looping over keymap to find relevant keyitem pair to invoke the operator?
Didn't check in details). To fix this, add a condition that checks whether button is in
popup menu. If yes, force active the pressed button and keep the popup open.

Pull Request: https://projects.blender.org/blender/blender/pulls/147047
2025-10-03 12:43:42 +02:00
Jacques Lucke
b14b5a1aa0 Refactor: Nodes: move node tree interface panel to C++
The main goal is to simplify reusing this drawing code when drawing properties
for group input/output nodes. This is not implemented as part of this patch
though. The UI shouldn't change, except that the old code had an incomplete
`field_socket_types` list.

Pull Request: https://projects.blender.org/blender/blender/pulls/147231
2025-10-02 21:04:39 +02:00
Hans Goudey
a68d39e9d9 Cleanup: Formatting
Run `make format` after the library update in the previous commit.
2025-10-02 12:55:42 -04:00
Aras Pranckevicius
e4b4e7c308 Fix: Anim: Time display text labels drawn over one another
Regression in e65524382, where what should have been essentially
(window_width / text_width) became (window_width + 1/text_width)
which is not the same at all! What the code was trying to do is
((window_width + 1) / text_width)

Most easily visible in VSE template because it defaults to
MM:SS+FRAME display format, but could be seen in other
animation related windows.

Pull Request: https://projects.blender.org/blender/blender/pulls/147198
2025-10-02 14:22:05 +02:00
Christoph Lendenfeld
2ae953d7f5 UI: remove the Timeline
This adds versioning code that replaces any timeline with a
dopesheet where the footer is shown, AND it removes the
timeline from the menu options.

If the area is too small to show both, the footer and the
header then only the footer is shown.
This assumes that users created the small timeline
just for the playback controls

Any uses of `SACTCONT_TIMELINE` (except for versioning) have been removed.

part of #145577

Pull Request: https://projects.blender.org/blender/blender/pulls/147058
2025-10-02 09:44:53 +02:00
Philipp Oeser
116efa1b32 Fix #147120: UI: Status bar precision mode for Integer input fields
`ui_numedit_but_NUM` only uses the "reduced" `fac` from `ui_do_but_NUM`
in case the button is a float button.
So to clarify that in the UI, dont display the "Precision" in the
Statusbar for Interger buttons.

Pull Request: https://projects.blender.org/blender/blender/pulls/147125
2025-10-02 09:38:05 +02:00
Campbell Barton
8f548d19c1 Fix: alpha overflow when converted to bytes with SVG icon drawing
The SVG icon outline could be over 1.0 when hovering over icons in the
outliner. This was converted to bytes and set FontBLF::shadow_color[3]
which overflowed the byte range.

Clamp the alpha before passing to BLF SVG drawing.
2025-10-02 09:46:28 +10:00
Campbell Barton
b78c5fadf3 Cleanup: various non functional changes for C++ 2025-10-01 23:22:44 +00:00
Pablo Vazquez
193e5935d0 UI: Do not use TitleCase in tooltips
Also don't use "Use" for a boolean label.
Following the HIG.
2025-09-30 11:32:06 +02:00
Guillermo Venegas
083cc599f9 Fix: Wayland/IME accessing stale IME data
Guard IME data access to ensure stale IME data isn't used.

Ref !146834
2025-09-30 11:01:39 +10:00
Sean Kim
0f3c6da272 UI: Add preset curve buttons for curve mapping template
To support setting the custom `CurveMapping` to a well defined preset,
there exist a number of operators that are hardcoded to apply a
particular preset to a particular curve.

This commit begins to replace this functionality and make it part of the
template itself, allowing the preset to be applied to any curve. For
now, it only supports either positive or negative slopes, primarily for
the brush usecases.

The `brush.curve_preset` and `brush.sculpt_curves_falloff_preset`
operators are unneeded after this change and have been removed.

Notably, these preset controls have not been added elsewhere, they can
be added on a case by case basis in future commits by interested
modules.

Pull Request: https://projects.blender.org/blender/blender/pulls/146847
2025-09-29 20:11:29 +02:00
Hans Goudey
d75808fdf0 Fix: Node editor drawing stack use after scope
Caused by a bad conversion to StringRef in 950a2bb8a3.
Instead pass around StringRef since that's all that's needed by the UI code
anyway. And make the argument to the node socket drawing RNA function
clearer, previously it relied on the char pointer being first in StringRefNull.

Pull Request: https://projects.blender.org/blender/blender/pulls/146985
2025-09-29 17:24:50 +02:00
Guillermo Venegas
9aaefbab5b Refactor: Make layout resolve functions into virtual methods
Following to the uiLayout refactor, this converts each
layout resolve  function as virtuals methods, so `x_`,  `y_`,
`w_` and `h_` properties can become protected.

No user visible changes expected.

Pull Request: https://projects.blender.org/blender/blender/pulls/146185
2025-09-29 16:53:44 +02:00
Julian Eisel
eef971e377 UI/BPY: Remove grid layout for UI lists
The grid layout for UI lists wasn't used in practice from all we can
tell. It was badly maintained for a long time (bugs went unnoticed). I
think it was added for an earlier version of the asset UI design.

This was planned for removal in 5.0, see blender/blender#110461.

Usages in bundled scripts were already removed in efa8d942b8.

Pull Request: https://projects.blender.org/blender/blender/pulls/146656
2025-09-29 13:07:31 +02:00
Nika Kutsniashvili
1067112c11 UI: Theme: Remove "Active Spline" theme property
In 3D Viewport theme settings there is "Active Spline" property, which behaves weirdly.
Color of that property is multiplied to color of curve handles. Even though it says active,
it's multiplied in selected and unselected states, for all curves all the time.

That doesn't make much sense, has no real value, and ends up only causing confusion.
Having this property on anything but pure black means that whatever colors you choose
for curve handles in Preferences isn't actually what you're getting them. If color is set to
high-saturation color it completely washes away all colors and makes it difficult to differentiate
between handle types.

I think there is no reason for this property to exist, so this PR just removes that property.

Pull Request: https://projects.blender.org/blender/blender/pulls/145360
2025-09-29 12:27:16 +02:00
Casey Bianco-Davis
f8d2a3af38 Python: Rename bpy.types.GreasePencilv3 to bpy.types.GreasePencil
This renames python Grease Pencil type
from `bpy.types.GreasePencilv3` to `bpy.types.GreasePencil`.

Part of #125058.

Pull Request: https://projects.blender.org/blender/blender/pulls/146902
2025-09-29 12:25:23 +02:00
Damien Picard
950a2bb8a3 I18n: Use correct translation context for node socket in side bar
Node socket labels used their declared translation context in the
nodes themselves, but not in the editor side bar.

Pull Request: https://projects.blender.org/blender/blender/pulls/146731
2025-09-29 11:07:05 +02:00
Jacques Lucke
305304e16c Fix: Nodes: socket active status affects other sockets
Each socket is generally drawn into a separate row like in `draw_node_input`.
However, this row was not created when a socket had a custom drawing function.

This caused all properties of the Index Switch node to be grayed out in the
sidebar.
2025-09-28 17:46:23 +02:00
Pratik Borhade
8de2e6f9fb UI: Gray out labels for non-editable linked items
Similar to !145387, disable layout when rna property is non editable.
Let the widget code handle the theme of the label in
front of the non-editable property. Also do it separately inside
`v3d_object_dimension_buts` for transform properties of N-panel

Resolves #146290

Pull Request: https://projects.blender.org/blender/blender/pulls/146565
2025-09-28 07:06:21 +02:00
John Kiril Swenson
8e934e7af0 UI: Reduce text jumping for dynamic length values
Operators that use BKE_unit_value_as_string results in numbers with a
changing fractional part which frequently jumps around.

The issue became more noticeable with centrally aligned status text,
see !139507.

Address this by disabling stripping of trailing zeros for:

- `translate_dist_to_str`
  (used by object translation, extrude, rip region).
- Mesh bevel
- Inset faces
- Shrink/fatten
- Eyedropper depth sampling (e.g. in camera DOF)

Ref !140790
2025-09-28 12:36:01 +10:00
Sean Kim
9c7ace059a Refactor: Add name for curve map slope preset enum
Names the formerly anonymous enum as `CurveMapSlopeType`, converts it to
`enum class` and adds a specific backing type for the variable.

Pull Request: https://projects.blender.org/blender/blender/pulls/146840
2025-09-26 16:40:16 +02:00
Nika Kutsniashvili
eca7056cfe UI: Remove paint curve theme colors, use gizmo colors instead
3D Viewport and Image Editor had theme colors for paint curve handle and pivot.
Paint curves are one of the stroke methods for brushes, and are generally not
widely used. To simplify theming it's best to remove those four properties and
use other shared colors instead.

We could use common curve colors for them, but they don't have point color
and handle point color is black, so we would need to add one more property
anyway and it would look bad as well.

Instead, use gizmo primary and secondary colors. Technically, paint curves
can be treated as gizmos, because they're interactive widgets in the viewport.

Pull Request: https://projects.blender.org/blender/blender/pulls/146777
2025-09-26 13:03:55 +02:00
Julian Eisel
90f723bdd4 UI: Follow HIG for view item selecting/activating
Makes selecting/activating view items (tree and grid view items) behave
as wanted by the guidelines, consistent with many other editors:
https://developer.blender.org/docs/features/interface/human_interface_guidelines/selection/#select-tweaking

Noteworthy:
- View items activate on press again, not on release
- Pose library still only activates poses on click (releasing mouse
  before moving cursor), so dragging can be used to blend poses
- New: Clicking on empty space in a view deselects all
- Redundant activation in interface handlers code is removed

Pull Request: https://projects.blender.org/blender/blender/pulls/146569
2025-09-26 11:26:34 +02:00