From 1df59d57b5dcbf9d3efedcb21a4d5e16524a67c1 Mon Sep 17 00:00:00 2001 From: siikamiika Date: Fri, 10 Apr 2020 02:48:41 +0300 Subject: [PATCH] limit popup depth live --- ext/fg/js/frontend.js | 3 ++- ext/mixed/js/text-scanner.js | 8 +++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ext/fg/js/frontend.js b/ext/fg/js/frontend.js index 55d699e5..a6b24c76 100644 --- a/ext/fg/js/frontend.js +++ b/ext/fg/js/frontend.js @@ -30,7 +30,8 @@ class Frontend extends TextScanner { super( window, popup.isProxy() ? [] : [popup.getContainer()], - [(x, y) => this.popup.containsPoint(x, y)] + [(x, y) => this.popup.containsPoint(x, y)], + () => this.popup.depth <= this.options.scanning.popupNestingMaxDepth ); this.popup = popup; diff --git a/ext/mixed/js/text-scanner.js b/ext/mixed/js/text-scanner.js index a1d96320..1d6e36e0 100644 --- a/ext/mixed/js/text-scanner.js +++ b/ext/mixed/js/text-scanner.js @@ -22,11 +22,13 @@ */ class TextScanner { - constructor(node, ignoreElements, ignorePoints) { + constructor(node, ignoreElements, ignorePoints, canEnable=null) { this.node = node; this.ignoreElements = ignoreElements; this.ignorePoints = ignorePoints; + this.canEnable = canEnable; + this.ignoreNodes = null; this.scanTimerPromise = null; @@ -225,6 +227,10 @@ class TextScanner { } setEnabled(enabled) { + if (this.canEnable !== null && !this.canEnable()) { + enabled = false; + } + if (enabled) { if (!this.enabled) { this.hookEvents();