mirror of
https://github.com/Microsoft/vscode
synced 2024-10-16 08:22:51 +00:00
Restore double click to switch to editor behavior
This commit is contained in:
parent
5bf8cc7618
commit
bc27d5c88e
|
@ -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://");
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in a new issue