diff --git a/plugins/precise-volume/front.js b/plugins/precise-volume/front.js index a1b30fe4..7195b5bf 100644 --- a/plugins/precise-volume/front.js +++ b/plugins/precise-volume/front.js @@ -194,12 +194,13 @@ function setupLocalArrowShortcuts(options) { } function callback(event) { - event.preventDefault(); switch (event.code) { case "ArrowUp": + event.preventDefault(); changeVolume(true, options); break; case "ArrowDown": + event.preventDefault(); changeVolume(false, options); break; } diff --git a/plugins/precise-volume/preload.js b/plugins/precise-volume/preload.js index bfd6a01c..edc5f20c 100644 --- a/plugins/precise-volume/preload.js +++ b/plugins/precise-volume/preload.js @@ -1,28 +1,33 @@ const { ipcRenderer } = require("electron"); +const is = require("electron-is"); + +let ignored = { + id: ["volume-slider", "expand-volume-slider"], + types: ["mousewheel", "keydown", "keyup"] +}; -// Override specific listeners of volume-slider by modifying Element.prototype function overrideAddEventListener() { - // Events to ignore - const nativeEvents = ["mousewheel", "keydown", "keyup"]; // Save native addEventListener Element.prototype._addEventListener = Element.prototype.addEventListener; // Override addEventListener to Ignore specific events in volume-slider Element.prototype.addEventListener = function (type, listener, useCapture = false) { - if (this.tagName === "TP-YT-PAPER-SLIDER") { // tagName of #volume-slider - for (const eventType of nativeEvents) { - if (eventType === type) { - return; - } - } - }//else - this._addEventListener(type, listener, useCapture); + if (!( + ignored.id.includes(this.id) && + ignored.types.includes(type) + )) { + this._addEventListener(type, listener, useCapture); + } else if (is.dev()) { + console.log(`Ignoring event: "${this.id}.${type}()"`); + } }; } module.exports = () => { overrideAddEventListener(); // Restore original function after did-finish-load to avoid keeping Element.prototype altered - ipcRenderer.once("restoreAddEventListener", () => { //called from Main to make sure page is completly loaded + ipcRenderer.once("restoreAddEventListener", () => { // Called from main to make sure page is completly loaded Element.prototype.addEventListener = Element.prototype._addEventListener; + Element.prototype._addEventListener = undefined; + ignored = undefined; }); };