Commit Graph

6961 Commits

Author SHA1 Message Date
Julian Eisel
ed38ef31f7 UI: Fix view item context menu not using context from button
Needed for the asset shelf context menu to work, see #104831.

Ensures the view item button's context is passed on to the context menu.
Otherwise it cannot display operators relying on this context.
2023-07-03 15:55:34 +02:00
Falk David
de95539ced Cleanup: Rename grease pencil modes to legacy
Renames `OB_MODE_EDIT_GPENCIL`, `OB_MODE_PAINT_GPENCIL`,  `OB_MODE_SCULPT_GPENCIL`,  `OB_MODE_WEIGHT_GPENCIL`, `OB_MODE_VERTEX_GPENCIL, and the context modes` to `*_LEGACY`.

Pull Request: https://projects.blender.org/blender/blender/pulls/109648
2023-07-03 15:15:54 +02:00
Julian Eisel
0d1f3f445a UI: Support page based scrolling in View2D
No user visible changes expected. The feature is not exposed yet.

For the asset shelf (#102879), design is to use a paginated scrolling
style. That means, that any scrolling will always snap to a multiple of
the page size (the size used when pressing the Page Up/Down keys).
Together with strict region size snapping (implemented in the asset
shelf patch, #104831), this gives a clean scrolling experience where
partially visible rows are avoided (impossible even).

Introduces:
- `View2D.flag` value `V2D_SNAP_TO_PAGESIZE_Y`, which will cause any
  scrolling to only use multiples of the page size.
- A custom page size via `View2D.page_size_y` for when the full region
  size is not the appropriate page size value.
- API function `UI_view2d_offset_y_snap_to_closest_page()` to enforce
  the snapping from outside View2D. The asset shelf uses this to keep
  strict scrolling over DPI changes.

Pull Request: https://projects.blender.org/blender/blender/pulls/109154
2023-07-03 15:15:18 +02:00
Campbell Barton
69aee8ba6b Cleanup: remove redundant (void) for functions with no args in C++ 2023-07-02 19:54:27 +10:00
Campbell Barton
d1e6c8f5a6 Cleanup: spelling in comments 2023-06-28 12:27:48 +10:00
Falk David
eb856f6fbb GPv3: Build group hierarchy for layer tree UI
This commit implements building of the layer tree hierarchy in the
layer tree UI.
Layer Groups that contain layers are now collapsible and visibility as well
as locking can be toggled.
2023-06-27 15:48:07 +02:00
Falk David
bf4e9ffbd9 GPv3: Add rename function for layer groups
This adds core functions to rename layer groups while preserving
name uniqueness.
2023-06-27 15:48:07 +02:00
Julian Eisel
adb370e6ba UI: Use new C++ button apply function
No user visible changes expected.

This function was added in 86b2cf4574 as a more type safe and more
convenient way of setting button callbacks. So use it for simple cases.
2023-06-26 16:56:05 +02:00
Julian Eisel
0b19ab2cde UI: Add type-safe C++ button apply function object
No user visible changes expected.

Rather than relying on a C-style function pointer with void pointer
arguments, allow storing a `std::function` object, which can hold
arbitrary data in a type safe way. This can be conveniently used with
lambdas for example.

This is not used yet, but will be with #104831 merged. Replacing the
existing C-style callback uses with this can be done separately.

Pull Request: https://projects.blender.org/blender/blender/pulls/109016
2023-06-26 16:39:51 +02:00
Harley Acheson
4a80d0b6d5 Refactor: UTF-8 Character Defines
Use defined UTF-8 Universal character names in place of byte escape
sequences and literals.

Pull Request: https://projects.blender.org/blender/blender/pulls/109163
2023-06-26 06:05:18 +02:00
Campbell Barton
82d9eb09db Cleanup: use term SIZE instead of LEN for defines for buffer sizes
Reserve "LEN" for lengths that don't include the null byte.
2023-06-26 10:09:57 +10:00
Campbell Barton
ec428c3f7f CMake: sort file lists, add missing header 2023-06-24 19:05:09 +10:00
Campbell Barton
b06afe575e UI: resolve inconsistency with modifier labels while assigning shortcuts
Reuse WM_keymap_item_to_string to ensure labels match
(would show Cmd on Linux, then refresh to OS once set).
2023-06-23 10:08:58 +10:00
Julian Eisel
b1f7c87b99 Cleanup: Use const for UI coordinate conversion functions 2023-06-22 20:30:46 +02:00
Falk David
a4ef0ac05a GPv3: Add hide and lock buttons to layer UI
This adds two buttons to the items for hiding and locking the layer.
2023-06-22 14:12:08 +02:00
Falk David
16e187778b Fix compiler warnings 2023-06-22 11:11:55 +02:00
Falk David
b3f3b41d09 GPv3: Initial Layer Tree UI
Adds a new UI template to view the current layer tree of the active Grease Pencil object.

This UI tree view implements the following features (for now):
 - Displaying all the layers with their names and highlighting the active layer.
 - Changing the active layer by clicking on an item.
 - Adding new layers (using a new operator).
 - Removing the active layer (using a new operator).
 - Renaming a layer.

Pull Request: https://projects.blender.org/blender/blender/pulls/109197
2023-06-22 10:51:43 +02:00
Julian Eisel
167c5c6b53 Fix UI views not refreshing properly in popovers
No UI views are used inside popups in the main branch yet, #104831 does
this so this issue became apparent. For example tree-view items would
not change their collapsed state.

UI views require the block to be attached to a region when drawing, so
that the matching to previous versions of the tree works. Before this
commit the block was attached just after.

The `BLI_findindex()` check before attaching the block was already done
for other kinds of popups, so this is more in sync now.
2023-06-20 17:23:25 +02:00
Campbell Barton
cf29e011be Cleanup: remove all strcpy calls in source/blender/editors/
Replace with STRNCPY or BLI_strncpy, while many cases were safe,
translated source strings could cause buffer overflows, see: #108917.
2023-06-19 11:58:33 +10:00
Campbell Barton
fde76c8b4d Cleanup: prefer the term 'len' over 'size' for storing string lengths
The Python API uses the term size for string lengths for
PyUnicode_AsUTF8AndSize and related API's, causing Blender's return
arguments to use the term `size` too in some cases.

This is error prone since Blender includes space from the the null byte
when the term size is used (by convention).
2023-06-19 10:21:59 +10:00
Hans Goudey
0b71a1f054 Cleanup: Move UI RNA files to C++
See #103343

Pull Request: https://projects.blender.org/blender/blender/pulls/109090
2023-06-18 01:39:21 +02:00
Julian Eisel
79eebf8aad UI: Add assert for single active view item
No user visible changes expected.

Adds an assert to check that only one item returns true in its
`should_be_active()` method. This can help find some errors.
2023-06-16 14:08:20 +02:00
Julian Eisel
1d4fac0cda Fix tree-view item ignoring custom matches() method override
No user visible change expected (this isn't used in existing code yet).

Users of the tree-view API should be able to write their own `matches()`
method to compare tree-view elements after tree reconstruction. Part of
the tree-view matching process wouldn't use this though, and use the
`matches_single()` method instead, causing issues like multiple items
sharing the same state. This was initially done for an optimization
(the default `matches()` compares parents as well, which seems redundant
here), but it backfires and actually isn't needed. The default
`matches()` only compares the parents when `matches_single()` returns
true anyway, so the redundancy is really minor and not a performance
concern.
2023-06-16 12:37:32 +02:00
Julian Eisel
6868a9503f Fix UI view item without drag support still consuming drag event
UI view items that don't support dragging should pass on the mouse
event.
2023-06-16 11:56:22 +02:00
Julian Eisel
e76d2a241c Fix missing mouse hover highlight for UI view items in menus
The hover highlight is done with some special handling that wasn't
called for buttons in menus. There's actually no case where this happens
in the main branch but it's needed for #104831.
2023-06-16 11:49:04 +02:00
Julian Eisel
962fca47d9 UI: Draw tree-view hover highlight even when emboss is disabled
No user visible changes expected.

It makes sense to disable embossing for drawing the tree view (so it
doesn't have to be disabled for every item individually), but then the
mouse hover highlight should still work.
2023-06-16 11:42:11 +02:00
Julian Eisel
6e5559ab4a Fix UI tree-view item collapsing not working in popups
Tree-views are currently not used in popups in the main branch, but will
be with #104831 merged.
2023-06-16 11:34:01 +02:00
Philipp Oeser
9efd2c9ab6 Merge branch 'blender-v3.6-release' 2023-06-15 11:18:38 +02:00
Philipp Oeser
da052ab9f6 Fix #105942: Wrong text in MeshSequenceCache and Transform Cache
The Alembic procedural was refrenced here even if USD was loaded.

Now check the CacheFile type and let the user know Render Procedurals
are only supported for Alembic atm.

Pull Request: https://projects.blender.org/blender/blender/pulls/108701
2023-06-15 11:16:03 +02:00
Julian Eisel
256146a454 UI: Add setter function for grid view item tile size
No user visible change expected.

Needed in #104831 (not worth polluting the PR with such minor changes,
so committing this to main already).
2023-06-13 18:17:19 +02:00
Julian Eisel
ff44e376ce Cleanup: Return non-const view in grid view item getter
Needed in #104831, not a big deal to let this return non-const (and not
worth polluting the PR with such minor changes).
2023-06-13 18:11:14 +02:00
Julian Eisel
3b78bca592 UI: Allow view items to not be activatable
No user visible changes expected.

In some cases you'd want a view in which no, or not all items can be
activated. Needed for #104831, but makes sense as a general feature for
UI view items.
2023-06-13 18:02:48 +02:00
Julian Eisel
acb4f89a40 UI: Add filtering support to UI views
No user visible changes expected.

Needed for the asset shelf (#102879).

Adds a UI operator triggered on Ctrl+F that will attempt to start
filtering for the hovered UI view, typically enabling a filter text
button.

View items can implement their own filter method, there's no default
one. Maybe we should add default or re-usable string filtering method
though.
Filtering is applied after constructing the view and filtered out (as
in, invisible) items are kept in storage, so that their state
(selection, active, etc.) is preserved. The filtered state is cached in
the item, so this is only done once per redraw.
2023-06-12 12:31:11 +02:00
Campbell Barton
a2865b701d Cleanup: rename max-length to maxncpy as this includes the null byte 2023-06-10 17:21:24 +10:00
Campbell Barton
39516324d2 Cleanup: various minor changes (code_clean.py) 2023-06-10 17:08:08 +10:00
Julian Eisel
92ff750bbf Refactor: Get rid of asset handle for drag & drop
`AssetHandle` is meant as temporary design and should be replaced by
`AssetRepresentation`. This moves us another step closer to that.

Rather than taking data from the volatile asset handle and storing that
in the drag data, store the (more persistent) asset representation there
and access data from it where needed.
2023-06-09 15:19:41 +02:00
Julian Eisel
9b83e9b60c Refactor: Get rid of asset handle in most asset-list iterators
`AssetHandle` is meant as temporary design and should be replaced by
`AssetRepresentation`. This moves us another step closer to that.

There's now an iterator for the asset-list that provides an asset
representation instead of an asset handle. Use that whenever the
representation provides all necessary data (i.e. when no preview image
access is required).
2023-06-09 14:32:55 +02:00
Pratik Borhade
34bca3be26 Merge branch 'blender-v3.6-release' 2023-06-09 14:52:46 +05:30
Pratik Borhade
9735b8ee71 Fix #106966: Register undo-step when unlinking data-block
When unlinking IDs like GN tree, materials, etc. undo step is not created.
To fix this, assign `undo_push_label` a string value for registering an
undo-step (with the help of `ED_undo_push`)

Pull Request: https://projects.blender.org/blender/blender/pulls/108452
2023-06-09 11:20:41 +02:00
Julian Eisel
56f4610a50 Cleanup: Make asset-list function static
The function has static behavior, i.e. doesn't depend on an `AssetList`
instance, so its APIs should reflect that.
2023-06-08 18:22:57 +02:00
Julian Eisel
179a2421ca Refactor: Better context override for text button activate API function
No user visible change expected.

It wasn't clear that the caller of `UI_textbutton_activate_rna()` would
have to override the context region for it to work correctly. This is
only the case because UI internals happen to require it.

Instead of implicitly requiring the caller to do the context override so
UI internals work, do the override inside of the API function in
question.
2023-06-08 17:34:34 +02:00
Philipp Oeser
40473db599 Merge branch 'blender-v3.6-release' 2023-06-08 10:38:31 +02:00
Philipp Oeser
9e598aa0ef Fix #106395: Custom properties dont appear in quick favorites
Issue here was that Quick Favorites use a property's **identifier** when
adding [which is the bare name without brackets etc. from id properties]
but when spawning the actual menu,  `RNA_struct_find_property` expects
the identifier to already include the brackets to know these are id
properties (later on in `screen_user_menu_draw`).

So to solve this, now include the needed syntax when storing the
`bUserMenuItem_Prop` identfier.
Seems the quickest way to append the needed characters is using
`RNA_path_property_py` (not sure if there are better ways to do this).
Also note that we (need to) ignore the actual array index constructing
the string [always pass -1 here] since the index is handled separately [I
tested boolean arrays and these work].

Pull Request: https://projects.blender.org/blender/blender/pulls/108713
2023-06-08 10:37:36 +02:00
Philipp Oeser
288460aded Merge branch 'blender-v3.6-release' 2023-06-07 11:21:49 +02:00
Philipp Oeser
c51467cd4c Fix #108096: UI: copy-paste buttons can change source properties
Pasting numerical array buttons happens with `Ctrl + Alt + V`.
Holding `Alt` also triggers uiSelectContext, so having other nodes/
objects etc. selected while doing this would try to copy the pasted
values back to other objects (possibly to the ones you pasted from) and
that happens relative to the original value, so the value actually
changes.

NOTE: the `Ctrl + Alt + V` shortcut can also be used on non-array buttons, so was an issue for them as well.

To prevent the "copy-to-selected" behavior, refine the `IS_ALLSELECT_EVENT` macro to be more specific.

Pull Request: https://projects.blender.org/blender/blender/pulls/108270
2023-06-07 11:19:05 +02:00
Campbell Barton
1251b7c400 Text: always use TEXT_OT_jump_to_file_at_point for jumping to source
Now the operator is used for both the internal & external editor,
so there is no need for the caller to call this operator only when
the preferences are set.
2023-06-07 15:28:09 +10:00
guishe
e16ec95a16 UI: Add a custom text editor preference
Add a user preference to set up a custom text editor for editing text
files with the "Edit Source" action in the UI context menu.

- An operator TEXT_OT_jump_to_file_at_point has been added.
- A custom editor can be set in the user preferences.
- A preset has been included for "Visual Studio Code".
- When the editor is not set, use Blender's internal editor.

Ref !108299.
2023-06-07 14:09:19 +10:00
Philipp Oeser
693a921f02 Merge branch 'blender-v3.6-release' 2023-06-06 14:25:46 +02:00
Philipp Oeser
014825dd26 Fix: UI: cannot copy-paste many array buttons in nodes
This came up in #108096

Reason this fails is the `ui_but_has_array_value` check [which depends
on a property subtype that supports arrays]. The default `VectorBuilder`
has a `PropertySubType` of `PROP_NONE` though, so one possibility
would be to change this to `PROP_XYZ`.

However, RNA should know much better which RNA property buttons
have arrays than the UI code, so use RNA_property_array_check now
(instead of checking particular UI property subtypes).

Pull Request: https://projects.blender.org/blender/blender/pulls/108349
2023-06-06 14:24:45 +02:00
Brecht Van Lommel
bca3839749 Revert "Cleanup: consistently use rnaindex -1 to mean the no or entire array"
This reverts commit 8ed65fe6de.

Fix #108553: Alt + value change doesn't work for various inputs
Fix #108621: Driven values are no longer marked in purple
2023-06-06 11:34:22 +02:00