From 7f49bd99c216216fbeb0af67cb7ca1fcdc59d7a8 Mon Sep 17 00:00:00 2001 From: dcylabs Date: Mon, 21 Aug 2017 20:27:17 +0200 Subject: [PATCH] Fixed selection issue when terminal is in nested scrolled elements --- src/utils/Mouse.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/utils/Mouse.ts b/src/utils/Mouse.ts index c61624e9..e1901f2d 100644 --- a/src/utils/Mouse.ts +++ b/src/utils/Mouse.ts @@ -12,6 +12,7 @@ export function getCoordsRelativeToElement(event: MouseEvent, element: HTMLEleme let x = event.pageX; let y = event.pageY; + const originalElement = element; // Converts the coordinates from being relative to the document to being // relative to the terminal. @@ -20,6 +21,12 @@ export function getCoordsRelativeToElement(event: MouseEvent, element: HTMLEleme y -= element.offsetTop; element = 'offsetParent' in element ? element.offsetParent : element.parentElement; } + element = originalElement; + while (element && element !== self.document.documentElement) { + x += element.scrollLeft; + y += element.scrollTop; + element = element.parentElement; + } return [x, y]; }