From fad775b747f2c036d3da7f6ca997ea1da016a2b6 Mon Sep 17 00:00:00 2001 From: Rob Lourens Date: Thu, 13 Dec 2018 11:07:29 -0800 Subject: [PATCH] Fix #64965 - replace toElement --- src/vs/base/browser/dom.ts | 2 +- src/vs/base/browser/ui/selectBox/selectBoxCustom.ts | 11 ++++++++--- .../parts/preferences/browser/settingsTree.ts | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/vs/base/browser/dom.ts b/src/vs/base/browser/dom.ts index de7574ccd22..a3adf52d2f6 100644 --- a/src/vs/base/browser/dom.ts +++ b/src/vs/base/browser/dom.ts @@ -266,7 +266,7 @@ export let addStandardDisposableListener: IAddStandardDisposableListenerSignatur export function addDisposableNonBubblingMouseOutListener(node: Element, handler: (event: MouseEvent) => void): IDisposable { return addDisposableListener(node, 'mouseout', (e: MouseEvent) => { // Mouse out bubbles, so this is an attempt to ignore faux mouse outs coming from children elements - let toElement: Node | null = (e.relatedTarget || e.toElement); + let toElement: Node | null = (e.relatedTarget || e.target); while (toElement && toElement !== node) { toElement = toElement.parentNode; } diff --git a/src/vs/base/browser/ui/selectBox/selectBoxCustom.ts b/src/vs/base/browser/ui/selectBox/selectBoxCustom.ts index 41f014f0993..189f657a716 100644 --- a/src/vs/base/browser/ui/selectBox/selectBoxCustom.ts +++ b/src/vs/base/browser/ui/selectBox/selectBoxCustom.ts @@ -777,12 +777,17 @@ export class SelectBoxList implements ISelectBoxDelegate, IListVirtualDelegatee.target; + if (!target) { return; } - const listRowElement = e.toElement.closest('.monaco-list-row'); + // Check our mouse event is on an option (not scrollbar) + if (!!target.classList.contains('slider')) { + return; + } + + const listRowElement = target.closest('.monaco-list-row'); if (!listRowElement) { return; diff --git a/src/vs/workbench/parts/preferences/browser/settingsTree.ts b/src/vs/workbench/parts/preferences/browser/settingsTree.ts index 332430e794b..8d5be3338e7 100644 --- a/src/vs/workbench/parts/preferences/browser/settingsTree.ts +++ b/src/vs/workbench/parts/preferences/browser/settingsTree.ts @@ -787,7 +787,7 @@ export class SettingsRenderer implements ITreeRenderer { // Need to listen for mouse clicks on description and toggle checkbox - use target ID for safety // Also have to ignore embedded links - too buried to stop propagation toDispose.push(DOM.addDisposableListener(descriptionElement, DOM.EventType.MOUSE_DOWN, (e) => { - const targetElement = e.toElement; + const targetElement = e.target; const targetId = descriptionElement.getAttribute('checkbox_label_target_id'); // Make sure we are not a link and the target ID matches