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);
|
return expandedFilesRecord.base.some(f => f.path === path);
|
||||||
}
|
}
|
||||||
|
|
||||||
_onLineSelected(e, detail) {
|
|
||||||
this.$.diffCursor.moveToLineNumber(detail.number, detail.side,
|
|
||||||
detail.path);
|
|
||||||
}
|
|
||||||
|
|
||||||
_computeExpandedFiles(expandedCount, totalCount) {
|
_computeExpandedFiles(expandedCount, totalCount) {
|
||||||
if (expandedCount === 0) {
|
if (expandedCount === 0) {
|
||||||
return GrFileListConstants.FilesExpandedState.NONE;
|
return GrFileListConstants.FilesExpandedState.NONE;
|
||||||
|
@@ -385,7 +385,7 @@ export const htmlTemplate = html`
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<template is="dom-if" if="[[_isFileExpanded(file.__path, _expandedFiles.*)]]">
|
<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>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
@@ -1104,7 +1104,10 @@ suite('gr-file-list tests', () => {
|
|||||||
cancel() {},
|
cancel() {},
|
||||||
getCursorStops() { return []; },
|
getCursorStops() { return []; },
|
||||||
addEventListener(eventName, callback) {
|
addEventListener(eventName, callback) {
|
||||||
callback(new Event(eventName));
|
if (['render-start', 'render-content', 'scroll']
|
||||||
|
.indexOf(eventName) >= 0) {
|
||||||
|
callback(new Event(eventName));
|
||||||
|
}
|
||||||
},
|
},
|
||||||
}];
|
}];
|
||||||
sinon.stub(element, 'diffs', {
|
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 */
|
/** @override */
|
||||||
ready() {
|
ready() {
|
||||||
super.ready();
|
super.ready();
|
||||||
@@ -148,16 +156,16 @@ class GrDiffCursor extends GestureEventListeners(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** @override */
|
/** @override */
|
||||||
attached() {
|
connectedCallback() {
|
||||||
super.attached();
|
super.connectedCallback();
|
||||||
// Catch when users are scrolling as the view loads.
|
// Catch when users are scrolling as the view loads.
|
||||||
this.listen(window, 'scroll', '_handleWindowScroll');
|
window.addEventListener('scroll', this._boundHandleWindowScroll);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @override */
|
/** @override */
|
||||||
detached() {
|
disconnectedCallback() {
|
||||||
super.detached();
|
super.disconnectedCallback();
|
||||||
this.unlisten(window, 'scroll', '_handleWindowScroll');
|
window.removeEventListener('scroll', this._boundHandleWindowScroll);
|
||||||
}
|
}
|
||||||
|
|
||||||
moveLeft() {
|
moveLeft() {
|
||||||
@@ -315,6 +323,11 @@ class GrDiffCursor extends GestureEventListeners(
|
|||||||
this._preventAutoScrollOnManualScroll = false;
|
this._preventAutoScrollOnManualScroll = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_handleDiffLineSelected(event) {
|
||||||
|
this.moveToLineNumber(
|
||||||
|
event.detail.number, event.detail.side, event.detail.path);
|
||||||
|
}
|
||||||
|
|
||||||
createCommentInPlace() {
|
createCommentInPlace() {
|
||||||
const diffWithRangeSelected = this.diffs
|
const diffWithRangeSelected = this.diffs
|
||||||
.find(diff => diff.isRangeSelected());
|
.find(diff => diff.isRangeSelected());
|
||||||
@@ -472,21 +485,22 @@ class GrDiffCursor extends GestureEventListeners(
|
|||||||
spliceIdx++) {
|
spliceIdx++) {
|
||||||
splice = changeRecord.indexSplices[spliceIdx];
|
splice = changeRecord.indexSplices[spliceIdx];
|
||||||
|
|
||||||
for (i = splice.index;
|
for (i = splice.index; i < splice.index + splice.addedCount; i++) {
|
||||||
i < splice.index + splice.addedCount;
|
this.diffs[i].addEventListener(
|
||||||
i++) {
|
'render-start', this._boundHandleDiffRenderStart);
|
||||||
this.listen(this.diffs[i], 'render-start', '_handleDiffRenderStart');
|
this.diffs[i].addEventListener(
|
||||||
this.listen(
|
'render-content', this._boundHandleDiffRenderContent);
|
||||||
this.diffs[i], 'render-content', '_handleDiffRenderContent');
|
this.diffs[i].addEventListener(
|
||||||
|
'line-selected', this._boundHandleDiffLineSelected);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0;
|
for (i = 0; i < splice.removed && splice.removed.length; i++) {
|
||||||
i < splice.removed && splice.removed.length;
|
splice.removed[i].removeEventListener(
|
||||||
i++) {
|
'render-start', this._boundHandleDiffRenderStart);
|
||||||
this.unlisten(splice.removed[i],
|
splice.removed[i].removeEventListener(
|
||||||
'render-start', '_handleDiffRenderStart');
|
'render-content', this._boundHandleDiffRenderContent);
|
||||||
this.unlisten(splice.removed[i],
|
splice.removed[i].removeEventListener(
|
||||||
'render-content', '_handleDiffRenderContent');
|
'line-selected', this._boundHandleDiffLineSelected);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -136,6 +136,20 @@ suite('gr-diff-cursor tests', () => {
|
|||||||
assert.equal(cursorElement._scrollBehavior, 'keep-visible');
|
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', () => {
|
suite('unified diff', () => {
|
||||||
setup(done => {
|
setup(done => {
|
||||||
// We must allow the diff to re-render after setting the viewMode.
|
// We must allow the diff to re-render after setting the viewMode.
|
||||||
|
@@ -1033,7 +1033,6 @@ class GrDiffView extends mixinBehaviors( [
|
|||||||
}
|
}
|
||||||
|
|
||||||
_onLineSelected(e, detail) {
|
_onLineSelected(e, detail) {
|
||||||
this.$.cursor.moveToLineNumber(detail.number, detail.side);
|
|
||||||
if (!this._change) { return; }
|
if (!this._change) { return; }
|
||||||
const cursorAddress = this.$.cursor.getAddress();
|
const cursorAddress = this.$.cursor.getAddress();
|
||||||
const number = cursorAddress ? cursorAddress.number : undefined;
|
const number = cursorAddress ? cursorAddress.number : undefined;
|
||||||
|
@@ -904,7 +904,6 @@ suite('gr-diff-view tests', () => {
|
|||||||
test('_onLineSelected', () => {
|
test('_onLineSelected', () => {
|
||||||
const getUrlStub = sandbox.stub(Gerrit.Nav, 'getUrlForDiffById');
|
const getUrlStub = sandbox.stub(Gerrit.Nav, 'getUrlForDiffById');
|
||||||
const replaceStateStub = sandbox.stub(history, 'replaceState');
|
const replaceStateStub = sandbox.stub(history, 'replaceState');
|
||||||
const moveStub = sandbox.stub(element.$.cursor, 'moveToLineNumber');
|
|
||||||
sandbox.stub(element.$.cursor, 'getAddress')
|
sandbox.stub(element.$.cursor, 'getAddress')
|
||||||
.returns({number: 123, isLeftSide: false});
|
.returns({number: 123, isLeftSide: false});
|
||||||
|
|
||||||
@@ -919,10 +918,6 @@ suite('gr-diff-view tests', () => {
|
|||||||
|
|
||||||
element._onLineSelected(e, detail);
|
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(replaceStateStub.called);
|
||||||
assert.isTrue(getUrlStub.called);
|
assert.isTrue(getUrlStub.called);
|
||||||
});
|
});
|
||||||
|
Reference in New Issue
Block a user