Skip to content

Commit 83e0ae1

Browse files
committed
Avoid creating extra emitter/events when rendering markdown
We only need a simple event callback, not an emitter
1 parent f9cd6f4 commit 83e0ae1

File tree

2 files changed

+5
-7
lines changed

2 files changed

+5
-7
lines changed

src/vs/base/browser/event.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export interface DOMEventMap extends HTMLElementEventMap, DocumentEventMap, Wind
2727

2828
export class DomEmitter<K extends keyof DOMEventMap> implements IDisposable {
2929

30-
private emitter: Emitter<DOMEventMap[K]>;
30+
private readonly emitter: Emitter<DOMEventMap[K]>;
3131

3232
get event(): BaseEvent<DOMEventMap[K]> {
3333
return this.emitter.event;

src/vs/base/browser/markdownRenderer.ts

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
*--------------------------------------------------------------------------------------------*/
55

66
import { onUnexpectedError } from '../common/errors.js';
7-
import { Event } from '../common/event.js';
87
import { escapeDoubleQuotes, IMarkdownString, MarkdownStringTrustedOptions, parseHrefAndDimensions, removeMarkdownEscapes } from '../common/htmlContent.js';
98
import { markdownEscapeEscapedIcons } from '../common/iconLabels.js';
109
import { defaultGenerator } from '../common/idGenerator.js';
@@ -21,7 +20,6 @@ import { URI } from '../common/uri.js';
2120
import * as DOM from './dom.js';
2221
import * as domSanitize from './domSanitize.js';
2322
import { convertTagToPlaintext } from './domSanitize.js';
24-
import { DomEmitter } from './event.js';
2523
import { StandardKeyboardEvent } from './keyboardEvent.js';
2624
import { StandardMouseEvent } from './mouseEvent.js';
2725
import { renderLabelWithIcons } from './ui/iconLabel/iconLabels.js';
@@ -205,15 +203,15 @@ export function renderMarkdown(markdown: IMarkdownString, options: MarkdownRende
205203

206204
// Add event listeners for links
207205
if (options.actionHandler) {
208-
const onClick = disposables.add(new DomEmitter(outElement, 'click'));
209-
const onAuxClick = disposables.add(new DomEmitter(outElement, 'auxclick'));
210-
disposables.add(Event.any(onClick.event, onAuxClick.event)(e => {
206+
const clickCb = (e: PointerEvent) => {
211207
const mouseEvent = new StandardMouseEvent(DOM.getWindow(outElement), e);
212208
if (!mouseEvent.leftButton && !mouseEvent.middleButton) {
213209
return;
214210
}
215211
activateLink(markdown, options, mouseEvent);
216-
}));
212+
};
213+
disposables.add(DOM.addDisposableListener(outElement, 'click', clickCb));
214+
disposables.add(DOM.addDisposableListener(outElement, 'auxclick', clickCb));
217215

218216
disposables.add(DOM.addDisposableListener(outElement, 'keydown', (e) => {
219217
const keyboardEvent = new StandardKeyboardEvent(e);

0 commit comments

Comments
 (0)