From 075d0a647e426fa3913d9f367b8eb1f91c64dc99 Mon Sep 17 00:00:00 2001 From: irengrig Date: Wed, 21 Dec 2011 13:30:51 +0400 Subject: [PATCH] IDEA-78631 ChangesDetails: the diff should not remain in the Changes view after commit --- .../vcs/changes/ChangesViewManager.java | 46 +++++++------------ 1 file changed, 17 insertions(+), 29 deletions(-) diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ChangesViewManager.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ChangesViewManager.java index 6b82dc03f532..81ddc58e5cf2 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ChangesViewManager.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ChangesViewManager.java @@ -102,7 +102,7 @@ public class ChangesViewManager implements ChangesViewI, JDOMExternalizable, Pro private final TreeSelectionListener myTsl; private final FileAndDocumentListenersForShortDiff myListenersForShortDiff; private Content myContent; - private TreePath[] mySelectedPaths; + private Change[] mySelectedPaths; public static ChangesViewI getInstance(Project project) { return PeriodicalTasksCloser.getInstance().safeGetComponent(project, ChangesViewI.class); @@ -160,11 +160,24 @@ public class ChangesViewManager implements ChangesViewI, JDOMExternalizable, Pro myTsl = new TreeSelectionListener() { @Override public void valueChanged(TreeSelectionEvent e) { - if (mySelectedPaths == null && e.getPaths() == null) { + Change[] selectedChanges = myView.getSelectedChanges(); + if (mySelectedPaths == null && selectedChanges == null) { return; } - if (checkSelectionNotChanged(e)) return; - mySelectedPaths = e.getPaths(); + if (mySelectedPaths != null && selectedChanges != null) { + if (mySelectedPaths.length == selectedChanges.length) { + boolean changed = false; + int idx = 0; + for (; idx < selectedChanges.length; idx++) { + Change change = selectedChanges[idx]; + if (! change.equals(mySelectedPaths[idx])) { + changed = true; + break; + } + } + if (! changed) return; + } + } if (LOG.isDebugEnabled()) { StringWriter sw = new StringWriter(); new Throwable().printStackTrace(new PrintWriter(sw)); @@ -178,31 +191,6 @@ public class ChangesViewManager implements ChangesViewI, JDOMExternalizable, Pro }); } - private boolean checkSelectionNotChanged(TreeSelectionEvent e) { - if (mySelectedPaths != null && e.getPaths() != null) { - if (mySelectedPaths.length == e.getPaths().length) { - boolean equal = true; - int idx = 0; - TreePath[] paths = e.getPaths(); - for (; idx < mySelectedPaths.length; idx ++) { - Object last1 = mySelectedPaths[idx].getLastPathComponent(); - Object last2 = paths[idx].getLastPathComponent(); - if (last1 instanceof ChangesBrowserNode && last2.getClass().equals(last1.getClass())) { - equal = Comparing.equal(((ChangesBrowserNode)last1).getUserObject(), ((ChangesBrowserNode) last2).getUserObject()); - if (! equal) break; - } else { - equal = false; - break; - } - } - if (equal) { - return true; - } - } - } - return false; - } - private String toStringPaths(TreePath[] paths) { if (paths == null) return "null"; if (paths.length == 0) return "empty";