Community
Participate
Working Groups
Created attachment 248799 [details] Example to reproduce Using the attached Modeling Example project : 1. Open the diagram 2. Set a breakpoint in RefreshEditorsPrecommitListener.localChangesAboutToCommit() 3. Delete "c2" and diagram refresh is called twice because we have a delete tool for c2 which remove only c2 remove removing the EReference.
The diagram refresh is called twice because we have the DanglingRefRemovalTrigger which is called and update the semantic model to clean the dangling reference EReference.eType which reference the deleted "c2".
The first refresh is done on the "cleaned" model. The second refresh is triggered dure to the "cleaning" notifications. One possibility could be to avoid doing the refresh while the DanglingRefRemovalTrigger cleans the model.
I have a first draft of fix : https://git.eclipse.org/r/36829
Created attachment 248812 [details] Second example with many more semantic content to measure performance. Using the attached example Test2.zip, Do the same scenario : without draft fix : 885 ms to have delete executed through DefaultOperationHistory.execute() with the draft fix : 532 ms
*** Bug 447594 has been marked as a duplicate of this bug. ***
Fixed as da6e4fa79b6b13d8e07c47f72d72b8293ff4eda6 .
Verified on Sirius 3.0.0M6
Validated on Sirius 3.0.0 RC1
Available in Sirius 3.0.0. See https://wiki.eclipse.org/Sirius/3.0.0.