diff options
author | Thomas Wolf | 2016-12-14 16:39:00 +0000 |
---|---|---|
committer | Thomas Wolf | 2016-12-14 16:54:19 +0000 |
commit | fee58d4fc1562bfcadf36da28bdf56554a9870b9 (patch) | |
tree | b3903f972b746fb91dd5b5c6cbd32b218e718503 | |
parent | 05634f5b1cd2a268ee71ba33aeed5392ba17e645 (diff) | |
download | egit-fee58d4fc1562bfcadf36da28bdf56554a9870b9.tar.gz egit-fee58d4fc1562bfcadf36da28bdf56554a9870b9.tar.xz egit-fee58d4fc1562bfcadf36da28bdf56554a9870b9.zip |
Fix DiffEditorOutline for pre-Neon Eclipse
In February 2016, default implementations were added to the
IContentProvider interface.[1] Eclipse's before Neon do not
have those, thus content providers need to implement dispose()
and inputChanged() if a platform earlier than Eclipse Neon
is targeted.
[1] https://git.eclipse.org/r/#/c/56214/
Change-Id: I3fc1c21b0c25f27fb60144612920032f28968d44
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
-rw-r--r-- | org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/DiffEditorOutlinePage.java | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/DiffEditorOutlinePage.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/DiffEditorOutlinePage.java index e27a125e26..95b533fef1 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/DiffEditorOutlinePage.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/DiffEditorOutlinePage.java @@ -37,6 +37,7 @@ import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.OpenEvent; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.jface.viewers.Viewer; import org.eclipse.jgit.diff.DiffEntry; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Composite; @@ -252,11 +253,24 @@ public class DiffEditorOutlinePage extends NestedContentOutlinePage { private Map<FileDiffRegion, Folder> parents = new HashMap<>(); @Override - public Object[] getElements(Object inputElement) { + public void inputChanged(Viewer viewer, Object oldInput, + Object newInput) { + folders.clear(); + parents.clear(); + if (newInput instanceof DiffDocument) { + computeFolders(((DiffDocument) newInput).getFileRegions()); + } + } + + @Override + public void dispose() { folders.clear(); parents.clear(); + } + + @Override + public Object[] getElements(Object inputElement) { if (inputElement instanceof DiffDocument) { - computeFolders(((DiffDocument) inputElement).getFileRegions()); return folders.values().toArray(); } return NOTHING; |