from Alexander Kuznetsov (alexk)
bugfix for [#23553] F2 on filebrowser = bug?
from the tracker
--- snip
File Explorer redraws weirdly on second press of F2 if non-default view or file types were selected previously.
This patch prohibits second call of file selector in the same window.
The bug goes much deeper. If file selector is never closed properly (cancel or select), it never gets released. (at
least the handler). If you press F2 or Ctrl-F3 ten times and than "Back to Previous" and repeat all of this
several times Blender will freeze. Also after calling file selector at least two times, on cancellation Blender will
return to full area independently to what state it was before.
---
include small unrelated change to quiet unpack prints when fonts are not found.
Playback Jog Keys:
ALT+LEFTARROW: play backward (hit again for double speed)
ALT+RIGHTARROW: play fordward (hit again for double speed)
ALT+DOWNARROW: start/stop animation
Bugfix for [#22284] Blender cursor gets stuck in the timeline when scrubbing (jack transport).
Dirty hack fix for:
* [#22366] Cutting audio and meta strips with audio does not actually cut audio
* [#22639] Audio not clipped to meta bounds
Also fixed a seemingly symptomless bug in sequencer_edit.c
it stores it and sets it later when the double click event is handled.
Decided to not reuse prevx but made prevclickx, because there may be
multiple mousemoves between the two clicks, and prevx is already used
for some other tricky things.
necessary due to the more accurate mouse move events that are useful for
sculpting and painting (at least on Linux/X11, not sure about other platforms).
If the update function takes a while to run, this in turn causes more mouse
move events to be accumulated, making things even slower, .. going into a spiral
of slower and slower redraws.
As a solution I've added a INBETWEEN_MOUSEMOVE event next to MOUSEMOVE. A
MOUSEMOVE event is automatically changed to INBETWEEN_MOUSEMOVE when a
MOUSEMOVE event is added after it. This new event type is only handled by
painting/sculpting operators, everything else can happily ignore it.
path -> filepath (for rna and operators, as agreed on with elubie)
path -> data_path (for windowmanager context functions, this was alredy used in many places)
* Now it displays the last report from the global list, not just from operators
* Rather than disappearing when a new operator is run, it stays until it times
out or a new report is added
* Fun animated transitions ;)
http://mke3.net/blender/devel/2.5/reports_header.mov
Now need to investigate report usage with popups. Ideally we can have most
reports non-blocking, so they're less intrusive, only popping up for dire errors.
Problem is many things in Blender right now are marked as RPT_ERROR
when probably RPT_WARNING is more appropriate. Should probably keep
RPT_ERROR for things that demand immediate attention.
- ALT+Scrollwheel zooms backdrop in node editor
- Blender -d debug print will also print every event except mouse moves
(needed to debug WM, some events are catched by OS)
- Changed order of keymaps... the default maps now are evaluated *after*
the own custom maps, so you can make overrides or defaults.
- Disallow this and report a warning in the console when it happens.
- File selector operators now report in the global report console.
- Cleared some warnings.
- Rename option and flag to something more sane
- Add property to manipulator operator and set true by default
Confirm on Release can now be forced true or false per operator, in which case it won't use the default value (the user preference).
Added automatic generation of lookup_int callbacks for collections, for
quicker lookup by index instead of looping over the whole thing. Import
is still quite slow, though now it only takes a few seconds.
The next bottleneck seems to be running update (depsgraph, notifiers, ..)
on setting every property. I fixed part of that by avoiding a notifier
to be added each time, now it checks for duplicates.
Previous code was assuming an event can only be sent from the active window.
On OSX, Right, Middle mouse buttons, mouse wheel and trackpad events are sent to inactive windows too.
For example, this allows to zoom, pan the view without changing the window order.
This commit adds a few more execution contexts for operators, given the increasing tendency for some special regiontypes to exist within areas that must have their own set of special operators.
Examples of these include the "channel" operators in the Animation Editors (i.e. those in the 'Channels' menu), and the "Fit to Preview Window" operator for the Sequencer.
Previously, operators such as these would not function when clicked on from the menus, and they would not show the hotkeys they were mapped to.
Also, fixed a few operator definitions in the Animation Editors which were missing ot->prop defines. This meant that some hotkeys (mainly selection) were shown incorrectly in the menus.
view, and be stuck there permantenly when leaving the region. Now the
button interaction is cancelled when starting a modal operator, not too
happy about this, but couldn't think of another way to detect this well.
account in quad split 3d view. Now WM_OP_EXEC/INVOKE_REGION_WIN
context stays in the current region if it is already a region
of type window, so the operator gets executed in the right context.
- Icons for brushes disabled List Box to work (paint buttons)
- Mouse-release in secondary Blender windows didn't get registered
in window where mouse-press initiated.
And fixed annoyance: adding image strip makes it 25 frames long, so
you can drag and extend it easily.
Python operators calling C operators would get too many undo pushes,
causing redo of the python operator not to work. Now the depth of
operator callbacks is counted to detected nested calls, and in that
case skip the undo/register here, and only do a single undo/register
for the mother operator.
Store last mmb event value to make emulation work when modifier keys are released first.
This is done in a not so nice way for now. Eventually, I'd like for emulation keys to have their own data structures (user creatable and all that)
The 'save over' popup was only appearing based on a string comparison of the operator name ("Save"). Changed this to use a hidden operator property: "check_existing". Python operators must
have this property for the file selector confirmation too.
This property can also be set to false, to prevent checking for existing files, useful in the File->Save menu item to prevent the dangerously missable confirmation popup.