Commit Graph

39369 Commits

Author SHA1 Message Date
Harley Acheson
5ccb289ef7 Fix #112642: Anchor Word Start For Double-click Word Select
In Interface text inputs, when double-clicking to select a word, set
the "initial selection position" to the beginning of the word. This way
you can continue to select forward by dragging before releasing mouse.

Pull Request: https://projects.blender.org/blender/blender/pulls/113037
2023-09-29 00:27:58 +02:00
Julian Eisel
31e1a32378 Fix 1 pixel overlap in tool or asset shelf header background drawing
When the tool settings or asset shelf header would draw with some
transparency, the separator line between regions would visibly overlap
the background behind buttons, which looked unpolished. Ensure there is
no overlap (but also no gap, which became visible after accounting for
the separator line in the background drawing).
2023-09-28 19:30:05 +02:00
Julian Eisel
b82f3e90ca Fix #112985: Outliner header context menu shows asset operators
The Outliner exposed its context to the header as well which makes some
operators available there. While technically this is all fine, it's a
bit odd to the user, since they don't expect data-editing operations
when right clicking on a header that itself doesn't list data. Instead
only expose the Outliner context in the main region.
2023-09-28 16:19:38 +02:00
Sybren A. Stüvel
fff9da576c Anim: add overview of bone collections to bone property panel
Add an overview of those bone collections the active/pinned bone is
assigned to.

This overview was originally there, showing the armature layers and the
bone group. This is now replaced by a list of the bone's collections. The
only possible interaction is unassigning the bone & toggling visibility
of the bone collections.
2023-09-28 15:52:45 +02:00
Philipp Oeser
cd557f0636 Fix: remove non-functional choice of weightpaint mode from lattices
Lattices would give the choice of going to weightpaint mode (which would
fail immediately because of `vwpaint::mode_toggle_poll_test`) because it
was marked as a compatible mode in `ED_object_mode_compat_test`.

I dont think this was ever supported properly, why this was marked as a
compatible mode is unknown (I stopped tracing git history at
deebf4f8f0).

Even if it was at some point, weightpaint mode nowadays is totally
depended on Mesh, so seems better to just remove it from Lattices.

Pull Request: https://projects.blender.org/blender/blender/pulls/112411
2023-09-28 15:43:50 +02:00
Sybren A. Stüvel
6d0e6f0f3e Anim: remove pose.bone_layers operator
Remove the obsolete `pose.bone_layers` operator, it's been replaced by
bone collections.
2023-09-28 14:20:24 +02:00
Philipp Oeser
16e4eeb9c0 Text objects: make CharInfo mat_nr zero-based
For text objects, the CharInfo mat_nr material index used to start at 1
(not at zero like for meshes or nurbs).
Code was mostly considering this (but not in all places, so material
index handling (removing/moving) could still go wrong.

As an alternative to !109746 (where it was made sure all places would
make the right assumption about mat_nr starting at 1), this PR now
changes the mat_nr to be zero-based.

This is more in line with other places handling material indices.

Versioning code is in place to properly convert old files.

Fixes #109491

Pull Request: https://projects.blender.org/blender/blender/pulls/112954
2023-09-28 11:46:52 +02:00
Lukas Tönne
9e79487c4f Fix #112588: Hide node panels when all sockets are hidden
The panel state gets a new flag to indicate if content is visible.
This gets updated in the visibility pass during node drawing.

Pull Request: https://projects.blender.org/blender/blender/pulls/113003
2023-09-28 11:24:48 +02:00
Campbell Barton
fc8b1411cd Cleanup: correct struct comments & help text for batch loading utility 2023-09-28 14:28:12 +10:00
Campbell Barton
881bb81763 UI: don't access recent-search.txt when disabled or in background mode 2023-09-28 13:42:29 +10:00
Hans Goudey
8e188ed55b Fix #112817: Nodes incorrectly "fully masked" after expand face sets
The expand operator reused `SCULPT_UPDATE_MASK` even when it
changed face sets, not the mask. That triggered incorrect behavior in
`node_update_mask_redraw` when there was no mask layer, which caused
nodes to be incorrectly marked as fully masked (and therefore optimized
out of later operations).
2023-09-27 17:11:35 -04:00
Hans Goudey
ca447ef542 Cleanup: Move sculpt mask update to a separate function
There's no reason to use a general "update vertex data" function,
that just confuses things.
2023-09-27 17:11:28 -04:00
Hans Goudey
2ec192a54a Fix: Extra menu separator with node tools in nested menus 2023-09-27 16:14:49 -04:00
Hans Goudey
772061d57f Fix: Missing node group name in non-asset node tool redo panel
We need to store the name as an operator property for this case.
2023-09-27 16:14:49 -04:00
Germano Cavalcante
fb556c75df Snap: New icons
For Blender 4.0 we decided to support individual icons for different
snap elements.

This was originally contributed by Erik Abrahamsson as !107054 with
some contributions by myself (Germano).

This set of icons being simple geometric symbols, that should be
familiar to CAD artists.

Note that Face and Volume share the same icon (circle). This is
deliberate since they communicate a similar functionality - are not
aimed at precision snapping the same way the vertex or perpendicular
are.

Also note that later we should also try to change the icons shown in
the snap menu to match the symbols that the artists see in the preview
window.

———

On the decision process:

The version currently in main (and rolled back here) was an initial
attempt of aggregating more information to the icons (e.g., by aligning
the icons to the target edges) while making them more suitable to
Blender. After presenting both options to (parts of the) community,
there was nothing fundamentally broken found with either option, though
options diverged over personal preference.

With that in mind, in the latest UI module meeting it was agreed to use
the original proposal then.

This final call was proposed by Dalai Felinto on his role of
commissioner (stakeholder) for the snap polishing tasks (#73993) and
designer for the related Snap Base design #66484.

———

This commit reverts commit 9c2e768f5b.

The reverted icons (referred originally as minimalistic icons) may be
proposed later as a separate theme option.
2023-09-27 16:59:16 -03:00
Damien Picard
1dfbc1ef83 UI: fix and improve a few messages
- "Tapping Alt...": remove newline in tooltip.
- Add descriptions for the From Left and From Right of the Shear
  Keyframes operator's direction items, instead of just "foo":
  - "Shear the keys using the left key as reference", and
  - "Shear the keys using the right key as reference".
- "Affects the value" -> "Affect", use the imperative.
- "Increase or decrease the value of selected keys \n
  in relationship to their average"
  -> "Scale selected key values by their combined average":
  remove the newline and rephrase the unclear description. New
  description by Harley Acheson.
- "Redefine equalizer graphs": this is an operator name, it should be
  title case.
- "USD Skeleton Import" warning: inconsistent whitespace.
- "%s: Joint weights and joint indices size mismatch size mismatch for
  prim %s": remove duplicated "size mismatch".
- "USD export:  couldn't copy texture tile from %s to %s": remove
  duplicate whitespace, change "couldn't" to "could not" to respect
  the style guide.
- "Temp. Diff." -> expand the abbreviation to "Temperature Difference"
- "Registering node tree class:" do not use formatting just to reduce
  redundancy in a few messages, but write it explicitly each time.
  This is more legible, and much better for translations.
- "Absolute time alignment while translating" -> "Absolute time
  alignment when transforming keyframes" because this applies to all
  transforms, not translation only.
- "# characters defines the [...] length of frame numbers" ->
  "define" (typo), "padding" is more specific than length.

Pull Request: https://projects.blender.org/blender/blender/pulls/112975
2023-09-27 21:29:02 +02:00
Julian Eisel
5017767e11 Fix tools header background aligns wrong if region is flipped to bottom
The region background draws rounded corner so it looks more or less like
a tab coming out of the region above/below. So this needs to change
together with the region alignment.
2023-09-27 19:55:11 +02:00
Hans Goudey
8774b20477 Fix #112961: Crash marking Collection as an Asset
An ID type's asset type info may be null.
2023-09-27 13:47:10 -04:00
Brecht Van Lommel
488469e7c5 Fix excessive padding at bottom of nodes with panels
After refactoring in 2f1b8f59e3.
2023-09-27 19:05:41 +02:00
Iliya Katueshenock
462010c61a Fix #112439: Don't allow hiding sockets of Reroute node
Reroute node consists only of a socket, it has no body.
Don't allow hiding sockets of reroutes anymore, since it could make the
node invisible or prevent links from being connected to it.

The versioning ensures that the sockets on reroute nodes are not hidden.

Pull Request: https://projects.blender.org/blender/blender/pulls/112965
2023-09-27 18:42:46 +02:00
Hans Goudey
03f6fe81b2 Fix: Missing node asset unassigned non-asset label
The label should be displayed when there are no assets too.
2023-09-27 10:07:15 -04:00
Julian Eisel
ff78d33bb4 UI: Draw Image editor tool header transparent with button background
Same as 55eaa755e3, but for the Image Editor, since this should be done
consistently for all editors using tool headers with region background.
2023-09-27 15:48:20 +02:00
Hans Goudey
9e495c5b06 Geometry Nodes: Store tool group in a separate editor property
This enables switching back and forth between the modifier and tool
contexts of the geometry node editor without losing the assigned tool
node group.

See #101778

Pull Request: https://projects.blender.org/blender/blender/pulls/112926
2023-09-27 15:47:22 +02:00
Falk David
4f617bc728 Fix: Expose GPv3 RNA only in experimental
The `blender-v4.0-release` branch would not build because some parts of grease pencil v3 were still exposed when experimental features are disabled.

This is hiding the relevant parts behind `#ifdef WITH_GREASE_PENCIL_V3` to make sure they are only built when the experimental features is enabled.

Pull Request: https://projects.blender.org/blender/blender/pulls/112953
2023-09-27 15:46:18 +02:00
Julian Eisel
7ec7dac860 Fix background drawing in tool header after changing tools
After changing tools (and possibly other context), the buttons section
background drawing would be broken for one redraw, so the full region
would be drawn with a background, rather than just behind the button
boundaries.
2023-09-27 15:45:39 +02:00
Julian Eisel
1cb3b83d33 Fix division by zero when split regions are hidden
Code has special handling so that only the first of two split regions
needs to be flagged as hidden. If the second one is also flagged that
can have some unwanted side-effects. Code to add the region resizing
edges relied on the region visibility flags though, rather than the
visibility check that respects this handling of split region hiding. So
code would run that is only intended for un-hidden regions.
2023-09-27 12:08:09 +02:00
Julian Eisel
55eaa755e3 UI: Draw 3D view tools header transparent with background behind buttons
Makes use of the new buttons sections feature used by the asset shelf to
draw a background behind buttons, but the reset of the region fully
transparent. The UI team agreed on this as a way to minimize dead space,
but also as a better way to communicate our click through feature (where
dead space in overlapping regions forwards events to the underlying
region). The region background theme setting only affects the
non-transparent part of the region, the rest is always fully
transparent. With region overlap disabled, the bar is fully opaque still.

Also see #112241.
2023-09-27 11:57:37 +02:00
Lukas Tönne
2f1b8f59e3 Cleanup: Nodes: Simplify drawing function
The node drawing function currently uses a stack-based traversal of
interface items. This is hard to read and for this purpose a recursive
function is easier to understand.

Pull Request: https://projects.blender.org/blender/blender/pulls/112860
2023-09-27 11:48:40 +02:00
Julian Eisel
1da08a5556 Asset shelf: Add asset library selector
Adds a menu to choose the asset library to use to the asset shelf
catalogs selector popover. This is consistent with the asset browser.
After talking to animators and some artists, this is likely something
they would want to have, since they don't always want all their assets
and catalogs to populate the asset shelf. It's also necessary for the
pose library UI to provide the same features roughly than the old one
(in the sidebar, before the asset shelf was introduced).
2023-09-27 11:31:21 +02:00
Julian Eisel
e3d4cf9b3d UI: Allow popover panels to register own notifier listeners
This is necessary to let popovers redraw when asynchronously loading
data. For example to display assets or asset catalogs as they get
loaded. Needed for the asset shelf catalog selector popover. Menus
already do the same to allow populating the menu with assets as they get
loaded.
2023-09-27 11:31:21 +02:00
Jacques Lucke
c8cc169d6f Geometry Nodes: add Inspection Index to Repeat Zone
Previously, it was only possible to inspect the data from the first iteration. That
applied to both, the viewer node as well as socket inspection. Now, there is a
new `Inspection Index` setting in the zone properties. It specifies which iteration
should be used by the inspection features.

In theory we could support features like counting the index from the end, but
that can be done separately as well, as it likely requires more UI.

Pull Request: https://projects.blender.org/blender/blender/pulls/112818
2023-09-27 11:09:39 +02:00
Philipp Oeser
0b1d2d63fe Allow setting weights (Ctrl+X) without paintmask enabled
Currently if there is no selection mode enabled the operator is disabled and greyed
out in the menu. The shortcut doesn't do anything, which can be unexpected and jarring.

With this PR the operator will work when no selection mode is enabled and in that case
fill the entire mesh using the Weight from the active tool.
This is then consistent with vertex paint mode and the "Set Vertex Color" operator.

So now remove the overly-strict `mask_paint_poll` poll (and replace with
more appropriate `weight_paint_mode_poll`).

NOTE: `mask_paint_poll` is now unused, could be removed
Pull Request: https://projects.blender.org/blender/blender/pulls/112413
2023-09-27 09:13:04 +02:00
Gilberto Rodrigues
7bc4478484 Clarify UV align operator behavior. Fix tooltips.
Clarify operator behavior of UV align operator, and fix the tooltips.
The tooltips were either vague/ambiguous,
or even wrong, see https://projects.blender.org/blender/blender-manual/issues/78557

Pull Request: https://projects.blender.org/blender/blender/pulls/112704
2023-09-27 08:43:56 +02:00
Campbell Barton
cdac2642ea Fix memory leak from loading files with legacy grease pencil palettes 2023-09-27 14:47:50 +10:00
Campbell Barton
b4d3bd134b Cleanup: quiet ASAN warning with invalid value for eButGradientType
-1 was assigned to eButGradientType which isn't a valid value,
add UI_GRAD_NONE to resolve this.
2023-09-27 14:28:47 +10:00
Campbell Barton
329b8176f7 Fix crashes drawing in the sequencer
Follow up to ee4c45c612.
2023-09-27 13:14:38 +10:00
Campbell Barton
ee4c45c612 Fix crash drawing in the sequencer when Scene::ed is null
Regression in [0], also order checks so creating a map of sequencer
strips is done after the flag check.

[0]: 86a0d0015a
2023-09-27 13:02:35 +10:00
Richard Antalik
86a0d0015a VSE: Improve retiming UI
Currently retiming is quite awkward, when you need to retime multiple
strips strips in sync. It is possible to use meta strips, but this is
still not great. This is resolved by implementing selection.

General changes:
Gizmos are removed, since they are designed to operate only on active
strip and don't support selection.
Transform operator code is implemented for retiming data, which allows
more sophisticated manipulation.
Instead of drawing marker-like symbols, keyframes are drawn to
represent retiming data. Retiming handles are now called keys. To have
consistent names, DNA structures have been renamed.
Retiming data is drawn on strip as overlay.

UI changes:
Retiming tool is removed. To edit retiming data, press Ctrl + R, select
a key and move it. When retiming is edited, retiming menu and
context menu shows more relevant features, like making transitions.
Strip and retiming key selection can not be combined. It is possible to
use box select operator to select keys, if any key is selected.
Otherwise strips are selected.
Adding retiming keys is possible with I shortcut or from menu.
Retiming keys are always drawn at strip left and right boundary. These
keys do not really exist until they are selected. This is to simplify
retiming of strips that are resized. These keys are called "fake keys"
in code.

API changes:
Functions, properties and types related to retiming handles are renamed
to retiming keys:
retiming_handle_add() -> retiming_key_add()
retiming_handle_move() -> retiming_key_move()
retiming_handle_remove() -> retiming_key_remove()
retiming_handles -> retiming_keys
RetimingHandle -> RetimingKey

Retiming editing "mode" is activated by setting `Sequence.show_retiming_keys`.

Pull Request: https://projects.blender.org/blender/blender/pulls/109044
2023-09-27 01:45:59 +02:00
Harley Acheson
b2b467cc8c Cleanup: Make format
Formatting changes resulting from Make Format
2023-09-26 14:10:32 -07:00
Harley Acheson
e64e39e3d0 UI: Change Overlay Text Size with Label Text Style
Text Overlays are currently hard-coded to 11 points. This allows them
to be set with Preferences / Themes / Text Styles, Widget Label.

Pull Request: https://projects.blender.org/blender/blender/pulls/112875
2023-09-26 23:07:29 +02:00
Hans Goudey
b49c84276c Geometry Nodes: Fix Support for extending nested menus with assets
The builtin asset catalog paths weren't properly updated after more
nesting was added to the geometry nodes add menu. This commit
resolves that and a few other issues extending menus like nested
menus in mesh edit mode. Unfortunately this requires some boilerplate
code duplicating the menu structure currently.
2023-09-26 17:01:50 -04:00
Hans Goudey
355ed0838c Geometry Nodes: Expose non-asset tools
Node tools are no longer required to be assets, and they aren't assets
by default anymore. Non-assets don't have catalogs for header menu
organization, so they are only exposed in the "Unassigned" menu, which
is now just an icon so it takes less spac, makes the connection to the
asset browser, and signals more that it's not the "final" place for a
tool. Tool node groups have fake user set by default, since they don't
have users. The "Is Tool" status of a node group is configurable in the
editor N-panel, just like the modifier status.

This is similar to af3461c387, and has the same check for
whether a node group is "local."
2023-09-26 17:01:50 -04:00
Hans Goudey
af3461c387 Geometry Nodes: Require modifier tag for add menu, show non-assets
Any geometry node group with the "Is Modifier" tag is exposed in the add
modifier menu. Local node groups that aren't assets are displayed in a
subsection of the "Unassigned" menu, as they are "asset wannabees"
that function similarly but aren't shared to other files.

Only modifier node groups can be assigned to the geometry nodes
modifier. Because of this, existing node groups are versioned to have
the tag if they have a geometry output.

Internally, this means the operator that used to only handle node group
assets has to also add local geometry node groups. That change isn't
so large though. The other changes are just UI, or changes to the
node group property poll functions.

Note: For assets, saving the file to generate asset meta-data may be
necessary for the versioning to affect the add modifier menu.

Pull Request: https://projects.blender.org/blender/blender/pulls/112918
2023-09-26 21:53:20 +02:00
Hans Goudey
2d19e345cd Cleanup: Missing includes and forward declarations in header 2023-09-26 15:39:32 -04:00
Jacques Lucke
ad169ba67a Geometry Nodes: support baking individual simulations
Previously, it was only possible to bake all simulations at once. This is great
for simple use-cases that, but in more complex setups one can have independent
simulations that should also be baked independently. This patch allows baking
individual simulation zones.

Furthermore, each simulation zone can now also have its own bake path and
simulation frame range. By default the simulation frame range is the scene frame
range, but it can also be customized on the scene or simulation zone level. The
bake path is generated based on the modifier bake path by default, but can be
set to another absolute or relative (to the .blend file) path.

The timeline drawing has been modified as well to be able to show more information
in the case when some simulations are baked and others are not. Instead of showing
a line for every simulation, it shows a condensed view of the important information
using at most two lines:
Is something baked? Is something valid or invalid? Also see #112232.

Pull Request: https://projects.blender.org/blender/blender/pulls/112723
2023-09-26 20:30:46 +02:00
Nathan Vegdahl
49eab72141 Fix #107030: return accurate action frame ranges from the Python API
This changes the `action.frame_range` Python API to return an accurate
frame range for actions.  Specifically, it was previously special-cased
to return a range with length 1 whenever the length was actually 0.  This
led to a bizarre situation where a real frame range of `[0.0, 0.2]` would
return that range as-is, but a real frame range of `[0.0, 0.0]` would
instead return a range of `[0.0, 1.0]`.

The new behavior simply always returns the real frame range.

The reason for the previous behavior was obscure: the relevant code was
also used internally in Blender's NLA system, and returning a zero-length
range could result in NLA strips getting infinite scale.  The code is now
separated out appropriately so that the NLA system still gets the
non-zero-length range, while the Python API for actions returns the real
range.

Pull Request: https://projects.blender.org/blender/blender/pulls/112709
2023-09-26 18:18:56 +02:00
Jeroen Bakker
4a78d7dc4c Fix 110976: Sequencer Scope Artifacts on NVIDIA 30/40 Series
This PR fixes an issue with the NVIDIA 3000/4000 series cards. The cause
might be that when blending is turned off and the fragment output has an alpha
of 0.0 the fragment might be discarded. This is a guess of course.

By setting the Alpha to 1.0 for scopes and enabling alpha blending when
drawing the meta data text seems to fix the issue.

Fixes #110976

Pull Request: https://projects.blender.org/blender/blender/pulls/112665
2023-09-26 17:29:59 +02:00
Pratik Borhade
9c20a29259 Fix #112904: Outliner: Bones appear in different places in different modes
c6b553d57c added the bone collection in
outliner. However, there is change in tree element order when switched
between pose and edit/object mode. Because order of tree building is
`edit bones -> bone collection -> pose bones`
To keep tree structure consistent between different modes, first draw
pose bone and then the ebone/bone collection.

Pull Request: https://projects.blender.org/blender/blender/pulls/112908
2023-09-26 17:26:26 +02:00
Julian Eisel
73460903fa Asset Shelf: Transparent asset shelf header with background for buttons
Draw the background of the asset shelf header fully transparent, with an opaque
background with rounded corners behind sections containing buttons. This
reduces the visual space consumed by the asset shelf, and makes the header
follow a tabbed folder metaphor better. Also, this works much better with our
click-through feature, where transparent parts of regions without buttons are
passed through the region under it (we might want to consider unifying code
here a bit).

The edge to drag for region resizing respects the transparent sections.
When there is little space between sections, the sections get merged so that
there are no small gaps in the bar.

Part of #107881.

----

Note that the core of this is implemented in a generic way, so this can be
reused for other regions.

Pull Request: https://projects.blender.org/blender/blender/pulls/112241
2023-09-26 17:12:37 +02:00
Sybren A. Stüvel
c524fbe623 Anim: Improve readability of channel colors in channel list
Draw anim channel colors as a little rectangle in the channel list,
instead of taking over the entire channel name background. This keeps
the channel names readable, regardless of the channel colors.

Channel colors are typically set via the bone colors, and since those
are chosen for visual contrast in the 3D Viewport, they aren't
guaranteed to also be a suitable background color for the channel list.
Because of this, it's no longer used as such.

The channel 'data' background (i.e. the keyframe area) is now drawn with
a consistent color, and much more subtle.

This also enables the 'Channel Group Colors' setting in the preferences
by default, as it is now way less obnoxious and invasive.

Design task: https://projects.blender.org/blender/blender/issues/69059
Reviewed-On: https://projects.blender.org/blender/blender/pulls/112861
2023-09-26 17:06:35 +02:00