Commit Graph

8007 Commits

Author SHA1 Message Date
Harley Acheson
7c3db55b29 Refactor: Simplify Block Re-centering
PR #129125 allowed the movement of centered dialogs, like About and
Splash, without them snapping back to their original positions. But
that change was more complex than necessary. This returns
interface_region_popup.cc to exactly as it was before any of this, and
interface.cc gets simpler too. In a nutshell recentering these dialogs
is a lot easier that seemed at first.

Pull Request: https://projects.blender.org/blender/blender/pulls/131464
2024-12-06 00:57:32 +01:00
Jacques Lucke
3bd79aaa78 Fix #121577: blank space in Group Output node properties 2024-12-05 13:11:22 +01:00
Harley Acheson
5d05c36fc7 UI: Fix Broken Menus after #129125
Copy and Paste error resulted in UI_block_end_ex
being called twice.  Remove the first.

Pull Request: https://projects.blender.org/blender/blender/pulls/131275
2024-12-03 02:53:38 +01:00
Campbell Barton
ababc2e01b Fix #120778: depth navigation ignores camera & light objects
Restore overlay depth drawing which was removed in [0].
For viewport navigation this is useful. Disable overlays
for other operations such as painting & object placement.

Also disable color drawing in the overlay_next engine drawing
when drawing depth, since it caused the viewport to show a
checkered backdrop.

Details:

A boolean argument has been added to ED_view3d_depth_override instead
of new enums in eV3DDepthOverrideMode since mixing object-filtering
and draw-type in the one enum gets verbose & awkward, where most
existing enums would have needed to include NO_OVERLAY in their name.

V3D_DEPTH_NO_OVERLAYS has been renamed to V3D_DEPTH_ALL,
the caller must pass in use_overlay as false.

[0]: 5fea1eda36
2024-12-03 11:00:27 +11:00
Harley Acheson
154ab16ee2 Fix #128419: Allow the Positioning of Centered Dialogs
Some popups are positioned centered in the window, like "Splash",
"About", and the large confirmations. But when you drag these to
a different location they will snap back when there is any window
interaction.  This PR allows you to move these popups and they will
stay in the new location.

Pull Request: https://projects.blender.org/blender/blender/pulls/129125
2024-12-02 22:01:05 +01:00
Iliya Katueshenock
7348e670b3 Cleanup: BKE: Use StringRefNull instead of char *
Use StringRefNull for all function arguments and return types.
Not a StringRef but StringRefNull since there is still large
interaction with C api so null-termination usually necessary.

If string is expected to be not only empty but also a null then
optional is used. This change depends on #130935.

Pull Request: https://projects.blender.org/blender/blender/pulls/131204
2024-12-02 19:24:07 +01:00
Falk David
e5bdfd533b Grease Pencil: Save Layer Group expanded state
Grease Pencil layer groups are drawn in the layer tree using
`AbstractTreeViewItem`. The problem is that the items can't
store their expand/collapse state. This meant that switching
e.g. the tabs in the properties editor would reset the collapsed
state of layer group items.

This PR uses the `GP_LAYER_TREE_NODE_EXPANDED` flag to store
the expand/collapse state. The tree view then reads from the flag to
expand/collapse the items.

This also adds an RNA property to layer groups `is_expanded`.
Allows to check from python if a group is expanded in the UI.

Pull Request: https://projects.blender.org/blender/blender/pulls/131159
2024-12-02 11:48:42 +01:00
Clément Foucault
601de8bfcb Fix: GPU: Assert due to new GPU requirements regarding wide lines
The formats was not using the correct attribute type.
2024-11-28 11:56:49 +01:00
Philipp Oeser
5aa95941d1 Fix #130998: Crash changing Color Palette in Object/Edit/Pose modes
Caused by 7b0ea0f1b4

By default, Color Palettes are only drawn in the UI in the context of
**painting**. UI button code then tries to update an appropriate brush
from edits to the palette.

In the report though, a palette was created and displayed via python,
making changes in Object/Edit/Pose would then crash.

So a valid `Paint` and `Brush` were assumed. `Paint` was already checked
for in a324a19f1b, but since 7b0ea0f1b4, `Paint`(if we actually have
it, e.g.from `ImagePaintSettings` [see a324a19f1b]) only has its
`brush` set once we enter texturepaint once.

Solved by checking we have a valid Brush in corresponding UI code to
begin with.

Pull Request: https://projects.blender.org/blender/blender/pulls/131031
2024-11-27 15:41:26 +01:00
Campbell Barton
b9f055459a Cleanup: ensure trailing space around comment blocks 2024-11-27 19:01:00 +11:00
Marco Rotili
e6d941cdf4 Fix #129178: Opening the context menu on a numeric input shows the wrong cursor
Use non-modal setting of mouse cursor type so that the correct one is
shown for the numerical input context menu.

Pull Request: https://projects.blender.org/blender/blender/pulls/129455
2024-11-27 00:58:38 +01:00
Harley Acheson
0e83b9c5ee UI: Show File Name on Recent Item Tooltip
When the recent files list is shown on the Splash screen, the
horizontal size is constrained and so longer items will have their
names truncated. This PR adds the file name as the first item in the
popup tooltip.

Pull Request: https://projects.blender.org/blender/blender/pulls/130875
2024-11-25 18:19:18 +01:00
Campbell Barton
0de8ae8046 Cleanup: spelling in comments 2024-11-25 13:24:46 +11:00
Pratik Borhade
8dc8e48e9a Fix #130478: Toolbar tooltips have uncentered vertical padding
Pass `is_pad=false` for title text to prevent additional space above
them.

Pull Request: https://projects.blender.org/blender/blender/pulls/130498
2024-11-24 06:51:10 +01:00
Hans Goudey
2b20871216 Cleanup: Move region UI block name map from GHash to Map 2024-11-21 14:04:34 -05:00
Hans Goudey
129a2aa0f4 Refactor: Move region runtime data out of DNA
Pull Request: https://projects.blender.org/blender/blender/pulls/130303
2024-11-21 19:34:53 +01:00
Nathan Vegdahl
1dcd435a87 Fix #130216: GPv3: Crash in render due to slotted Actions
The root cause of this bug can be traced to:

- `ANIM_nla_mapping_get(ac, ale)` conditionally returns an `AnimData *adt`.
- This can be `nullptr` in various cases, depending on the editor (in `ac`) and
  the type & source of data (in `ale`).
- This `nullptr` has different meanings:
  1. There is not enough information to return an `adt` (like `ac` or `ale`
     being `nullptr` themselves).
  2. NLA time remapping should not be done. For example for NLA control F-Curves
     (like animated strip influence), or Grease Pencil (because that doesn't use
     the NLA).
- The above-returned `adt` is passed to other functions. Some of them are aware
  of the "`nullptr` means no NLA time remapping" scenario, and gracefully handle
  it. Other code, however, just gets "an adt" from the caller and handles it as
  normal (and likely crashes on `nullptr`). Other cases start out as the first,
  but somewhere in the call stack shift over to the second.

The approach taken in this PR to fix the bug is to (generally) stop signaling
"do not use NLA time remapping" via `adt = nullptr`, and instead explicitly
indicate/check whether remapping should be done.

In most cases this means passing a `bAnimListElem *` instead of an `AnimData *`,
because the former has the information needed to determine if time remapping
should be done or not. However, in some cases there is no `bAnimListElem *` to
pass, and instead other information determines whether remapping is needed. In
those cases we add a `bool` parameter or field in the appropriate place so that
calling code can explicitly indicate whether remapping should be done or not.

To accomplish this a variety of functions have been added to help handle things
correctly.  Of particular note:

- `AnimData *ANIM_nla_mapping_get(ac, ale)` (that conditionally returned an
  `adt`) has been removed entirely in favor of the new
  `bool ANIM_nla_mapping_allowed(ale)` function that simply returns whether
  nla remapping should be done or not.
- `ANIM_nla_tweakedit_remap(ale, …)` has been added, which wraps
  `BKE_nla_tweakedit_remap(adt, …)` and only performs the remapping when
  `ANIM_nla_mapping_allowed()` indicates that it's allowed.
- `ANIM_nla_mapping_apply_if_needed_fcurve(ale, …)` has been added, which is an
  alternative to `ANIM_nla_mapping_apply_fcurve(adt, …)` that also only performs
  the remapping when `ANIM_nla_mapping_allowed()` indicates that it's allowed.

Note that even with this PR there are still a couple of places remaining that
use `adt = nullptr` to indicate "don't remap", because they appear to be correct
and would require larger changes to make explicit. In those cases comments have
been added to explain the situation, with a reference to this PR.  In the future
we way want to take the time to change those as well.

Also of minor note: this PR moves the definition of the type `slot_handle_t`
from ANIM_action.hh to BKE_action.hh. This is due to `BKE_nla.hh` (which needs
that definition) now being included directly and indirectly in a lot more
places. Moving the definition to BKE_action.hh prevents all of those new places
from gaining dependencies on the animrig module.

Co-authored-by: Sybren A. Stüvel <sybren@blender.org>
Pull Request: https://projects.blender.org/blender/blender/pulls/130440
2024-11-21 16:37:13 +01:00
Bastien Montagne
406e93525f Fix #130535: Name of Object not updated in viewport when name clashes.
Now that another ID can be renamed (again), it also needs to be properly
tagged as needing resync in the depsgraph too.

This commit:
* Moves/add depsgraph tagging to `BKE_id_rename`.
* Moves the WM notifier creation to `ED_id_rename`.

Pull Request: https://projects.blender.org/blender/blender/pulls/130596
2024-11-20 15:24:46 +01:00
Jacques Lucke
e62aa986b2 Format: use fmt::format correctly with runtime format strings
The `fmt::format` can process the format string at compile time. Currently, we
don't seem to be using that as we don't use `FMT_STRING`. Starting with C++20,
that will be the default though, and one has to explicitly opt out in places
where the string is not known at compile time using `fmt::runtime(...)`.
Currently, our code does not compile as C++20 because of that. Unfortunately, we
have many places with runtime format strings, because of i18n.

Pull Request: https://projects.blender.org/blender/blender/pulls/130392
2024-11-20 10:41:29 +01:00
Julian Eisel
f0db870822 UI: Support persistent view state, write tree-view height to files
Adds support for saving some view state persistently and uses this to keep the
height of a tree-view, even as the region containing it is hidden, or the file
re-loaded.

Fixes #129058.

Basically the design is to have state stored in the region, so it can be saved
to files. Views types (tree-view, grid-view, etc) can decide themselves if they
have state to be preserved, and what state that is. If a view wants to preserve
state, it's stored in a list inside the region, identified by the view's idname.

Limitation is that multiple instances of the same view would share these bits of
state, in practice I don't think that's ever an issue.

More state can be added to be preserved as needed. Since different kinds of
views may require different state, I was thinking we could add ID properties to
`uiViewState` even, making it much more dynamic.

Pull Request: https://projects.blender.org/blender/blender/pulls/130292
2024-11-18 18:19:48 +01:00
Sybren A. Stüvel
1c34e00ce1 Anim: draw prop as 'orange' when changed value with stashed Actions present
Properties that are animated, but have different values than their
animation data, are drawn in orange. This was skipped whenever any NLA
tracks were active (likely because this would re-evaluate the NLA for
every property drawn, which is a performance bottleneck).

This commit lifts this limitation slightly, and only skips the "has this
changed?" check if there are any non-muted NLA tracks. This means that
using the NLA purely as a stash of Actions is now possible without
losing the 'orange means it changed' indicators in the UI.

Fixes: #129968

Pull Request: https://projects.blender.org/blender/blender/pulls/130130
2024-11-18 12:58:36 +01:00
Christoph Lendenfeld
b38d8ecb86 Refactor: move keyingsets to animrig
No functional changes intended.

This patch moves the relevant keying set code from editors to animrig.
All functions are in the animrig namespace, and as such have lost their
`ANIM_` prefix.
Other than that, the code has been moved as is into `animrig/intern/keyingsets.cc`

Note that I also had to move `id_frame_has_keyframe` and `fcurve_frame_has_keyframe`.
I moved that into `ANIM_keyframing.hh` and `ANIM_fcurve.hh` since I found that more fitting.

Due to Windows defining `DELETE` as macro I had to rename `ModifyKeyMode::DELETE`
to `ModifyKeyMode::DELETE_KEY`

As a result of this two includes from animrig to editors were removed.

This is part of #121336

Pull Request: https://projects.blender.org/blender/blender/pulls/129980
2024-11-15 10:51:41 +01:00
Hans Goudey
091c175c5c Refactor: Move region runtime to separate C++ runtime struct
This allows using C++ types in the region runtime data, which will
make it easier to move the remaining runtime data out of the
`ARegion` DNA type and improve code readability in these areas.

Pull Request: https://projects.blender.org/blender/blender/pulls/130196
2024-11-15 02:00:11 +01:00
Hans Goudey
6c3ac28eb3 Nodes: Slightly improve editor drawing performance with large node trees
Avoid retrieving context data for every single node which can be
expensive when there are thousands of nodes. In the "Mouse House"
test file I observed a 13% improvement in drawing timings.

Pull Request: https://projects.blender.org/blender/blender/pulls/130239
2024-11-14 16:04:33 +01:00
Julian Eisel
b1c86f26c9 Merge branch 'blender-v4.3-release' 2024-11-13 17:01:09 +01:00
Julian Eisel
209dc899ea Fix #128649: Tool icon in toolbar shrinked down with non HiDPI screens
Pixelsize and DPI scaling had to be applied correctly.
2024-11-13 17:00:18 +01:00
Julian Eisel
365f58ca0c Merge branch 'blender-v4.3-release' 2024-11-13 15:59:22 +01:00
Julian Eisel
671f08df96 Fix #129267: No brush previews show up with large asset libraries
Previously, we had to fetch all asset previews at once. However the preview
caching system was limited at 8192 previews, so with large asset libraries, many
previews would get dropped. Instead, allow selectively requesting previews and
only request previews of items displayed on screen. This should fix the issue,
and reduce the time it takes to display brush assets in general, especially with
bigger libraries. This should also reduce memory usage quite a lot when
displaying the asset shelf, since not all asset previews are loaded anymore.

Pull Request: https://projects.blender.org/blender/blender/pulls/130105
2024-11-13 15:53:52 +01:00
Bastien Montagne
b325142d17 Merge branch 'blender-v4.3-release' 2024-11-12 16:55:40 +01:00
Bastien Montagne
0b3a7cbe69 Cleanup: Move BKE_image.h and related headers to C++.
NOTE: This also required some changes to Cycles code itself, who is now
directly including `BKE_image.hh` instead of declaring a few prototypes
of these functions in its `blender/utils.h` header (due to C++ functions
names mangling, this was not working anymore).

Pull Request: https://projects.blender.org/blender/blender/pulls/130174
2024-11-12 16:53:54 +01:00
Campbell Barton
4306e746a5 Fix #129630: Inconsistent marker selection
- Modifications for marker selection to use the same behavior as
  key selection in the dopesheet.
- Animation editors now mask out events for the timeline (when there are markers).
- Resolve logical conflicts with the Dope sheet keymap.
- Add Shift Drag & Ctrl Drag for box select & de-select.

Pull Request: https://projects.blender.org/blender/blender/pulls/129841
2024-11-12 10:37:51 +01:00
Falk David
ee46f57f92 Merge branch 'blender-v4.3-release' 2024-11-08 16:44:45 +01:00
Falk David
589ef9ccce Fix #129542: GPv3: Layers and Groups don't generate callback to message bus
Layers and layer groups did not generate message bus callbacks.
This was a regression from 4.2. The fix adds
`WM_msg_publish_rna_prop` to (some) places where the layers/groups
change or the active one changes.

Also resolves #129539.

Note: This does not cover every possible scenario and only fixes
the regressions from 4.2. The message bus is still very unreliable
when it comes to detecting changes of properties.

Pull Request: https://projects.blender.org/blender/blender/pulls/130039
2024-11-08 16:43:52 +01:00
Lukas Tönne
021e010a07 Merge branch 'blender-v4.3-release' 2024-11-08 10:22:58 +01:00
Lukas Tönne
449e7229f3 Fix #129749: Use consistent GPv3 color settings in different modes
Always use the Brush.color setting in the Draw mode side bar.
Technically the "Color" panel in the sidebar can draw in other modes,
but it's polling for explicit tools that limit it to the Draw mode
implicitly.

Use the appropriate brush or unified color in other GP modes based on
the unified paint settings flag.

Worth noting this was technically broken for a long time:
The default was that unified paint is disabled, so the GP panels would
use the brush color as expected. Enabling unified paint would then break
the colors, probably wasn't done very frequently since GP files
and e.g. mesh sculpting don't mix often. The default was changed in
#129127 to enable unified paint by default, which now breaks GP colors
by default.

Pull Request: https://projects.blender.org/blender/blender/pulls/129790
2024-11-08 10:21:24 +01:00
Jacques Lucke
abbe77b90f Merge branch 'blender-v4.3-release' 2024-11-07 13:29:24 +01:00
Julian Eisel
0e0939b83f Fix #129112: Asset shelf ignores double-click keymap item
Double clicks would be captured by view-item renaming, even when renaming
wasn't supported.

Pull Request: https://projects.blender.org/blender/blender/pulls/129919
2024-11-07 12:57:28 +01:00
Richard Antalik
229fe068fe Merge branch 'blender-v4.3-release' 2024-11-07 01:14:10 +01:00
Julian Eisel
5e688ffa73 Fix: UI: Missing redraws when clicking on catalogs in asset shelf popup
When opening the asset shelf brush selector popup in paint modes, clicking on a
catalog on the left wouldn't refresh the popup properly. Two catalog items
would be drawn as active, and the active catalog change wouldn't be reflected.
Only some mouse movements would trigger an update eventually.
2024-11-06 18:37:37 +01:00
Clément Foucault
f4f94fb055 Merge branch 'blender-v4.3-release' 2024-11-05 16:40:52 +01:00
Jacques Lucke
551e87c4fd Fix #128875: text cursor offset by one
The `UI_BUT_NO_TEXT_PADDING` flag was not taken into account when setting the cursor in a text box.

Pull Request: https://projects.blender.org/blender/blender/pulls/129299
2024-11-05 15:56:54 +01:00
Bastien Montagne
2c9e7676a3 Merge branch 'blender-v4.3-release' 2024-11-05 15:01:20 +01:00
Campbell Barton
828f60b742 Fix check that only Control was pressed ignoring OsKey 2024-11-05 23:26:20 +11:00
Campbell Barton
15c207a294 Merge branch 'blender-v4.3-release' 2024-11-02 17:34:00 +11:00
Campbell Barton
4df285ccd5 Cleanup: move function comments into headers or implementation notes
For C/C++ doc-strings should be located in headers,
move function comments into the headers, in some cases merging
with existing doc-strings, in other cases, moving implementation
notes into the function body.
2024-11-02 17:27:09 +11:00
Hans Goudey
2e4da3bf60 Cleanup: Reduce indentation in UI panel function 2024-11-01 20:14:56 +01:00
Julian Eisel
68a74c4095 Merge branch 'blender-v4.3-release' 2024-11-01 15:34:39 +01:00
Julian Eisel
a641001207 Fix: UI previews don't refresh outside of properties editor
The preview template (`UILayout.template_preview()`) to display previews
for materials, textures or similar would only work correctly in the
Properties editor. This had explicit logic to trigger rerendering on
changes. When displaying such previews elsewhere (e.g. in the 3D View
sidebar), the only way to have changes reflected would be by resizing
the preview.

This fix makes sure such previews are tagged as dirty and refreshed on
changes to the underlying ID. We do this the same way as tagging the ID
previews as dirty, through a function called by the dependency graph for
such updates.

Pull Request: https://projects.blender.org/blender/blender/pulls/129641
2024-11-01 15:25:24 +01:00
Bastien Montagne
94f71785e7 Cleanup: Use explicit defaults and value-initialization for TemplateID data.
Should prevent UBSan reports once PointerRNA/BPY refactor lands (!123435).
2024-10-29 15:24:50 +01:00
Campbell Barton
64027cd178 Merge branch 'blender-v4.3-release' 2024-10-21 22:00:40 +11:00