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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
`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
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.
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
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
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
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
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
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.
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
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
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