Merge changes Ifc9a1871,I598f91b5
* changes: Move "move cursor on selection" to gr-diff-cursor Upgrade gr-diff-cursor event handling to Polymer 3
This commit is contained in:
@@ -1104,11 +1104,6 @@ class GrFileList extends mixinBehaviors( [
|
||||
return expandedFilesRecord.base.some(f => f.path === path);
|
||||
}
|
||||
|
||||
_onLineSelected(e, detail) {
|
||||
this.$.diffCursor.moveToLineNumber(detail.number, detail.side,
|
||||
detail.path);
|
||||
}
|
||||
|
||||
_computeExpandedFiles(expandedCount, totalCount) {
|
||||
if (expandedCount === 0) {
|
||||
return GrFileListConstants.FilesExpandedState.NONE;
|
||||
|
@@ -385,7 +385,7 @@ export const htmlTemplate = html`
|
||||
</div>
|
||||
</div>
|
||||
<template is="dom-if" if="[[_isFileExpanded(file.__path, _expandedFiles.*)]]">
|
||||
<gr-diff-host no-auto-render="" show-load-failure="" display-line="[[_displayLine]]" hidden="[[!_isFileExpanded(file.__path, _expandedFiles.*)]]" change-num="[[changeNum]]" patch-range="[[patchRange]]" path="[[file.__path]]" prefs="[[diffPrefs]]" project-name="[[change.project]]" on-line-selected="_onLineSelected" no-render-on-prefs-change="" view-mode="[[diffViewMode]]"></gr-diff-host>
|
||||
<gr-diff-host no-auto-render="" show-load-failure="" display-line="[[_displayLine]]" hidden="[[!_isFileExpanded(file.__path, _expandedFiles.*)]]" change-num="[[changeNum]]" patch-range="[[patchRange]]" path="[[file.__path]]" prefs="[[diffPrefs]]" project-name="[[change.project]]" no-render-on-prefs-change="" view-mode="[[diffViewMode]]"></gr-diff-host>
|
||||
</template>
|
||||
</div>
|
||||
</template>
|
||||
|
@@ -1104,7 +1104,10 @@ suite('gr-file-list tests', () => {
|
||||
cancel() {},
|
||||
getCursorStops() { return []; },
|
||||
addEventListener(eventName, callback) {
|
||||
callback(new Event(eventName));
|
||||
if (['render-start', 'render-content', 'scroll']
|
||||
.indexOf(eventName) >= 0) {
|
||||
callback(new Event(eventName));
|
||||
}
|
||||
},
|
||||
}];
|
||||
sinon.stub(element, 'diffs', {
|
||||
|
@@ -127,6 +127,14 @@ class GrDiffCursor extends GestureEventListeners(
|
||||
];
|
||||
}
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
this._boundHandleWindowScroll = () => this._handleWindowScroll();
|
||||
this._boundHandleDiffRenderStart = () => this._handleDiffRenderStart();
|
||||
this._boundHandleDiffRenderContent = () => this._handleDiffRenderContent();
|
||||
this._boundHandleDiffLineSelected = e => this._handleDiffLineSelected(e);
|
||||
}
|
||||
|
||||
/** @override */
|
||||
ready() {
|
||||
super.ready();
|
||||
@@ -148,16 +156,16 @@ class GrDiffCursor extends GestureEventListeners(
|
||||
}
|
||||
|
||||
/** @override */
|
||||
attached() {
|
||||
super.attached();
|
||||
connectedCallback() {
|
||||
super.connectedCallback();
|
||||
// Catch when users are scrolling as the view loads.
|
||||
this.listen(window, 'scroll', '_handleWindowScroll');
|
||||
window.addEventListener('scroll', this._boundHandleWindowScroll);
|
||||
}
|
||||
|
||||
/** @override */
|
||||
detached() {
|
||||
super.detached();
|
||||
this.unlisten(window, 'scroll', '_handleWindowScroll');
|
||||
disconnectedCallback() {
|
||||
super.disconnectedCallback();
|
||||
window.removeEventListener('scroll', this._boundHandleWindowScroll);
|
||||
}
|
||||
|
||||
moveLeft() {
|
||||
@@ -315,6 +323,11 @@ class GrDiffCursor extends GestureEventListeners(
|
||||
this._preventAutoScrollOnManualScroll = false;
|
||||
}
|
||||
|
||||
_handleDiffLineSelected(event) {
|
||||
this.moveToLineNumber(
|
||||
event.detail.number, event.detail.side, event.detail.path);
|
||||
}
|
||||
|
||||
createCommentInPlace() {
|
||||
const diffWithRangeSelected = this.diffs
|
||||
.find(diff => diff.isRangeSelected());
|
||||
@@ -472,21 +485,22 @@ class GrDiffCursor extends GestureEventListeners(
|
||||
spliceIdx++) {
|
||||
splice = changeRecord.indexSplices[spliceIdx];
|
||||
|
||||
for (i = splice.index;
|
||||
i < splice.index + splice.addedCount;
|
||||
i++) {
|
||||
this.listen(this.diffs[i], 'render-start', '_handleDiffRenderStart');
|
||||
this.listen(
|
||||
this.diffs[i], 'render-content', '_handleDiffRenderContent');
|
||||
for (i = splice.index; i < splice.index + splice.addedCount; i++) {
|
||||
this.diffs[i].addEventListener(
|
||||
'render-start', this._boundHandleDiffRenderStart);
|
||||
this.diffs[i].addEventListener(
|
||||
'render-content', this._boundHandleDiffRenderContent);
|
||||
this.diffs[i].addEventListener(
|
||||
'line-selected', this._boundHandleDiffLineSelected);
|
||||
}
|
||||
|
||||
for (i = 0;
|
||||
i < splice.removed && splice.removed.length;
|
||||
i++) {
|
||||
this.unlisten(splice.removed[i],
|
||||
'render-start', '_handleDiffRenderStart');
|
||||
this.unlisten(splice.removed[i],
|
||||
'render-content', '_handleDiffRenderContent');
|
||||
for (i = 0; i < splice.removed && splice.removed.length; i++) {
|
||||
splice.removed[i].removeEventListener(
|
||||
'render-start', this._boundHandleDiffRenderStart);
|
||||
splice.removed[i].removeEventListener(
|
||||
'render-content', this._boundHandleDiffRenderContent);
|
||||
splice.removed[i].removeEventListener(
|
||||
'line-selected', this._boundHandleDiffLineSelected);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -136,6 +136,20 @@ suite('gr-diff-cursor tests', () => {
|
||||
assert.equal(cursorElement._scrollBehavior, 'keep-visible');
|
||||
});
|
||||
|
||||
test('moves to selected line', () => {
|
||||
const moveToNumStub = sandbox.stub(cursorElement, 'moveToLineNumber');
|
||||
|
||||
cursorElement._handleDiffLineSelected(
|
||||
new CustomEvent('line-selected', {
|
||||
detail: {number: '123', side: 'right', path: 'some/file'},
|
||||
}));
|
||||
|
||||
assert.isTrue(moveToNumStub.called);
|
||||
assert.equal(moveToNumStub.lastCall.args[0], '123');
|
||||
assert.equal(moveToNumStub.lastCall.args[1], 'right');
|
||||
assert.equal(moveToNumStub.lastCall.args[2], 'some/file');
|
||||
});
|
||||
|
||||
suite('unified diff', () => {
|
||||
setup(done => {
|
||||
// We must allow the diff to re-render after setting the viewMode.
|
||||
|
@@ -1033,7 +1033,6 @@ class GrDiffView extends mixinBehaviors( [
|
||||
}
|
||||
|
||||
_onLineSelected(e, detail) {
|
||||
this.$.cursor.moveToLineNumber(detail.number, detail.side);
|
||||
if (!this._change) { return; }
|
||||
const cursorAddress = this.$.cursor.getAddress();
|
||||
const number = cursorAddress ? cursorAddress.number : undefined;
|
||||
|
@@ -904,7 +904,6 @@ suite('gr-diff-view tests', () => {
|
||||
test('_onLineSelected', () => {
|
||||
const getUrlStub = sandbox.stub(Gerrit.Nav, 'getUrlForDiffById');
|
||||
const replaceStateStub = sandbox.stub(history, 'replaceState');
|
||||
const moveStub = sandbox.stub(element.$.cursor, 'moveToLineNumber');
|
||||
sandbox.stub(element.$.cursor, 'getAddress')
|
||||
.returns({number: 123, isLeftSide: false});
|
||||
|
||||
@@ -919,10 +918,6 @@ suite('gr-diff-view tests', () => {
|
||||
|
||||
element._onLineSelected(e, detail);
|
||||
|
||||
assert.isTrue(moveStub.called);
|
||||
assert.equal(moveStub.lastCall.args[0], detail.number);
|
||||
assert.equal(moveStub.lastCall.args[1], detail.side);
|
||||
|
||||
assert.isTrue(replaceStateStub.called);
|
||||
assert.isTrue(getUrlStub.called);
|
||||
});
|
||||
|
Reference in New Issue
Block a user