Restore double click to switch to editor behavior

This commit is contained in:
Matt Bierner 2017-01-22 01:04:18 -08:00
parent 5bf8cc7618
commit bc27d5c88e
2 changed files with 28 additions and 13 deletions

View file

@ -77,23 +77,17 @@
}
}
function didUpdateScrollPosition(offset) {
function getEditorLineNumberForPageOffset(offset) {
const {previous, next} = getLineElementsAtPageOffset(offset);
if (previous) {
let line = 0;
if (next) {
const betweenProgress = (offset - window.scrollY - previous.element.getBoundingClientRect().top) / (next.element.getBoundingClientRect().top - previous.element.getBoundingClientRect().top);
line = previous.line + betweenProgress * (next.line - previous.line);
return previous.line + betweenProgress * (next.line - previous.line);
} else {
line = previous.line;
return previous.line;
}
const args = [window.initialData.source, line];
window.parent.postMessage({
command: "did-click-link",
data: `command:_markdown.revealLine?${encodeURIComponent(JSON.stringify(args))}`
}, "file://");
}
return null;
}
@ -153,7 +147,14 @@
document.ondblclick = (e) => {
const offset = e.pageY;
didUpdateScrollPosition(offset);
const line = getEditorLineNumberForPageOffset(offset);
if (!isNaN(line)) {
const args = [window.initialData.source, line];
window.parent.postMessage({
command: "did-click-link",
data: `command:_markdown.didClick?${encodeURIComponent(JSON.stringify(args))}`
}, "file://");
}
};
if (window.initialData.enableScrollSync) {
@ -161,7 +162,14 @@
if (scrollDisabled) {
scrollDisabled = false;
} else {
didUpdateScrollPosition(window.scrollY);
const line = getEditorLineNumberForPageOffset(window.scrollY);
if (!isNaN(line)) {
const args = [window.initialData.source, line];
window.parent.postMessage({
command: "did-click-link",
data: `command:_markdown.revealLine?${encodeURIComponent(JSON.stringify(args))}`
}, "file://");
}
}
};
}

View file

@ -55,6 +55,13 @@ export function activate(context: vscode.ExtensionContext) {
});
}));
context.subscriptions.push(vscode.commands.registerCommand('_markdown.didClick', (uri, line) => {
const sourceUri = vscode.Uri.parse(decodeURIComponent(uri));
return vscode.workspace.openTextDocument(sourceUri)
.then(document => vscode.window.showTextDocument(document))
.then(editor => vscode.commands.executeCommand('revealLine', { lineNumber: Math.floor(line), at: 'top' }));
}));
context.subscriptions.push(vscode.workspace.onDidSaveTextDocument(document => {
if (isMarkdownFile(document)) {
const uri = getMarkdownUri(document.uri);
@ -284,7 +291,7 @@ class MDDocumentContentProvider implements vscode.TextDocumentContentProvider {
source: "${encodeURIComponent(sourceUri.scheme + '://' + sourceUri.path)}",
line: ${initialLine},
enablePreviewSync: ${!!markdownConfig.get('preview.experimentalSyncronizationEnabled', true)},
enableScrollSync: ${!!markdownConfig.get('synchronizePreviewScrollingToEditor', true)}
enableScrollSync: ${!!markdownConfig.get('preview.synchronizePreviewScrollingToEditor', true)}
};
</script>
<script src="${this.getMediaPath('main.js')}"></script>