InlineEdit: Fix jumping to specific line in editor
Inline edit token can contain ,edit@42 as panel. Trim line number from
the panel and append it to rest of the token to match existing parsing
code.
The line number starts from 0 in CodeMirror, but is passed as real line
number in the constructor. Subtract 1 to compute the line number used by
CodeMirror.
Change-Id: Ib623a04c95479f5255eed34ec2a178abfdf57aa0
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/Dispatcher.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/Dispatcher.java
index 8d0b83d..4822343 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/Dispatcher.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/Dispatcher.java
@@ -499,6 +499,11 @@
if (0 <= c) {
panel = rest.substring(c + 1);
rest = rest.substring(0, c);
+ int at = panel.lastIndexOf('@');
+ if (at > 0) {
+ rest += panel.substring(at);
+ panel = panel.substring(0, at);
+ }
}
Change.Id id;
@@ -609,7 +614,7 @@
codemirror(token, null, id, side, line, false);
} else if ("unified".equals(panel)) {
unified(token, baseId, id);
- } else if (panel.startsWith("edit")) {
+ } else if ("edit".equals(panel)) {
codemirror(token, null, id, side, line, true);
} else {
Gerrit.display(token, new NotFoundScreen());
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/editor/EditScreen.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/editor/EditScreen.java
index 498301a..a3af57e 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/editor/EditScreen.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/editor/EditScreen.java
@@ -95,7 +95,7 @@
public EditScreen(Patch.Key patch, int startLine) {
this.revision = patch.getParentKey();
this.path = patch.get();
- this.startLine = startLine;
+ this.startLine = startLine - 1;
prefs = DiffPreferences.create(Gerrit.getAccountDiffPreference());
add(uiBinder.createAndBindUi(this));
addDomHandler(GlobalKey.STOP_PROPAGATION, KeyPressEvent.getType());