Commit Graph

391 Commits

Author SHA1 Message Date
John Kiril Swenson
d910fb88b0 VSE: Clamp strip handles to video/audio bounds
This initial commit properly clamps handles for video/audio strips, and
provides functionality to enable/disable the behavior for all strip types
(addresses #90280).

Toggling handle clamping is done with "C",
just like with the redesigned slip operator (#137072).

If a strip is not already clamped when you start moving its handles,
then clamping behavior is disabled starting out. This means no abrupt
clamp until you explicitly ask for it.

Transform logic was altered, fixing a few bugs:
- When initializing a transform, `createTransSeqData` would already
  create some clamping data for channels. This patch replaces it with
  `offset_clamp` (for unconditional clamping which cannot be disabled)
  and `handle_xmin/xmax` (for hold offset clamping, which is optional).
    - Collecting this data ahead of time is necessary for the double
      handle tweak case -- `flushTransSeq` only works one strip at a
      time, so we can't clamp post-hoc.
- In `applySeqSlideValue`, we apply `transform_convert_sequencer_clamp`
  before values are printed to the header, but let the unclamped values
  get flushed to the strips themselves. This is so that we can have the
  data later at the individual strip level to recalculate clamps.
  Otherwise, if transform values are clamped preemptively, then we have
  no idea whether strips are clamped vs. merely resting at their
  boundaries.

Note that currently, handle clamping is drawn identically to overlaps.

More information in PR.

Pull Request: https://projects.blender.org/blender/blender/pulls/134319
2025-07-16 06:16:19 +02:00
Sean Kim
24355500b5 Merge branch 'blender-v4.5-release' 2025-07-08 15:07:48 -07:00
Sean Kim
90ad735943 Fix #141623: Subdivision Set operator occasionally fails when adding modifier
Introduced in ee67c098d9

Pull Request: https://projects.blender.org/blender/blender/pulls/141634
2025-07-09 00:00:17 +02:00
Pratik Borhade
a559fb833c Tree View: Multi-select support
Add support to select multiple tree view elements (similar to outliner/anim channels)
`Ctrl + LMB` to select+activate element under the mouse
`Shift + LMB` to select all items between active and clicked item.

As of now, only Shape key has support for multi-select. (straightforward to include
other views). `KEYBLOCK_SEL` flag is used for storing selection state.

Pull Request: https://projects.blender.org/blender/blender/pulls/138979
2025-07-04 15:45:18 +02:00
Harley Acheson
bb895e13e2 Merge branch 'blender-v4.5-release' 2025-07-03 10:34:17 -07:00
Harley Acheson
d92523d0b4 Fix #138909: Use space_type_set_or_cycle for Ctrl-Tab in Graph Editor
Our keymap, when pressing Ctrl-Tab in Graph Editor, currently changes
the space type to "Dope Sheet" with "wm.context_set_enum". But this
method is not aware of subtypes. This PR instead changes the space type
using "screen.space_type_set_or_cycle". While in Timeline it will go to
Graph Editor, press again to go back to Timeline.  While in Dope Sheet
you go to Graph Editor, press again to go to Dope Sheet.

Pull Request: https://projects.blender.org/blender/blender/pulls/141360
2025-07-03 19:32:31 +02:00
Guillermo Venegas
3f9d9c9e6b UI: Add Move to Collection Menu
This replaces the Move/Link to Collection operator popup with a menu,
allowing this to be able to search collection to move and to expand
this menu from other menus.
This removes the expected memory leak of using the popup.

Move to Collection operator now uses `session_uid` to identify
target collection, this now allows to target a collection from another
scene, however, is not exposed throw UI)

Resolves #133772

Pull Request: https://projects.blender.org/blender/blender/pulls/140883
2025-07-02 16:21:36 +02:00
Pratik Borhade
a7b4137f3e UI: Tree View: Click select operator
Part of !138979
With that, it is now possible to configure specific key for
selection in tree view.

Pull Request: https://projects.blender.org/blender/blender/pulls/140033
2025-06-28 13:41:51 +02:00
quackarooni
28bd5a7832 Fix #140933: "Group Socket Node" theme property left unset
The theme property for group socket nodes was set to `#000000` for
default themes, which looked out of place against the other node
header colors. This patch adds colors to both the Blender Dark & Light
themes that should resemble their counterparts before 2ea3cd2188.

Colors:
Blender Dark - `#1d1d1d`
Blender Light - `#3d3d3d`

Pull Request: https://projects.blender.org/blender/blender/pulls/141011
2025-06-26 15:05:37 +02:00
Pratik Borhade
59a971294c UI: Collection visibility number shortcuts for the Outliner
Move number shortcut keys for isolating collection to outliner space.
Resolves #140651

Same operator is also used in the collection list from the view3d N-panel,
video demonstration includes that part as well to ensure it is unaffected.

Pull Request: https://projects.blender.org/blender/blender/pulls/140653
2025-06-26 12:04:48 +02:00
Ramon Klauck
53578d33ae VSE: Keyframing in Preview
This PR makes it easier to add keyframes for strips in preview.
This works same way as in 3D viewport, using keying sets. Pressing I
key adds keyframe to default keying set, pressing K dhows menu with
available keying sets. For VSE, location, rotation and scale properties
are available for now. Other existing keying sets are not valid for
VSE.

Deleting keyframes and potentially adding more keying sets will be
handled in separate PR.

Pull Request: https://projects.blender.org/blender/blender/pulls/140107
2025-06-25 02:56:55 +02:00
Sean Kim
4434a30d40 Paint: Make UnifiedPaintSettings a per-mode instead of scene-wide value
Historically, the `UnifiedPaintSettings` struct has been used to
provide users the ability to set brush values at a scene level. Examples
of such attributes are the brush size, strength, and color, to name a
few.

Instead of these values being shared across all of the grease pencil,
mesh painting, and curves sculpting modes. This commit migrates the
data to the `Paint` struct, meaning that each individual mode (e.g.
Sculpt, Vertex Paint, Grease Pencil Draw) now has the ability to change
these values without affecting other modes.

While this change is large, the majority of the work is simply
refactoring access to the `UnifiedPaintSetting` struct. to ensure the
correct property is being retrieved.

Resolves #134077

Pull Request: https://projects.blender.org/blender/blender/pulls/139766
2025-06-21 02:35:14 +02:00
Pablo Vazquez
695a03d9f4 UI: Theme: Add text color settings to panels
Recently, panel styling was moved to a global setting instead of being
per-editor. However, the panel's title and labels inside still rely on
the per-editor region's text and title settings.

Move panel title and text colors to the global "Panel" settings.

See PR for details and screenshots.

Part of #135192

Pull Request: https://projects.blender.org/blender/blender/pulls/140726
2025-06-20 21:03:08 +02:00
Pablo Vazquez
dbba0baa03 Fix: Theme: Properties editor missing region style
The Properties editor does not have a sidebar, but it has a navigation bar.
Missed this in fe0fe0a5ed

Pull Request: https://projects.blender.org/blender/blender/pulls/140728
2025-06-20 18:58:00 +02:00
Pablo Vazquez
c88507c45e UI: Theme: Update Light theme with new settings
It was missing the latest region space changes.
2025-06-20 16:27:55 +02:00
Pablo Vazquez
dd43eae0d3 UI: Theme: Remove NavBar/Execution regions colors
Remove barely used theme settings for "Navigation Bar" and
"Execution Region".

These properties were only used in two areas, which already had a good
candidate to be replaced with.

Visually it should look exactly the same by default.

Part of #135192, simplifying and cleaning up theme settings.

See PR for details and screenshots.

Pull Request: https://projects.blender.org/blender/blender/pulls/140352
2025-06-18 19:01:28 +02:00
Pablo Vazquez
11e729219a UI: Theme: Add Asset Shelf global styling
Simplify theming by making Asset Shelf style global, not per editor.

See PR for details and screenshots.

Part of #135192

Pull Request: https://projects.blender.org/blender/blender/pulls/140553
2025-06-18 14:54:42 +02:00
Pablo Vazquez
2ea3cd2188 UI: Theme: Make nodes use the exact theme color
Make node headers (or body when collapsed) use the exact theme color
set for that node type, instead of a hardcoded blend between it and the
node backdrop.

This can result in unreadable combinations, but allows more
flexibility and it is consistent with the rest of Blender.

Both dark and light theme defaults have been updated.

See PR for details and screenshots.

Pull Request: https://projects.blender.org/blender/blender/pulls/140481
2025-06-16 18:34:29 +02:00
Campbell Barton
7ae8e18f0b Cleanup: rename preferences for NDOF sensitivity
Clarify the terms for NDOF translation & rotation sensitivity.
Previously translation was named: "ndof_sensitivity" making it
sound like it would control rotation as well.
2025-06-14 16:35:51 +10:00
Sean Kim
5be3b6acdb UI: Expose 'Region Toggle Pie' without Developer Extras
As discussed recently in the Sculpt, Paint & Texture module meeting.
There is a desire to move this setting out from being hidden behind
developer extras so that it can be discovered more easily.

Unlike other experimental options, the ability to toggle this setting is
still present in release builds.

Pull Request: https://projects.blender.org/blender/blender/pulls/140169
2025-06-12 21:05:25 +02:00
Pablo Vazquez
7818082d02 UI: Theme: Add global style for panel colors
Move panel header, panel background, and sub-panel background color
settings to be global, under `User Interface`, like other widgets.

Remove per-editor panel styling. This way users can edit the panel
colors once, and affect all panels.

See pull request for screenshots and details.

Pull Request: https://projects.blender.org/blender/blender/pulls/140295
2025-06-12 20:05:34 +02:00
Pablo Vazquez
e8735c3203 UI: Theme: Use tab widget colors for sidebar tabs
Make sidebar tabs use the `wcol_tab` widget colors, instead per editor
settings. Simplifying theme tweaking and the following benefits:

* Set colors in one place, affect all tabs.
* Support for text colors for inactive and active tabs.
* Support for the new `Outline Selected` property.
* In the future sidebar tabs could support `Shaded` style.

The tabs region background color remains per-editor, to be able to
customize it in a way that fits the surrounding colors (sidebar region,
header, or navigation bar background).

See pull request for screenshots and details.

Pull Request: https://projects.blender.org/blender/blender/pulls/140288
2025-06-12 19:09:23 +02:00
Clément Foucault
ceef9e0f01 Merge branch 'blender-v4.5-release' 2025-06-12 16:44:29 +02:00
Brecht Van Lommel
2f5c261e69 Fix: Remove missing Grease Pencil lasso selection operator from keymap
This was replaced by GREASE_PENCIL_OT_erase_lasso, and generates warnings
in logs.

Pull Request: https://projects.blender.org/blender/blender/pulls/140279
2025-06-12 16:32:42 +02:00
Pablo Vazquez
228c1d3baf UI: Theme: Add missing properties to Light theme
New theme settings were added recently.
2025-06-12 14:37:24 +02:00
Campbell Barton
dc83260f1a UV: split island select into a separate option, support for sync-select
Change island selection from being it's own selection mode,
along side vertex/edge & face modes, to a separate toggle.

This makes it possible to use sync-select without loosing functionality
as previously island selection didn't work when sync-select was enabled.
Now island selection supports sync-select although at the moment this
only works in face-select mode, when !138197 is merged this limitation
will be removed.

In practice this change is subtle, making it possible to toggle island
selection no matter which selection mode is currently active.

Details:

- The UI is mostly unchanged, this option is available
  in the same location in the header & menu as a toggle.
- The shortcut 4-key is kept, toggling instead of switching modes.
- Enabling island selection no longer isolates islands,
  it just acts on selection actions made after being enabled.
2025-06-12 07:09:46 +00:00
Sean Kim
c463860a82 Merge branch 'blender-v4.5-release' 2025-06-10 16:34:41 -07:00
Sean Kim
ee67c098d9 Fix #110879: Multires relative subdivide navigation subdivides mesh
Prior to this commit, the `object.subdivision_set` would prevent
actually applying a subdivision to a multires modifier when the relative
option was set. This is commonly accessed via Alt-1 / Alt-2 or D / Shift
D in Sculpt mode.

However, when the multires modifier did not already exist, pressing
these keybinds would still create the modifier and further subdivide the
mesh.

To fix this, this commit adds a hidden property to the operator:
`ensure_modifier` to indicate if the keybind should create the modifier
or not.

Pull Request: https://projects.blender.org/blender/blender/pulls/130254
2025-06-11 01:34:08 +02:00
Damien Picard
e1c9704108 VSE: Swap shortcuts for next and previous strip jump
Currently, jump to next/previous strip use page up and page down,
respectively. This seems backwards, as up should go back and down
should go forward, same as in a text editor.

This commit swaps the shortcuts for Blender default and
industry-compatible keymaps.

-----

This behaviour was introduced at the same time as the operator in c2f9cfb40a.

Pull Request: https://projects.blender.org/blender/blender/pulls/138339
2025-06-06 19:38:11 +02:00
Aras Pranckevicius
5ad6d42c83 IO: Remove Collada import/export
Removes Collada import/export (has been deprecated since 4.2).

Pull Request: https://projects.blender.org/blender/blender/pulls/139337
2025-06-06 08:38:57 +02:00
Falk David
d332411b21 Grease Pencil: Fill Tool: Draw fill guides
This implements the "boundary strokes" features (from 4.2 LTS).
To make it a bit more clear, the feature is now called "fill guides".
It uses the same `Alt`+`LMB` shortcut.

Fill guides are denoted by a `".is_fill_guide"` attribute set to `true`.
Otherwise they behave as normal strokes.

There is the `Clean Up` > `Remove Fill Guides` operator to remove
the strokes.

This also adds an option to the Fill tool to automatically remove fill
guides once a fill has been created.

Pull Request: https://projects.blender.org/blender/blender/pulls/139293
2025-05-31 12:23:39 +02:00
Hans Goudey
91803e130f Cleanup: Grammar: Fix uses of "for e.g."
e.g. stands for "exempli gratia" in Latin which means "for example".
The best way to make sure it makes sense when writing is to just expand
it to "for example". In these cases where the text was "for e.g.", that
leaves us with "for for example" which makes no sense. This commit fixes
all 110 cases, mostly just just replacing the words with "for example",
but also restructuring the text a bit more in a few cases, mostly by
moving "e.g." to the beginning of a list in parentheses.

Pull Request: https://projects.blender.org/blender/blender/pulls/139596
2025-05-29 21:21:18 +02:00
RedMser
24a2da62b3 Movie Clip Editor: Show preview range
Overall the goal of the PR is to show the preview range in the
clip editor's dopesheet and graph mode.

To accomplish this, some cleanup and refactor were needed:

- Clip editor had a nearly 1:1 copy paste of the timeline draw code,
  which has been replaced with `ANIM_draw_framerange`.
- Preview range draw code required `bContext`, which was only used to
  access scene. Now scene is passed explicitly, without need to know the
  context.
- The macro to access the preview range was removed. This is because the
  code is within `PRVRANGEON` check, so `PSFRA`/`PEFRA` were doing
  redundant checks.

Pull Request: https://projects.blender.org/blender/blender/pulls/138678
2025-05-28 16:28:38 +02:00
Harley Acheson
389b26d317 Fix #139393: Show Knife Tool Shortcut on Edit Mesh Menu
The menu item for Knife tool and what is bound to the "K" differ by
some properties so it does not show the shortcut on the menu. Those
properties are all defaults, so this PR just removes those from the
keymap. Everything works as now, but it shows the shortcut.

Pull Request: https://projects.blender.org/blender/blender/pulls/139457
2025-05-27 07:17:05 +02:00
John Kiril Swenson
6bd750bc01 Fix (unreported): VSE: Strips not deselected on press
With #128051, the default timeline tool changed to
a `sequencer.select` on press with no associated
properties (before, it had `deselect_all`).

This meant that retiming key selection broke (as
reported in #129892) and strips would only deselect
on release if clicking into empty space (due to a separate
keymap item in the global sequencer keymap).

This patch reverts 97e44901b4 while keeping its fix,
in favor of a more robust solution (just add `deselect_all`
to the keymap item properties in the box select tool).
2025-05-25 16:22:16 -05:00
Jacques Lucke
66e96bf134 Spreadsheet: support reordering columns interactively
This adds a new modal operator that allows reordering columns interactively.

It's triggered by dragging the column header. Edge panning while dragging the
column to the left or right of the region is supported. Scrolling with a
horizontal scroll wheel works too.

There are three new UI elements to help the user understand what is happening.
These three elements seem to be fairly standard in other spreadsheet software.
* The column that is dragged is highlighted in its original place.
* A "shadow" of that column stays attached to the cursor.
* A line indicates where the column will be inserted.

Note: The column order is not yet persistent when columns disappear temporarily.
That will be worked on separately.

Pull Request: https://projects.blender.org/blender/blender/pulls/139136
2025-05-20 18:19:24 +02:00
Sean Kim
9e1e9b0859 Paint: Add toggle support for brush.asset_activate
This commit adds a toggle functionality to the `brush.asset_activate`
operator that makes it behave similarly to the `paint.brush_select`
parameter of the same name.

When the operator has this option enabled, using the operator or
pressing the relevant key will either:
* Activate the specified brush and store it if the current brush does
  not match the specified brush
* Activate the previously stored brush if it exists.

This option is exposed in the keymaps and enabled by default for the
Sculpt Mask brush.

This allows, for example, users to press 'M' to switch to the mask brush
and then press 'M' again to switch back to their previously active
brush.

Partially addresses this RCS submission: [1]
[1] https://blender.community/c/rightclickselect/1VwZ/

---

### Notes
This commit does not currently clear the `AssetWeakReference` when switching paint modes.

Pull Request: https://projects.blender.org/blender/blender/pulls/138845
2025-05-16 23:25:45 +02:00
Pablo Vazquez
fcc6e022b1 Keymap: Use horizontal scroll wheel to pan in 3D Viewport
Use the horizontal scroll wheel for panning left/right in the
3D Viewport. Similar to how it is used in 2D Views.

Also add it to the industry compatible keymap, since it is
a pretty standard/basic navigation gesture.

Pull Request: https://projects.blender.org/blender/blender/pulls/138880
2025-05-16 14:57:47 +02:00
Jacques Lucke
734e3c5589 Spreadsheet: support double click to fit column width
This implements a new operator that automatically fits the width of a column to
its content. It's triggered by double-clicking on the column edge in the header
row. This is common functionality in other spreadsheet software.

Pull Request: https://projects.blender.org/blender/blender/pulls/138924
2025-05-15 20:57:37 +02:00
Jacques Lucke
578f935170 Nodes: support changing attached frame while transforming nodes
Currently, removing a node frame a frame is rather annoying. The `alt+P`
shortcut is hard to reach and probably not very intuitive. Furthermore, often
one only notices that one wants to remove a node from a frame after starting to
move the node. So one would have to put the node back down, detach it from the
frame and then start moving again.

This patch simplifies this entire process by adding a new shortcut that can be
used while dragging nodes. When `F` is pressed, the selected nodes are detached
from their parents. Alternatively, if the nodes are detached already, they may
be attached to the frame under the cursor.

Pull Request: https://projects.blender.org/blender/blender/pulls/138650
2025-05-15 20:54:29 +02:00
Jacques Lucke
8ec093a2d8 Nodes: new operator to simplify adding named frames
Currently, the steps required to add a named frame in the node editor are quite
cumbersome:
* Press ctrl+J, which is hard to reach.
* Press F2, to rename.

This is bad, because frames are a key part of making node trees understandable.
Therefore, we should lower the barrier to adding them as much as possible.
Additionally, named frames help significantly more with readability. Therefore,
it's good to lower the barrier to adding those even more. Of course it's still
possible to click in empty space to avoid having to give a frame a name.

This patch adds a new operator to join nodes in a named frame. When triggered,
it adds the frame and automatically opens the rename menu to set the name.

Keymap changes:
* Remove `ctrl+J` which was creating a frame without label.
* Move existing functionality of `F` key to `J` key
  (including `shift+F -> shift+J`).
* Use `F` for this new operator to create a named frame.

Pull Request: https://projects.blender.org/blender/blender/pulls/138390
2025-05-15 20:51:54 +02:00
Jacques Lucke
afd760f2b7 UI: Ghost: support horizontal scrolling for 2D editors
Some mice have an additional horizontal scroll wheel. This patch adds support
for receiving such events. By default it is used to scroll 2D editors left and right.

I originally developed this because I was missing it in the spreadsheet, but it
seems to be useful in many other editors too.

It's supported on Linux (Wayland), Windows and macos.

Pull Request: https://projects.blender.org/blender/blender/pulls/138758
2025-05-14 13:33:10 +02:00
Jacques Lucke
db7b5a480b Spreadsheet: make column widths editable
Currently, there are two main annoying problems with columns widths in the
spreadsheet:
* The initial column width is often too small. This is especially noticeable
  with the ID integer attribute.
* There is no way to change the column width.

This patch improves both of these aspects. The initial column width will now be
derived from the content of the spreadsheet. This initial width is then stored
in DNA to make it editable and to avoid having to recompute it on each redraw.
Furthermore, there is a new modal operator to change the width of a column.

Pull Request: https://projects.blender.org/blender/blender/pulls/138657
2025-05-13 17:47:02 +02:00
Richard Antalik
4a11be2656 VSE: Add option to translate pivot point
This feature allows you to change postion of origin/pivot for images
without changing their position.

It is implemented as property of transform operator. It is activated
by pressing `Ctrl + .` shortcut.
Move Origin item was also added to transform menu.

Origin can be snapped to 3x3 grid on strip image. This represents
most usual anchor points.

Ref: #134251
Pull Request: https://projects.blender.org/blender/blender/pulls/134206
2025-05-06 05:16:56 +02:00
Pratik Borhade
127fbaa0e6 Fix: Grease Pencil: Change split stroke shortcut
Change shortcut to `shift + v`. Currently it conflicts with set handle
type key-item.

Pull Request: https://projects.blender.org/blender/blender/pulls/138078
2025-04-29 11:35:18 +02:00
Urko Mauduit
2dc0a243d3 Fix #118806: Grease Pencil: Add "isolate layer" shortcut to Dope Sheet editor
Numpad * is being used for grease pencil object to isolate active layer
while inside edit/paint mode and mouse is over viewport. This PR
includes same keyitem into dopesheet keymap, so that shortcut
can be used in dopesheet editor context.

Pull Request: https://projects.blender.org/blender/blender/pulls/132054
2025-04-28 12:19:34 +02:00
Christoph Lendenfeld
9663d287fc Anim: merge keyframe jump operators
This merges the `GRAPH_OT_keyframe_jump` operator into the more generic
`SCREEN_OT_keyframe_jump` operator. (the former introduced with #108549)

The functionality of both operators is retained by running
a `switch/case` based on the editor type.
Doing so, we can filter out the Dope Sheet as well which fixes #93944
The `GRAPH_OT_keyframe_jump` is preserved, but when it is called,
it generates a warning stating it should not be used anymore.
It then calls directly into the `SCREEN_OT_keyframe_jump` to
ensure functionality doesn't drift apart.

Fixes #136176
Fixes #93944

Pull Request: https://projects.blender.org/blender/blender/pulls/137542
2025-04-24 18:01:05 +02:00
Pablo Vazquez
3d5eda688d UI: Theme: Fix inconsistencies in Light theme
Just small tweaks that should have been addressed when the editor
border theme setting was introduced.

* Fix: Match Top Bar and Status Bar headers with editor border.
* Fix: Properties Editor navigation bar and tabs outline tweak for
  readability.
* Use light color for editor outline/active.

Pull Request: https://projects.blender.org/blender/blender/pulls/137955
2025-04-24 13:59:06 +02:00
Pablo Vazquez
1cd2b34685 UI: Theme: Update missing properties in Light theme
Save over the light theme so new/removed properties get updated.

No major visual changes expected.
2025-04-24 13:02:13 +02:00
Mukhesh
541e2b3cdd VSE: Hide-Reveal strips operator in sequencer preview
This pull request adds options to hide and show strips in the Sequencer
Preview, using the same shortcuts. Included "Show/Hide" operators in the Strips
menu of preview mode. It only works on strips that are visible in the preview
at the current frame. The Unmute operator now shows all hidden strips in
the preview at the current  frame, since it's not possible to select hidden strips
in sequencer preview.

See video in PR description.

Pull Request: https://projects.blender.org/blender/blender/pulls/137781
2025-04-22 08:18:21 +02:00