From 188e321404b2f0e628a6a0aabc701461c5d2fbd0 Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Mon, 31 Mar 2014 11:43:45 +0400 Subject: [PATCH] diff: do not show 'contents identical' if we can't calculate diff ex: modified image file --- .../src/com/intellij/openapi/diff/impl/DiffPanelImpl.java | 6 +++--- .../diff/impl/highlighting/FragmentedDiffPanelState.java | 4 +++- .../diff/impl/highlighting/SimpleDiffPanelState.java | 4 +++- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/diff/impl/DiffPanelImpl.java b/platform/platform-impl/src/com/intellij/openapi/diff/impl/DiffPanelImpl.java index e421492bf272..13585f91fbcd 100644 --- a/platform/platform-impl/src/com/intellij/openapi/diff/impl/DiffPanelImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/diff/impl/DiffPanelImpl.java @@ -347,8 +347,8 @@ public class DiffPanelImpl implements DiffPanelEx, ContentChangeListener, TwoSid myPanel.removeTopComponent(myTopMessageDiffPanel); } LineBlocks blocks = myData.updateEditors(); - setLineBlocks(blocks); - if (blocks.getCount() == 0) { + setLineBlocks(blocks != null ? blocks : LineBlocks.EMPTY); + if (blocks != null && blocks.getCount() == 0) { if (myData.isContentsEqual()) { setFileContentsAreIdentical(); } @@ -420,7 +420,7 @@ public class DiffPanelImpl implements DiffPanelEx, ContentChangeListener, TwoSid setTitle(title, false); } - private void setLineBlocks(LineBlocks blocks) { + private void setLineBlocks(@NotNull LineBlocks blocks) { myLineBlocks = blocks; mySplitter.redrawDiffs(); updateStatusBar(); diff --git a/platform/platform-impl/src/com/intellij/openapi/diff/impl/highlighting/FragmentedDiffPanelState.java b/platform/platform-impl/src/com/intellij/openapi/diff/impl/highlighting/FragmentedDiffPanelState.java index 7e395c1b4a9e..3efb946fc0e1 100644 --- a/platform/platform-impl/src/com/intellij/openapi/diff/impl/highlighting/FragmentedDiffPanelState.java +++ b/platform/platform-impl/src/com/intellij/openapi/diff/impl/highlighting/FragmentedDiffPanelState.java @@ -32,6 +32,7 @@ import com.intellij.util.BeforeAfter; import com.intellij.util.Consumer; import com.intellij.util.diff.FilesTooBigForDiffException; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import javax.swing.*; import java.awt.*; @@ -90,11 +91,12 @@ public class FragmentedDiffPanelState extends DiffPanelState { myAppender2.resetHighlighters(); } + @Nullable public LineBlocks updateEditors() throws FilesTooBigForDiffException { resetMarkup(); mySeparatorsPositionConsumer.clear(); if (myAppender1.getEditor() == null || myAppender2.getEditor() == null) { - return LineBlocks.EMPTY; + return null; } int previousBefore = -1; diff --git a/platform/platform-impl/src/com/intellij/openapi/diff/impl/highlighting/SimpleDiffPanelState.java b/platform/platform-impl/src/com/intellij/openapi/diff/impl/highlighting/SimpleDiffPanelState.java index d3e1dfd5a64a..fc26cf634e88 100644 --- a/platform/platform-impl/src/com/intellij/openapi/diff/impl/highlighting/SimpleDiffPanelState.java +++ b/platform/platform-impl/src/com/intellij/openapi/diff/impl/highlighting/SimpleDiffPanelState.java @@ -28,6 +28,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Disposer; import com.intellij.util.diff.FilesTooBigForDiffException; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.Iterator; @@ -108,10 +109,11 @@ public abstract class SimpleDiffPanelState implements Disposable { ApplicationManager.getApplication().runWriteAction(new ResetMarkupRunnable(this)); } + @Nullable public LineBlocks updateEditors() throws FilesTooBigForDiffException { resetMarkup(); if (myAppender1.getEditor() == null || myAppender2.getEditor() == null) { - return LineBlocks.EMPTY; + return null; } return addMarkup( -- 2.32.0