Commit Graph

7857 Commits

Author SHA1 Message Date
Harley Acheson
99a4bc325e UI: Allow Theme Coloring for Color SVG Extraction
For the times we need to obtain the bitmap of an SVG icon, send these
through the new theme coloring callback if they are multi-color. This
removes some code duplication by adding a new function that gets an
imBuf from SVG Icon. This allows, for "About" logo, Dialog icons, and
file system icons the optional ability to use a single SVG source file
that works as both monochrome (themed by text color) or multicolor with
internal parts themed.

Pull Request: https://projects.blender.org/blender/blender/pulls/126215
2024-08-13 03:31:43 +02:00
Blazer
ddc9f92777 Define fallback tooltip string for UI_UL_list items
Having the description blank for template list items when not editable
creates undo items that show as "Unknown Action." This PR ensure it has
a description whether editable or not.

Pull Request: https://projects.blender.org/blender/blender/pulls/126184
2024-08-13 00:42:39 +02:00
Harley Acheson
e8786c7be7 UI: Icon Overlay Text Should Not Shadow if Dark
If the text color is dark then don't add shadow to the icon overlay
text - the small text showing things like user counts.

Pull Request: https://projects.blender.org/blender/blender/pulls/126247
2024-08-12 21:23:12 +02:00
Lukas Stockner
d8f550875b Fix #124038: Performance issue with color sampling in 3D Viewport
The issue here is that copying the GPU viewport back to the CPU is an expensive
operation, so doing it for every frame when dragging the eyedropper is not ideal.

Instead, copy it once at the start and keep reading from it until the user
releases the eyedropper.

Pull Request: https://projects.blender.org/blender/blender/pulls/126072
2024-08-12 14:52:28 +02:00
Harley Acheson
cd998d392d UI: Color Icon Theme Internal Parts
Allow color SVG icons to have their fill colors modified by theme
colors using a callback. This is done just before rasterization so
only happens once per requested size, before these are cached for
reuse.

Pull Request: https://projects.blender.org/blender/blender/pulls/125146
2024-08-11 20:10:32 +02:00
Harley Acheson
30038f1710 UI: Allow BLF_svg_icon_bitmap to Optionally Get Multicolor Bitmap
When we draw SVG icons we have an optional argument that specifies to
treat it as multicolor. This PR allows doing the same thing when
requesting a bitmap from an icon. This is only currently done for
Dialog boxes and the About screen. The purpose of this isn't really
to allow multicolor dialog icons, but to get to the point where a
single SVG source file could be used as monochrome (changing the one
color with text color) or multi-color (changing internal colors with
themes) without needing multiple copies of the source file

Pull Request: https://projects.blender.org/blender/blender/pulls/126193
2024-08-11 05:07:35 +02:00
Harley Acheson
c3377a3498 UI: Improved Gray scale Values for Rendered SVG Bitmaps
This PR corrects some mistakes in the conversion between RGBA bitmaps
created when rasterizing SVG icons and the monochrome coverage maps
when displaying these in a single color. This only occurs when we need
a bitmap from an icon for About screen and for dialogs. The bitmap
from NanoSVG is already premultiplied so don't do it again.  When
converting from coverage map to RGBA use map value for all components
rather than FFF for colors. When converting to coverage map from RGBA
use perceptual grayscale level of color, not just alpha value.

Pull Request: https://projects.blender.org/blender/blender/pulls/126192
2024-08-11 03:12:20 +02:00
Bastien Montagne
1c98cdbc52 Refactor: UI_list: Move PointerRNA containers to C++ code.
Essentially replace a C-managed allocated array by a `blender::Vector`.

Part of on-going effort to make PointerRNA an actual non-trivial C++
struct (see !123435 and #122431).

Pull Request: https://projects.blender.org/blender/blender/pulls/126100
2024-08-10 17:51:41 +02:00
Campbell Barton
0bc5b3f70e Cleanup: remove redundant checks 2024-08-10 11:32:42 +10:00
Campbell Barton
34d12ab33a Cleanup: consistent naming for icon/icon_id 2024-08-10 11:32:40 +10:00
Campbell Barton
06df1dab8b Cleanup: use const args & vars 2024-08-10 11:32:39 +10:00
Jacques Lucke
d74d8ceb23 Cleanup: move BKE_packedFile.h to C++
Part of #103343.
2024-08-08 15:13:20 +02:00
Harley Acheson
b63d691570 UI: Allow Changing Alpha for Multicolor Icons
When we use icons that are multi-color, like for Tool icons, we'll
still need the ability to change their alpha at runtime. We do this
for hover effects, and as a theme setting.

Pull Request: https://projects.blender.org/blender/blender/pulls/126063
2024-08-07 23:28:17 +02:00
Jonas Holzman
6bb2e5a691 WM API: Improve naming of WM_window_pixels_* functions
The WM API has WM_window_pixels_{x,y,coords}` functions that returns the
window size/point coordinate in the host native pixel size.

As "pixels" in itself doesn't really mean anything the intent of
these functions wasn't really clear. To clarify this, this commit
renames their prefix from `WM_window_pixels_` to
`WM_window_native_pixel_`.

Pull Request: https://projects.blender.org/blender/blender/pulls/125994
2024-08-07 22:30:31 +02:00
Jacques Lucke
5861b078f7 Core: rename ID.flag and ID.tag values
Previously, values for `ID.flag` and `ID.tag` used the prefixes `LIB_` and
`LIB_TAG` respectively. This was somewhat confusing because it's not really
related to libraries in general. This patch changes the prefix to `ID_FLAG_` and
`ID_TAG_`. This makes it more obvious what they correspond to, simplifying code.

Pull Request: https://projects.blender.org/blender/blender/pulls/125811
2024-08-07 12:12:17 +02:00
Harley Acheson
eba9771ef2 UI: Simplified & Slightly Tighter Status Bar Spacing
With the icons changes we no longer need any extra spacing between icon
and text. And negative space for the narrow mouse icons can be 0.5.
Simplifies it a bit and makes it slightly tighter.

Pull Request: https://projects.blender.org/blender/blender/pulls/125987
2024-08-06 21:45:41 +02:00
Leon Schittek
e68bdd44af Fix #125669: Add additional check to ui_but_equals_old
A button being wrongly matched during update caused a crash when it was
freed. The additional check prevents this false positive.

Pull Request: https://projects.blender.org/blender/blender/pulls/125821
2024-08-05 23:40:00 +02:00
Harley Acheson
5fb140a36e UI: Status Bar Using SVG Icons
Refactor of how "event icons" are created, using custom SVG icons for
key outlines and some complex keys. Allows multiple key widths so that
"Ctrl", "Insert", etc can be readable. Strings are automatically sized
rather than hardcoded. Also allows these strings to be translated.
Supports the UI icon alpha preference.  Also supports local aspect in
case we ever want to allow 2D zooming there.

Pull Request: https://projects.blender.org/blender/blender/pulls/125591
2024-08-05 02:42:26 +02:00
Jesse Yurkovich
11e7b7d0bd Collection Export: Allow renaming of exporters in the UI list
Allow the user to rename their collection exporters.

Pull Request: https://projects.blender.org/blender/blender/pulls/125553
2024-08-02 22:36:43 +02:00
Harley Acheson
885824540a UI: Increase Size of Curve Control Points
Curve control points are shown quite small regardless of UI scale and
local zooming. This PR increases the minimum, regular, and maximum
sizes so that they are easier to see in all circumstances.

Pull Request: https://projects.blender.org/blender/blender/pulls/125786
2024-08-01 20:51:42 +02:00
Harley Acheson
90e7331d10 Fix #125558: Show UI_BTYPE_CURVE Control Points
The curve control points are almost invisible because it is missing a
call to GPU_program_point_size, which allows the setting of dot size
in the shader.

Pull Request: https://projects.blender.org/blender/blender/pulls/125744
2024-08-01 19:56:32 +02:00
Harley Acheson
5642944e33 UI: Screen Operations Status Bar
Status bar showing screen area operations when hovering on editor edges
and action zones. Screen area operators (move edge, split, join, etc)
showing keymaps and info during operations.

Pull Request: https://projects.blender.org/blender/blender/pulls/125467
2024-07-31 22:11:37 +02:00
Harley Acheson
989fcc2c4f UI: Mouse Event Icon Alignment
We have a number of event icons, used on the Status Bar, to indicate
mouse actions. It is currently difficult to align these nicely because
they vary in width and design. This PR makes them all the same design
width and aligned to the left edge. This removes a need to add negative
spacing before any of them and only requires space after some of them.
This also adds a new one to indicate "double left click" as my current
use of this looks a bit sus. This also adds a "mouse wheel scroll"

Pull Request: https://projects.blender.org/blender/blender/pulls/125731
2024-07-31 20:57:19 +02:00
Julian Eisel
00a8690637 Fix: UI: Python info shown in quick label tooltip for operator buttons
When a button had an operator attached and was using quick label
tooltips, the quick tooltip would include the Python path after the
label. In other cases like toolshelf buttons or buttons representing RNA
properties only the label would be shown, as expected.

Was visible in the tooltips of asset shelf items.

Rather than relying on subtle and rather implicit logic, use explicit
early exiting after the label fields are handled.
2024-07-30 15:40:38 +02:00
Leon Schittek
d30d8b4bfa UI: Add padding to items in ui lists and tree views
Add a utility function to add horizontal padding to the left and right
of items in UI lists and tree views to make them more consistent with
other buttons like menu entries.

Pull Request: https://projects.blender.org/blender/blender/pulls/125498
2024-07-29 23:52:38 +02:00
Jacques Lucke
071b18a3cc Spreadsheet: support navigating instance trees
Previously, it was not possible to see detailed information about instances in
the spreadsheet. Only the attributes on the top level instances were shown. Now,
all nested instances can be inspected too.

Combined with #114910 this will make inspecting more complex geometry with the
spreadsheet much more feasible. It's also an important part of integrating
grease pencil into geometry nodes because it makes it more obvious how layers
are converted to curve instances.

The data-selection is split into two separate tree views now. One that selects
the geometry from the instance tree, and one that's used to select the geometry
component and domain within that geometry. We found that this works better than
combining both tree views into one (we tried that in #124186).

Pull Request: https://projects.blender.org/blender/blender/pulls/125293
2024-07-29 20:42:08 +02:00
Falk David
0f42f277b7 Grease Pencil: Remove legacy modifiers
This removes the legacy Grease Pencil modifiers from the code.
These should have already been inaccessible from the UI and hidden from
the user. The modifiers have been reimplemented for the new GPv3
data structure.

On top of the modifier code, some other related things have been
removed as well:
 * Operators related to the legacy modifiers.
 * Keymaps for the legacy modifier operators.
 * Some bits of code that used modifier functions.

Some code has to be kept, because it is still used:
 * The core line art code, which is used by the new line art modifier. It's
    moved to `modifiers/lineart`.
 * The DNA structs for the legacy modifiers. They are still needed for
    conversion.
 * A few kernel functions for the modifiers are kept (also for conversion).

Co-authored-by: Lukas Tönne <lukas@blender.org>
Pull Request: https://projects.blender.org/blender/blender/pulls/125102
2024-07-29 10:37:29 +02:00
Campbell Barton
111a40239a Cleanup: match argument names for function & declarations
Match function and declaration names, picking names based on
consistency with related code & clarity.

Also changes for old conventions, missed in previous cleanups:

- name -> filepath
- tname -> newname
- maxlen -> maxncpy
2024-07-27 13:32:51 +10:00
Harley Acheson
9bdd511a27 UI: Always Use Mono Font for Python in Tooltips
When including Python on the tooltips they are meant to be shown using
a monospaced font. This is the case in two of the four places that
python is shown, but not in the other two which include Tool tooltips.
This PR makes them all consistent.

Pull Request: https://projects.blender.org/blender/blender/pulls/125521
2024-07-27 01:51:41 +02:00
Harley Acheson
f2f408bebf UI: Tooltip Final Period and Other Typography
This removes the terminal periods automatically added to the end of
tooltip items. The current desire is to only end in period if there
are multiple sentences - so if there is one in the middle of the
description. This also converts our uses of lists to use space and
bullet, rather than just bullet or asterisks.

Pull Request: https://projects.blender.org/blender/blender/pulls/125460
2024-07-26 18:29:50 +02:00
Sybren A. Stüvel
9dc2f1fed5 Anim: add missing WITH_ANIM_BAKLAVA clauses in some CMakeLists.txt files
Some code was accidentally always disabled, even when building with
experimental features.

Pull Request: https://projects.blender.org/blender/blender/pulls/125482
2024-07-26 13:49:17 +02:00
Julian Eisel
2100623a96 Refactor: UI: Use unique_ptr for tooltip data management
Mostly to allow leak-free early exiting from functions generating the
tooltip data, otherwise cleanups have to be duplicated. But using smart
pointers is good practice in general. Also use references instead of
pointers, to indicate that null is not an expected value.
2024-07-26 12:31:01 +02:00
Campbell Barton
656fe6d3e4 Extensions: support "blocklist" in the remote repository
Support blocking extensions so there is a way for the maintainers of
the remote repository to notify the user if one of their installed
extensions blocked along with a reason for blocking.

Blocked extensions cannot be installed from the preferences or by
dropping a URL.

When an installed & blocked extension is found:

- An icon int the status bar shows an alert,
  clicking on the icon shows the blocked extensions.
- The extensions preferences show a warning.
- The extensions & add-ons UI shows an alert icon
  and "details" section shows the reason.

Details:

- Blocked & installed extensions are shown first in the installed
  extensions panel.
- The internal "install" logic prevents downloading & installing
  blocked extensions.
- Blocked extensions can still be downloaded & installed from disk.
- The "list" command includes an error message if any installed
  extensions are blocked.
- The "server-generate" command can optionally take a configuration
  file that includes the blocklist for the generated JSON.

See design #124954.
2024-07-26 16:05:34 +10:00
Campbell Barton
12a6cefe1a Cleanup: remove redundant theme color lookup 2024-07-26 10:24:36 +10:00
Harley Acheson
5bf44c6eb4 UI: Text Style for Tooltips
This gives users the ability to control the size of tooltip text
separately from other text styles. This is an accessibility issue
in that users with low vision can choose to make these larger than
the working text.

Pull Request: https://projects.blender.org/blender/blender/pulls/125147
2024-07-25 19:12:41 +02:00
Julian Eisel
d2bcca680e Fix asset shelf popup not closing when selecting asset with enter
When typing to search an asset and confirming with enter, the popup
should close.

Mistake in 2781725734.

Steps to reproduce:
- Enter sculpt mode with the default cube active
- Press Shift+Space to open the brush asset selector popup
- Type to search for a brush
- Press enter -- the popup didn't close as it was supposed to
2024-07-25 17:41:49 +02:00
Sybren A. Stüvel
34067f43b5 Fix compiler errors on non-experimental builds
Fix compiler errors when building without experimental features, by adding
more `#ifdef WITH_ANIM_BAKLAVA` guards around code.
2024-07-25 17:31:04 +02:00
Sybren A. Stüvel
a8ee0b9a05 Anim: add Action Slot selector to Action editor
Add an Action Slot selector to the Action editor's header, next to the
Action selector. The selector shows all slots in the action that are
suitable for animating objects (as the Action editor itself is limited
to showing the Action of the active object).

This also considerably simplifies the 'Animation Debug' panel, as some
debugging code has been removed, as well as the display of any animation
layers. The latter can be reintroduced (if necessary) when multi-layer
animation support is added. Most importantly, it removes the
WindowManager property that was used as a hack to assign layered Actions
to objects.

API change: the RNA property `AnimData.slot` is now a pointer property
that reflects the actual slot (it used to be an enum property).

Some small changes to the UI code were necessary to make the selector
show the slot's display name (and not their internal name).

Pull Request: https://projects.blender.org/blender/blender/pulls/125416
2024-07-25 17:20:27 +02:00
Campbell Barton
547b63b69b Cleanup: sort cmake file lists 2024-07-25 11:24:10 +10:00
Campbell Barton
62afbbef9b Cleanup: use const variables & args, pass args by reference 2024-07-25 10:17:40 +10:00
Kamil Galik
3da3f678eb GHOST/NDOF: Extend NDOF devices support on Windows
Commit adds support for new format of RawInput packets used by
3Dconnexion devices: SpaceMouse Enterprise, Keyboard Pro and Numpad Pro
specifically. This required distinguishing processing button data
delivered as a bitmask and as a numbers array.

Basically it allows for using said devices buttons in Blender including
using these buttons in shortcuts.

Changes work only for Windows. MacOS will allow only for older format
that is bitmask.

Details:

- NDOF button event values have been moved into the public GHOST_Types.h
  header and are no longer aligned to the WM event values.
  This was done so the values could be changed to match hardware/drivers
  without breaking key-maps stored in user preferences.
- Keyboard Pro and Numpad Pro buttons are not currently used because
  they don't map to any standard keyboard events.
  These could be supported, see the PR for details.

Ref: !124155
2024-07-24 12:37:08 +10:00
Falk David
7d54e428e4 Fix: GPv3: Crash when changing the active layer
Caused by 0a64785067.
2024-07-23 14:48:03 +02:00
Pratik Borhade
ec220c17f5 GPv3: Rename active_group to active
Follow the changes in 0a64785067
and e373625e73.

Pull Request: https://projects.blender.org/blender/blender/pulls/125297
2024-07-23 12:10:53 +02:00
Philipp Oeser
b25e67189c Fix #125228: Image Editor Memory leaks showing image tooltip thumbnail
Looks like a simple oversight in 8937c0bcab

To resolve, just free the `ImBuf` (same as done in other places that use
`uiTooltipImage`)

Pull Request: https://projects.blender.org/blender/blender/pulls/125231
2024-07-22 17:37:43 +02:00
Sebastian Parborg
b61d308d76 Fix: The position of the redo panel was inconsistent
If the redo panel wasn't initalized from scratch, it would not get the
scrollbar offset. Now always apply this runtime offset.

Pull Request: https://projects.blender.org/blender/blender/pulls/125092
2024-07-22 16:09:44 +02:00
Philipp Oeser
d5d64f4a9f Fix #125006: crash confirming specific operator popup dialog with ENTER
Crash was happening in this scenario:
- mouse was over a property in the dialog
- operator had a "check" callback that was accessing certain operator
stuff

In this case, the `UI_BUT_ACTIVE_DEFAULT` button was executed, operator
finished or canceled (but stuff was freed along the way), then code
kicked in to still handle ENTER over the property in the popup (e.g.
toggle a checkbox), the `uiAfterFunc` still had the `popup_op`, tried to
run `popup_check` again with the faulty data.

Simple way to fix this is to use `WM_UI_HANDLER_BREAK` to not handle
further buttons after executing the `UI_BUT_ACTIVE_DEFAULT`

Pull Request: https://projects.blender.org/blender/blender/pulls/125085
2024-07-22 11:43:06 +02:00
Harley Acheson
108b71047a UI: Remove "Widget Label" Text Style
This PR removes the "Widget Label" text style, found in Preferences /
Themes / Text Style. This results in both labels and the text found in
input boxes sharing settings. This results in a slight loss of
customization but it isn't that useful to have these things separate
and results in code complication and errors.

Pull Request: https://projects.blender.org/blender/blender/pulls/122898
2024-07-19 21:57:49 +02:00
Harley Acheson
ef080a4219 UI: Icon Hover Brightness for Properties Items
Properties category icons with new SVG icons are slightly brighter than
before, and therefore do not seem to brighten on hover. This PR makes
them match exactly. Was assigning an alpha instead of multiplying. And
an earlier refactor for outlines made these icons not show initially
dimmer unless there is also an outline.

Pull Request: https://projects.blender.org/blender/blender/pulls/125029
2024-07-19 04:17:52 +02:00
Harley Acheson
6240a36d18 Refactor: Icon Type ICON_TYPE_MONO_TEXTURE to ICON_TYPE_SVG_MONO
A rename of the icon type ICON_TYPE_MONO_TEXTURE to ICON_TYPE_SVG_MONO
to better reflect the underlying function. This new name makes a nice
matched set with new ICON_TYPE_SVG_COLOR used for SVG in full color.

Pull Request: https://projects.blender.org/blender/blender/pulls/123957
2024-07-17 22:15:09 +02:00
Harley Acheson
6145920a0d UI: Allow Use of Full-Color UI Icons
Allow the optional use of SVG UI icons shown in full color by
changing their definition from DEF_ICON to DEF_ICON_COLOR.

Pull Request: https://projects.blender.org/blender/blender/pulls/124696
2024-07-17 20:13:17 +02:00