Commit Graph

3094 Commits

Author SHA1 Message Date
Guillermo Venegas
6397a4fb9a Refactor: UI: Use typed enum class for eUIEmbossType enum
Part of incoming refactors in interface layout c++ code, this enables
forward declaring this enum type. Enum is renamed as `EmbossType` and
moved to `blender::ui` namespace. No user visible changes expected.

Pull Request: https://projects.blender.org/blender/blender/pulls/136725
2025-03-31 00:36:46 +02:00
Campbell Barton
5e2b421996 WM: support the "Hyper" modifier key on Linux
Add support for a 5th modifier key called "hyper",
this is a modifier supported on Wayland & X11 although
other platforms could support an additional modifier too.

Both GNOME and KDE can map CapsLock to Hyper.
Other compositors can use the XKB_DEFAULT_OPTIONS environment variable.

This allows users to have an additional modifier for their own use
that doesn't conflict with other keys.

Ref !136340
2025-03-26 10:39:55 +11:00
Harley Acheson
d9dbd1bafd Fix: Reset Widths After Hiding Region
Some regions, like toolbars and sidebars, can be dragged open and
closed. But this often doesn't work correctly a second time because
we don't update our saved widths once the area is hidden. This results
in an incorrect offset. This PR just resets the saved widths to zero
when the region is hidden so this doesn't occur. Note that this does
not affect the ability to just click and release on the widget, only
dragging from it.

Pull Request: https://projects.blender.org/blender/blender/pulls/136527
2025-03-26 00:29:27 +01:00
Campbell Barton
ec511316d2 Cleanup: minor changes to wmKeyMapItem modifier comparisons
Some of the existing logic checked that modifiers were KM_MOD_HELD,
other logic checked the value wasn't KM_NOTHING or KM_ANY.

Simplify checks by comparing against KM_MOD_HELD in all cases
as this won't be set to other values.
2025-03-25 12:14:27 +11:00
Harley Acheson
3e29f3eaa2 UI: Scroll Bars on the Left Side of Left-Aligned Regions
Toolbars and some other regions are aligned to the left sides of their
areas and have an (often hidden) right edge that can be dragged to
resize or hide it. If there isn't enough vertical space to show all of
its contents then you also get a scroll bar along that same edge. These
two things conflict badly and is almost impossible to use with a tablet
pen. The mouse cursor changes to indicate dragging over the scrollbar
but doesn't work. Dragging the scoll bar requires doing so to the right
of it. This PR moves the scroll bars to the left side of these left-
aligned areas. They are correctly changed to the right side if you flip
the region.

Pull Request: https://projects.blender.org/blender/blender/pulls/136218
2025-03-24 20:45:13 +01:00
Harley Acheson
daa417d304 UI: Increase Hit Size of the Close Region Action Zone
When regions are closed, like sidebars and toolbars, we show a little
arrow at the edge. This PR does not change that arrow, nor make any
noticable visual change, but almost doubles the hit size area. Much
easier to hit, especially with a tablet pen.  It also changes the mouse
cursor when hovering over it to ones that indicate movement in that one
direction, helping to reinforce that you are over the spot. Otherwise
the mouse cursor looks the same as when over the nearby edge.

Pull Request: https://projects.blender.org/blender/blender/pulls/136334
2025-03-24 20:04:28 +01:00
Campbell Barton
d616c87d03 Cleanup: spelling in comments (make check_spelling_*) 2025-03-21 11:51:50 +11:00
Harley Acheson
cc22de7acb UI: Increase Contrast of Area Resize Feedback
When dragging on area edges to resize them, the visual feedback is
brighter on high DPI displays like Retina. This is because the center
line is subpixel when on a regular monitor.  This PR increases the
width of the line and outline, giving a stronger highlight and one
that looks similar on all platforms.

Pull Request: https://projects.blender.org/blender/blender/pulls/136108
2025-03-21 00:32:34 +01:00
Campbell Barton
10233e95dd Cleanup: use a typed enum for operator & gizmo callbacks
Callbacks: exec invoke & modal now use a typed enum wmOperatorStatus.

This helps avoid mistakes returning incompatible booleans or other
values which don't make sense for operators to return.

It also makes it more obvious functions in the WM API are intended
to be used to calculate return values for operator callbacks.

Operator enums have been moved into DNA_windowmanager_enums.h
so this can be used in other headers without loading other includes
indirectly.

No functional changes expected.

Ref !136227
2025-03-20 21:11:06 +00:00
Harley Acheson
22ad0b9faf UI: Increase Border Edge Drag Width
When resizing areas by dragging at the edges, the hit area is wider
than the visible border. This extra border padding is extended in this
PR by another one pixel on each side. This increases the hit width by
about 30%. This is possible because this adjusts for scrollbars at the
edge of the area.

Pull Request: https://projects.blender.org/blender/blender/pulls/135952
2025-03-20 21:13:34 +01:00
Harley Acheson
dbf3a3979d UI: Increase Height of the Left-Size Corner Action Zones
This PR increase the height (only) of the corner action zones at the
top-left and bottom-left area corners. They get more than twice as tall
so they are twice as easy to hit. Especially nice using a pen.

Pull Request: https://projects.blender.org/blender/blender/pulls/135954
2025-03-20 18:44:51 +01:00
Clément Foucault
5241133425 UI: Make area border width decoupled from scale factor
This is just the shader change.
It allows more freedom for the UI team to tweak the appearance.

The is not functional changes in this patch.

Rel #126334
2025-03-17 13:12:25 +01:00
Sebastian Parborg
ec29eb6580 Refactor: Make it more obvious that wm_event_add is not a static function
By renaming it to WM_ follow the other public functions.
2025-03-11 14:39:18 +01:00
Campbell Barton
19e8fe18ff Cleanup: remove use of WM_global_report for screen operators 2025-03-11 14:39:28 +11:00
Campbell Barton
bd06baf6e6 WM: rename WM_report* to WM_global_report*, note it's often bad practice
WM_report was originally added for special cases however new code
has been using this in operators for example, where reports should be
sent to the operator via BKE_report, so the caller can handle,
and so Python can catch the errors.

Rename the functions to make them less easily confused with BKE_report
and add a code-comment on why their use should be avoided.
2025-03-11 12:36:17 +11:00
Harley Acheson
1a6eb39fed Merge branch 'blender-v4.4-release' 2025-03-10 17:11:59 -07:00
John Kiril Swenson
d8f3f8cc61 Fix: UI: Improve scrollbar hotspot region
Mouse and action zone interaction for scrollbars depend on `v2d->vert`
and `v2d->hor`, which are updated through `view2d_masks`. However,
scrollbar drawing through `UI_view2d_scrollers_draw` calls
`view2d_scrollers_calc`, which pads these sizes further, meaning that
drawn scrollbars are slightly out of sync with their hotspots. This is
noticeable at track edges for shrinking scrollers or when tracks are
opaque. Fix by moving the extra (noticeable) padding code from
`view2d_scrollers_calc` to `view2d_masks`.

Pull Request: https://projects.blender.org/blender/blender/pulls/135021
2025-03-11 01:10:48 +01:00
Jacques Lucke
c643c062a3 Merge branch 'blender-v4.4-release' 2025-03-10 16:21:47 +01:00
David Murmann
05ec635e6b Fix #135277: mark scene parameters as dirty on camera switch
Geometry nodes using the active camera did not get updated
when the camera is switched by a timeline marker.

Pull Request: https://projects.blender.org/blender/blender/pulls/135546
2025-03-10 16:21:12 +01:00
Falk David
e39c83c881 Merge branch 'blender-v4.4-release' 2025-03-06 21:19:31 +01:00
Julian Eisel
b9907cb60b Fix #134418: Double clicking a file crashes Blender if load UI is off
Screen initialization is more context dependent than it used to be
because of region polling, so the context needs to be set up correctly.
Here was a case where the initialized window/screen passed to polling
didn't match what's in context (UI context was unset in fact).

Some asserts could be added to ensure data passed to screen
initialization matches context, but can do that separately.

Pull Request: https://projects.blender.org/blender/blender/pulls/135568
2025-03-06 19:01:10 +01:00
Richard Antalik
68abed543b Refactor: Remove module prefix form symbols in sequnecer namespaces
Remove
SEQ_ prefix for blender::seq namespace and
ED_sequencer for blender::ed::vse namespace

Pull Request: https://projects.blender.org/blender/blender/pulls/135560
2025-03-06 13:04:39 +01:00
Richard Antalik
a08246a1a2 Refactor: Move VSE code to namespaces
This PR creates 2 namespaces for VSE code:
- `blender::seq` for sequencer core code
- `blender::ed::vse` for editor code

These names are chosen to not be in conflict with each other.
No namespace was used for RNA.

Finally, file `BKE_sequencer_offscreen.h` was moved from BKE to sequencer.

Pull Request: https://projects.blender.org/blender/blender/pulls/135500
2025-03-06 06:22:14 +01:00
Campbell Barton
f2ac9c9954 Merge branch 'blender-v4.4-release' 2025-03-06 15:54:08 +11:00
Campbell Barton
fa6975b440 Fix crash calling "Set Active Modifier" without an active object 2025-03-06 15:47:16 +11:00
Harley Acheson
7470c63836 Merge branch 'blender-v4.4-release' 2025-03-05 11:11:56 -08:00
Harley Acheson
de3b5e691e Fix #135119: Always Clear Previous Area Subtype After Change
Area's butspacetype_subtype always needs to be cleared after switching
space and subtype, whether the space supports subtypes or not.
Otherwise an operation that only changes type (so assumed subtype of
zero) will use the area's previous subtype if it has subtypes. This is
restoring prior undocumented behavior, now with a nice comment.

Pull Request: https://projects.blender.org/blender/blender/pulls/135533
2025-03-05 20:11:00 +01:00
Campbell Barton
f892bef8eb Merge branch 'blender-v4.4-release' 2025-03-04 11:43:53 +11:00
Campbell Barton
72d89eee87 Fix use of the pixelsize for the size of rounded area bounds
Use the scale-factor instead of the pixelsize.

Without this, changing the line-width can double or half the size of
rounded corners.

Ref !135383
2025-03-04 10:10:09 +11:00
Sebastian Parborg
cb7d80238b Merge branch 'blender-v4.4-release' 2025-03-03 15:23:55 +01:00
Sebastian Parborg
6a3642cb1f Fix #135193: Correctly clamp the current frame when starting playback
The old code didn't properly communicate that it changed the current
frame leading to de-syncs in state between the frame shown and the audio
etc.
2025-03-03 15:21:47 +01:00
Harley Acheson
1ad39b95d9 Merge branch 'blender-v4.4-release' 2025-03-02 12:39:19 -08:00
Harley Acheson
1a72a0f22c Fix #135295: Always Restore Previous Editor with set_or_cycle
ED_area_newspace correctly changes an area's space when the type and
subtype are set beforehand. But SCREEN_OT_space_type_set_or_cycle, when
changing to a new editor rather than cycling, needs newspace to ignore
the set subtype and use the last-used saved in the space. This
situation cannot be tested for in newspace. Instead have the operator
pass -1 as subtype to signal this intended behavior.

Pull Request: https://projects.blender.org/blender/blender/pulls/135367
2025-03-02 21:38:02 +01:00
Campbell Barton
98aee659cf Merge branch 'blender-v4.4-release' 2025-03-02 15:50:15 +11:00
Campbell Barton
2be7586bce Fix the line-width controlling UI element scale & drag threshold
The line-width is used to calculate the `U.pixelsize` which should only
be used to control the size of lines & points.

Update doc-strings to mention the intended use, remove unused defines.
2025-03-02 15:46:22 +11:00
Harley Acheson
21e14163c6 Merge branch 'blender-v4.4-release' 2025-02-28 10:05:31 -08:00
Harley Acheson
ead7a881a5 Fix: Constrain Docking Hint to Window Bounds
While joining and docking areas there is hint shown near the mouse that
describes the potential operation. But it is cut off if your mouse is
at the extreme right or bottom edge of the window. This PR just clamps
the position so it is always visible.

Co-authored-by: Jonas Holzman <jonas@holzman.fr>
Pull Request: https://projects.blender.org/blender/blender/pulls/135211
2025-02-28 19:04:22 +01:00
John Kiril Swenson
debf747265 Fix linting error on buildbot 2025-02-26 15:34:20 -06:00
John Kiril Swenson
b79344e3a0 UI: Ensure invisible scrollbar tracks are opaque and shrink scrollbars with handles
This patch registers scrollbars with handles so that they shrink just
like their non-handle counterparts.

To avoid user errors related to clicking into the handle track instead
of the underlying view, if the final alpha of the track is invisible (0)
then it will range up to 0.25 instead.

Pull Request: https://projects.blender.org/blender/blender/pulls/135023
2025-02-26 21:57:36 +01:00
Harley Acheson
2514ca8bd6 Merge branch 'blender-v4.4-release' 2025-02-25 15:40:25 -08:00
Harley Acheson
199c046449 UI: Do Not Show Editor Border for Single Area Separated Windows
With recent changes to the matching of OS title bar to Blender colors
on MacOS and Windows, it looks far nicer to not show the editor border
for windows that only have a single area and also do not have any
global areas. This PR removes them in this case.

Pull Request: https://projects.blender.org/blender/blender/pulls/134961
2025-02-26 00:38:50 +01:00
Hans Goudey
d0a6189b50 Refactor: DRW: Centralize and clean up packed normals conversion
Move the code dealing with converting float3 to GPU normals
out of the vertex format header into a separate header. Use a
proper C++ namespace and remove duplication by only using
the more recently added C++ templated conversions.

Most of the diff comes from the removal of the indirect includes
from GPU_vertex_format.hh. A lot of files ended up mistakenly
depending on that.

Pull Request: https://projects.blender.org/blender/blender/pulls/134873
2025-02-24 16:08:30 +01:00
Campbell Barton
85af07f438 Cleanup: spelling in comments 2025-02-23 21:02:54 +11:00
Sean Kim
5cce8cc073 Merge branch 'blender-v4.4-release' 2025-02-19 12:59:30 -08:00
Julian Eisel
05c6446c38 Fix #128966: Update Dopesheet playhead in separate window
The playhead is redrawn as an overlay, so instead of a full region
redraw using `ARegionType.draw()`, at least an overlay only redraw using
`ARegion.draw_overlay()` needs to be triggered.

Any redrawing within a window is skipped if neither the screen, nor any
of its areas or regions are tagged for redraw. So since there are no
other areas or regions to be fully redrawn in this window, no redrawing
will happen. The screen needs to be tagged for redraw, which will skip
most drawing in this case, and just draw the overlays as wanted.

Pull Request: https://projects.blender.org/blender/blender/pulls/134579
2025-02-19 21:53:15 +01:00
Harley Acheson
9a36b800eb Merge branch 'blender-v4.4-release' 2025-02-19 11:04:59 -08:00
Harley Acheson
0425940794 Fix #134630: Do Not Set Area Subtype For Previously Stored Editors
When changing editors within an area we are currently always setting
the subtype if there are modes. This causes problems when returning to
a previous editor versus starting with the correct one. We have tried
various ways of returning to the old editor, but never quite works.
This PR only sets the subtype if we are creating a new area. If not
just leave it as it was so we naturally return to its old state.

Pull Request: https://projects.blender.org/blender/blender/pulls/134642
2025-02-19 20:03:55 +01:00
Julian Eisel
20ec789889 Merge branch 'blender-v4.4-release' 2025-02-18 14:15:28 +01:00
Julian Eisel
fa4026f2bf Revert "Fix #130372: Implements memory of the previous state of eSpace_Types."
This reverts commit afec64739a.

The commit introduces a regression where opening the Asset Browser opens
the File Browser instead, same for other editor sub-types, see
blender/blender#134630.
blender/blender!134642 proposes a different solution and reverts this,
which I prefer too. Better to the revert separately from trying a
different fix for the initial bug, makes reviewing easier too.
2025-02-18 14:09:42 +01:00
Harley Acheson
beaaa428e9 UI: Tightened Status Bar Spacing
Slight adjustments to the spacing of items on the Status Bar. Mainly
to reduce the distance between adjoining icons. Small decrease in space
between icon and text. Slight decrease in text size inside the event
icons. Proportionally wider gap between items.

Pull Request: https://projects.blender.org/blender/blender/pulls/134534
2025-02-15 00:57:49 +01:00