Double click list renaming not working on heavy scenes #40009
Labels
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset System
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Viewport & EEVEE
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Asset Browser Project
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Module
Viewport & EEVEE
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Severity
High
Severity
Low
Severity
Normal
Severity
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
11 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: blender/blender#40009
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
System Information
Operating system: Vista64
Graphics card: gtx470
Blender Version
Broken: 2.7a
Short description of error
When the scene is heavy, so that interface becomes slightly laggy, double click list rename stops working, especially for fast clicking.
Exact steps for others to reproduce the error
Changed status to: 'Open'
Added subscriber: @KonstantinsVisnevskis
#91921 was marked as duplicate of this issue
#88973 was marked as duplicate of this issue
#63650 was marked as duplicate of this issue
#88380 was marked as duplicate of this issue
Added subscriber: @mont29
Added subscribers: @ideasman42, @brecht
@KonstantinsVisnevskis: you can ctrl-click (or ctrl-enter), works fine.
Dev note: looks like in this case, a 'single click' event is processed before a double-one gets generated, which turns to selecting the listrow instead of editing the label (i.e.
ui_do_but_LISTROW()
never gets theKM_DBL_CLICK
event, unless you triple-click, which will then select the item and then edit its label).Not quite sure we consider this a bug, or a todo of our event system?
Added subscriber: @Sergey
@mont29, ideally none of the RNA update should do heavy operations (look into shape key update function, i.e.). But that's also kind of separate issue because you'll need to tag update here anyway which would make first click tagging the object, then object update happens and only them second click is handled which doesn't really help.
What we can do instead is to not activate row if we're single-clicking an active one. Here's a real dirty hack for this http://www.pasteall.org/51656/diff Maybe you'll have ideas how to clean it up a bit.
Changed status from 'Open' to: 'Archived'
This is in fact an “issue” with current event system, you just can’t avoid getting a click first before getting a doubleclick event… More a TODO/internal limitation than a bug, so closing as such (see also our TODO list).
Added subscriber: @lichtwerk
Changed status from 'Archived' to: 'Confirmed'
Since the TODO list is dead, the issue is still there (has been reported again), will set to
Known Issue
to have something as reference.Added subscriber: @PMA33
Added subscribers: @Hucky, @mano-wii, @finnb, @JacquesLucke, @ZedDB, @WilliamReynish, @Dspazio
Added subscriber: @kursadk
Added subscriber: @Jens.Ne
Added subscriber: @Wovchick
Sameis true for UVMaps, see #114835
Will check on these.
I would just make sure that #106903 is not the ultimate fix for this. If it is, then maybe it may not be worth for you to spend time on this now, and instead maybe add this subset of issues to that task as well, to bump its priority.
I do have a local solution that is specific to e.g. vertexgroups (tweaking their RNA property set and property update functions), however, I would first like to check on a more general solution (and if this is known to cause problems):
The following diff just showcases this for INT properties and listrows, but it could be broadened to a wider set of cases:
(it save us from the property's
PropIntSetFunc
and theUpdateFunc
to be executed if the value did not actually change -- in the case of this report: when clicking on the same vertexgroup in the list)@filedescriptor : I recall you had a try at this as well (that got reverted because there were issue with drivers? Undo?) Was this done along the lines of the above? Sill remeber which commit this was?
@brecht @JulianEisel : does the above sound like it is worth pursuing? (otherwise I might still put up a PR with the more localized solution for just a few properties...)
Thx for checking in advance!
@lichtwerk Yes, this looks very familiar. I combed through the history on the archive to find all the related tasks and changes.
(was a proposed fix, but got rejected, because it seemed too unstable)
3bf10e5d0a
Quote from @brecht: "I left a code comment [see below] suggesting to implement this at the RNA set/update level, it's too fragile to reliably which updates may or may not be required at this level of the code."
Here was the code comment:
Thx for the info @filedescriptor !
I tweaked this a bit, so now the whole button handling is basically untouched, it is now really just the property's
PropIntSetFunc
and theUpdateFunc
to be skipped from execution if the value did not actually change:@brecht : this seems to follow your advise from the quoted comment above?
Looks like a good solution yes, but imho the whole
ui_but_value_set
could use some cleanup (do same 'skip update' for other types, harmonize handling of values between RNA and 'raw' data, etc.).It seems fine, the value can be compared against
ui_but_value_get
at the start ofui_but_value_set
to make it work for all types.While avoiding additional updates is good, it doesn´t solve the problem that slow event handling breaks double-click test on WIN32.
We could resolve this by improving event time-stamps for WIN32.
The double-click bug isn´t an issue on Linux/Wayland and from what I can tell macOS wont have this problem either - since both platforms event time-stamps aren´t delayed by Blender refreshing slowly.
On macOS the system events look to have a time-stamp AFAICS this information isn´t available on WIN32 though, so we could consume events in a thread as is done on Wayland.
While adding threaded event handling is a fairly large change only to resolve double-clicking, it has some potential up-sides such as allowing actions to be cancelled that are currently blocking.
I sure have the issue on linux.
@ideasman42 : have you tried this with large enough meshes (e.g. just follow ##114835)
I will try to get out the PR the coming days (atm., triaging has a bit of priority)
Ah, I tested on a heavy scene but not heavy enough, confirmed this issue (even with threaded event handling).
Committed a fix that uses the time-stamps from Wayland events & resolves the issue:
4a735b1d05
.The same solution can be used for X11 (which supplies time-stamps), which would make WIN32 the only remaining platform with the bug, if we can find a way to support a event time-stamps there, this bug could be closed.
There seems to be
GetMessageTime
for Windows. As used in various UI toolkits and described here.https://devblogs.microsoft.com/oldnewthing/20041018-00/?p=37543
Resolution is only 16ms, but should be ok for this. Also need to take into account wraparound somehow.
Committed fix for X11 (
efef709ec7
).Is anyone on WIN32 able to investigate the solution Brecht suggests?