Community
Participate
Working Groups
Currently, the SiriusCommonContentProvider uses SessionListener notifications (REPRESENTATION_CHANGE, SEMANTIC_CHANGE) to refresh itself. In addition of not being performant as we do not know exactly what has changed and hence what must be refreshed, this brakes the EMFT transactional model (as we may be notified during a command execution before all precommit listeners have been called). A beginning of patch: https://git.eclipse.org/r/#/c/33094/
See also org.eclipse.sirius.ui.tools.internal.views.common.navigator.SiriusCommonContentProvider.RefreshViewerTriggerScope.isSemanticChange(Resource) which always return false (corrected in Alex's patch set). We should also analyse if we really have to trigger the refresh/update for semantic changes from the SiriusCommonContentProvider whereas org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider.notifyChanged(Notification) seems to already refresh the semantic elements. Reproduction test case: . Place breakpoints in the previously mentioned code area . Open an EcoreTools class diagram . Add/Rename/Delete some elements and check the refresh/update of the viewer . Add/Rename/Delete representation and check the view refresh . Enable/Disable some viewpoint and check the view refresh Additional Note: If several views with our content provider are refreshed, we have one postcommitlistner per viewer, we might use only one shared post commit listener per sesison.