Merge "SideBySide2: Restore selection after discarding a new comment"
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/CommentGroup.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/CommentGroup.java
index 5294cd0..23630ea 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/CommentGroup.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/CommentGroup.java
@@ -25,6 +25,7 @@
import net.codemirror.lib.CodeMirror;
import net.codemirror.lib.Configuration;
import net.codemirror.lib.LineWidget;
+import net.codemirror.lib.TextMarker.FromTo;
/**
* LineWidget attached to a CodeMirror container.
@@ -145,6 +146,7 @@
if (lineWidget != null) {
lineWidget.clear();
lineWidget = null;
+ updateSelection();
}
manager.clearLine(cm.side(), line);
removeFromParent();
@@ -201,6 +203,15 @@
}
}
+ private void updateSelection() {
+ if (cm.somethingSelected()) {
+ FromTo r = cm.getSelectedRange();
+ if (r.getTo().getLine() >= line) {
+ cm.setSelection(r.getFrom(), r.getTo());
+ }
+ }
+ }
+
private boolean canComputeHeight() {
return !comments.isVisible() || comments.getOffsetHeight() > 0;
}
@@ -221,5 +232,7 @@
b.padding.getStyle().setHeight(Math.max(0, h - bpx), Unit.PX);
a.lineWidget.changed();
b.lineWidget.changed();
+ a.updateSelection();
+ b.updateSelection();
}
}