Idle: bail bei User-Transform (Move/Drag/Gumball) — Element bleibt zusammen

Der Idle-Handler verarbeitet Pending-Regens + Cascade-Queues. Lief bislang
auch waehrend _UT_ACTIVE_KEY (Move/Gumball/Drag), debounct nur ueber
last_replace_time. Auf Mac feuert Move aber teils via Delete+Re-Add statt
Replace → debounce greift nicht zuverlaessig, Idle koennte mitten in einem
Move ein Volume regenerieren und damit die Geometrie unter Rhinos Transform
wegziehen → einzelne Sub-Volumen blieben am alten Ort, Element zerfaellt
optisch.

Fix: idle bail bei _UT_ACTIVE_KEY. CommandEnd der Transform-Cmds sync't
Volumen selber, dort werden die Regens richtig in den Transform-Undo-Record
gefaltet.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-20 13:31:31 +02:00
parent b14eb1e5dd
commit 9cde41b686
+6
View File
@@ -9240,6 +9240,12 @@ def _on_idle_selection(sender, e):
# Waehrend Bulk-Op (z.B. _Delete bei 6000 OSM-Curves): nicht pollen. # Waehrend Bulk-Op (z.B. _Delete bei 6000 OSM-Curves): nicht pollen.
# Wuerde sonst pro Idle-Tick alle Objekte iterieren = Quasi-Stall. # Wuerde sonst pro Idle-Tick alle Objekte iterieren = Quasi-Stall.
if sc.sticky.get(_BULK_ACTIVE_KEY): return if sc.sticky.get(_BULK_ACTIVE_KEY): return
# Waehrend User-Transform (Move/Drag/Gumball): keine Regen-/Cascade-
# Verarbeitung. Sonst kann ein gequeuter Regen die Geometrie wegziehen
# die Rhino gerade interaktiv transformiert → Element zerfaellt
# waehrend des Verschiebens. Die Transform-CommandEnd-Logik kuemmert
# sich selber um Volume-Sync am Ende.
if sc.sticky.get(_UT_ACTIVE_KEY): return
b = sc.sticky.get("elemente_bridge") b = sc.sticky.get("elemente_bridge")
if b is None: return if b is None: return
doc = Rhino.RhinoDoc.ActiveDoc doc = Rhino.RhinoDoc.ActiveDoc