Merge "Inject InitStep members again before calling postRun." into stable-2.9
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/SideBySide2.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/SideBySide2.java
index 7d8ee97..881bcec 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/SideBySide2.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/SideBySide2.java
@@ -43,7 +43,7 @@
import com.google.gwt.core.client.Scheduler.ScheduledCommand;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.NativeEvent;
-import com.google.gwt.dom.client.Style.Unit;
+import com.google.gwt.dom.client.Style;
import com.google.gwt.event.dom.client.FocusEvent;
import com.google.gwt.event.dom.client.FocusHandler;
import com.google.gwt.event.dom.client.KeyCodes;
@@ -101,6 +101,7 @@
private CodeMirror cmB;
private Element columnMarginA;
private Element columnMarginB;
+ private double charWidthPx;
private HandlerRegistration resizeHandler;
private DiffInfo diff;
private boolean largeFile;
@@ -580,13 +581,32 @@
}
void setLineLength(int columns) {
- columnMarginA.getStyle().setMarginLeft(
- columns * cmA.defaultCharWidth()
- + cmA.getGutterElement().getOffsetWidth(), Unit.PX);
+ double w = columns * getCharWidthPx();
+ columnMarginA.getStyle().setMarginLeft(w, Style.Unit.PX);
+ columnMarginB.getStyle().setMarginLeft(w, Style.Unit.PX);
+ }
- columnMarginB.getStyle().setMarginLeft(
- columns * cmB.defaultCharWidth()
- + cmB.getGutterElement().getOffsetWidth(), Unit.PX);
+ private double getCharWidthPx() {
+ if (charWidthPx <= 1) {
+ int len = 100;
+ StringBuilder s = new StringBuilder();
+ for (int i = 0; i < len; i++) {
+ s.append('m');
+ }
+ Element e = DOM.createSpan();
+ e.getStyle().setDisplay(Style.Display.INLINE_BLOCK);
+ e.setInnerText(s.toString());
+
+ cmA.getMoverElement().appendChild(e);
+ double a = ((double) e.getOffsetWidth()) / len;
+ e.removeFromParent();
+
+ cmB.getMoverElement().appendChild(e);
+ double b = ((double) e.getOffsetWidth()) / len;
+ e.removeFromParent();
+ charWidthPx = Math.max(a, b);
+ }
+ return charWidthPx;
}
void setShowLineNumbers(boolean b) {