Edition lifecycle.
authorMathieu Baudier <mbaudier@argeo.org>
Thu, 21 Jan 2021 09:14:44 +0000 (10:14 +0100)
committerMathieu Baudier <mbaudier@argeo.org>
Thu, 21 Jan 2021 09:14:44 +0000 (10:14 +0100)
org.argeo.cms.ui/src/org/argeo/cms/ui/viewers/AbstractPageViewer.java

index a60c4f62e3824cc498d2c13cf54aaecdc8a07a15..60db89978d9f1ba3493fc582edbce77bffdb1fe6 100644 (file)
@@ -198,9 +198,9 @@ public abstract class AbstractPageViewer extends ContentViewer implements Observ
                        }
 
                        part.startEditing();
+                       edited = part;
                        updateContent(part);
                        prepare(part, caretPosition);
-                       edited = part;
                        edited.getControl().addFocusListener(new FocusListener() {
                                private static final long serialVersionUID = 6883521812717097017L;
 
@@ -239,8 +239,12 @@ public abstract class AbstractPageViewer extends ContentViewer implements Observ
                                save(edited);
 
                        edited.stopEditing();
-                       updateContent(edited);
-                       layout(((EditablePart) edited).getControl());
+                       EditablePart editablePart = edited;
+                       Control control = ((EditablePart) edited).getControl();
+                       edited = null;
+                       // TODO make edited state management more robust
+                       updateContent(editablePart);
+                       layout(control);
                } catch (RepositoryException e) {
                        throw new JcrException("Cannot stop editing", e);
                } finally {