merge: simplify highligters update

* update inner highlighters independently
This commit is contained in:
Aleksey Pivovarov
2016-03-03 17:49:47 +03:00
parent e2abf64282
commit 6cd658dfc8
2 changed files with 5 additions and 15 deletions
@@ -59,8 +59,7 @@ public class TextMergeChange extends ThreesideDiffChangeBase {
private final boolean[] myResolved = new boolean[2];
private boolean myOnesideAppliedConflict;
@Nullable private List<MergeWordFragment> myInnerFragments;
private boolean myInnerFragmentsDamaged;
@Nullable private List<MergeWordFragment> myInnerFragments; // warning: might be out of date
@CalledInAwt
public TextMergeChange(@NotNull MergeLineFragment fragment, int index, @NotNull TextMergeViewer viewer) {
@@ -128,11 +127,6 @@ public class TextMergeChange extends ThreesideDiffChangeBase {
destroyHighlighter();
installHighlighter();
if (!myInnerFragmentsDamaged) {
destroyInnerHighlighter();
installInnerHighlighter();
}
myViewer.repaintDividers();
}
@@ -175,7 +169,6 @@ public class TextMergeChange extends ThreesideDiffChangeBase {
void setResolved(@NotNull Side side, boolean value) {
myResolved[side.getIndex()] = value;
markInnerFragmentsDamaged();
if (isResolved()) {
destroyInnerHighlighter();
}
@@ -247,16 +240,15 @@ public class TextMergeChange extends ThreesideDiffChangeBase {
myEndLine = value;
}
public void markInnerFragmentsDamaged() {
myInnerFragmentsDamaged = true;
}
@CalledInAwt
public void setInnerFragments(@Nullable List<MergeWordFragment> innerFragments) {
myInnerFragmentsDamaged = false;
if (myInnerFragments == null && innerFragments == null) return;
myInnerFragments = innerFragments;
doReinstallHighlighter();
destroyInnerHighlighter();
installInnerHighlighter();
}
//
@@ -649,7 +649,6 @@ public class TextMergeViewer implements MergeTool.MergeViewer {
myChangesToUpdate.add(change);
}
else {
change.markInnerFragmentsDamaged();
change.doReinstallHighlighter();
myInnerDiffWorker.scheduleRediff(change);
}
@@ -667,7 +666,6 @@ public class TextMergeViewer implements MergeTool.MergeViewer {
if (myBulkChangeUpdateDepth == 0) {
for (TextMergeChange change : myChangesToUpdate) {
change.markInnerFragmentsDamaged();
change.doReinstallHighlighter();
}
myInnerDiffWorker.scheduleRediff(myChangesToUpdate);