Currently it's effectively a boolean for file-select handlers.
Prepare for refactoring event handlers into their own types (keymap,
operator, gizmo, ui & dropbox) to help make logic easier to follow.
This feature is intended only for testing,
to automate simulating user input.
- Enabled by '--enable-event-simulate'.
- Disables handling all real input events.
- Access by calling `Window.event_simulate(..)`
- Disabling `bpy.app.use_event_simulate`
to allow handling real events (can only disable).
Currently only mouse & keyboard events work well,
NDOF, IME... etc could be added as needed.
See D4286 for example usage.
BF-admins agree to remove header information that isn't useful,
to reduce noise.
- BEGIN/END license blocks
Developers should add non license comments as separate comment blocks.
No need for separator text.
- Contributors
This is often invalid, outdated or misleading
especially when splitting files.
It's more useful to git-blame to find out who has developed the code.
See P901 for script to perform these edits.
This reverts commit 1d908bffdd.
Enough uses of repeat last expect skip-save properties to be set,
transform being the most obvious example T60777#605681.
I wanted to avoid operators having account for two kinds of 'skip-save'
but this may be unavoidable.
PROP_SKIP_SAVE is often used as a way to detect the difference between
adjusting options from the redo panel and initial execution.
Repeat last operator was executing with skip-save properties set,
preventing operators from initializing them based on the context.
Fixes 60777.
Not sharing caused duplication in the keymap and
required a factory class generator.
Simplify tool & keymap definitions by sharing them.
It's highly unlikely we will ever want these to use different keys
once they're set as the active tool.
There is a new `bpy.app.timers` api.
For more details, look in the Python API documentation.
Reviewers: campbellbarton
Differential Revision: https://developer.blender.org/D3994
This fixes conflicts where the tool and editor keymap use different event
types. Tools need to be able to mouse buttons on PRESS without triggering
CLICK events in the editor keymap.
Previously this was hardcoded to 2 pixels, which is too low for tablets and
not taking into account DPI. Now we set it equal to the tweak threshold, so
you either always do click or drag.
The default distance of 10 pixels may be quite far for something to be
considered a click, and we'll need to see how well it works. But I find this
to help a lot when selecting vertices in quick succession.
Thanks to Julien for spotting this.
The intention is to fix a too low default threshold on high DPI screen.
Users with high DPI screens that have increased the threshold to fix this
or liked the lower threshold will need to lower it again.
This is still somewhat of a guess, ideally this would be based on the
physical distance travalled, and maybe different per type of input device.
However we do not have access to this information, and hope this gives a
better default.
Grease Pencil already implements support for full-featured
per-brush pressure curves, but it is useful to have some
basic global settings that affect all brushes and tools.
This adds two simple options:
- Raw pressure required to achieve full brush intensity.
- Softness control, using a gamma curve internally.
The most important one is the max pressure setting, because it is
critical for ergonomics, but the Linux Wacom driver lacks it.
The softness option internally converts to gamma = 4^-softness.
Reviewers: brecht, campbellbarton
Differential Revision: https://developer.blender.org/D3967
This may improve reliability with left click select and pen input, assuming
that the place where the pen first touched the surface is closer to the
intended location than where it was released from the surface.
I'm not sure if this will make a significant difference in practice, but it
seems worth a try.
For Blender builtin configurations the option to choose the select mouse remains
and is now also in the splash screen. It works by changing the keymap dynamically
in the script, rather than using special events.
The system of automatic switching of events was not flexible enough to deal with
side effects that require further keymap changes, so it is now under more manual
control in the script.
This breaks compatibility for some scripts and exported key configurations.
These can be fixed by replacing SELECTMOUSE, ACTIONMOUSE, EVT_TWEAK_S and
EVT_TWEAK_A with appropriate LEFTMOUSE, RIGHTMOUSE, EVT_TWEAK_L and
EVT_TWEAK_R events.
Other than that, there should be no functional changes.
This is a variation of legacy dependency graph update check based on
G.is_rendering. Now it is ensured, that locked interface does not
tempter around with the dependency graph.
It is a whole point of copy-on-write to make such updates safe.
If this causes an issues, we need to solve them.
Fixes T57302: Viewport (selection etc) not updated while rendering
Problem was that the event was not `NULL` even though the `context` is `WM_OP_EXEC_*`.
I noticed this problem when dropping .blend files into Blender.
Instead of only executing `WM_OT_open_mainfile`, it was invoked (opening a file selector).
The `wm_operator_invoke`, which also executes operators, always invokes operators when `event != NULL`. So setting `event` to `NULL` tells `wm_operator_invoke` not to invoke but to execute the operator.
Reviewers: brecht
Differential Revision: https://developer.blender.org/D3799
The first time setup screen only has the interaction preset currently, some
more work is needed to be able to set e.g. the language or compute device
here as in the mockups.
The splash screen stayed the same for now, to make room for the templates
most of the links are now in the Help menu. If there are no recent files yet
the links still show.
The splash screen buttons implementation was fully moved to Python, in the
WM_MT_splash menu.