From d9f1c589e9caee23d6aaa6065be6d61c49b9095e Mon Sep 17 00:00:00 2001 From: Araxeus <78568641+Araxeus@users.noreply.github.com> Date: Fri, 10 Feb 2023 20:14:07 +0200 Subject: [PATCH] fix PiP hotkey active in searchbox --- package.json | 2 ++ plugins/picture-in-picture/back.js | 3 --- plugins/picture-in-picture/front.js | 20 +++++++++++++++++--- yarn.lock | 4 +++- 4 files changed, 22 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index cb287519..a061891b 100644 --- a/package.json +++ b/package.json @@ -116,6 +116,8 @@ "filenamify": "^4.3.0", "howler": "^2.2.3", "html-to-text": "^9.0.3", + "keyboardevent-from-electron-accelerator": "^2.0.0", + "keyboardevents-areequal": "^0.2.2", "md5": "^2.3.0", "mpris-service": "^2.1.2", "node-fetch": "^2.6.8", diff --git a/plugins/picture-in-picture/back.js b/plugins/picture-in-picture/back.js index d71acd49..a364a2df 100644 --- a/plugins/picture-in-picture/back.js +++ b/plugins/picture-in-picture/back.js @@ -103,9 +103,6 @@ module.exports = (_win, _options) => { ipcMain.on("picture-in-picture", async () => { await togglePiP(); }); - if (options.hotkey) { - electronLocalshortcut.register(win, options.hotkey, togglePiP); - } }; module.exports.setOptions = setLocalOptions; diff --git a/plugins/picture-in-picture/front.js b/plugins/picture-in-picture/front.js index 788a908e..f0752d44 100644 --- a/plugins/picture-in-picture/front.js +++ b/plugins/picture-in-picture/front.js @@ -1,5 +1,8 @@ const { ipcRenderer } = require("electron"); +const { toKeyEvent } = require('keyboardevent-from-electron-accelerator'); +const keyEventAreEqual = require('keyboardevents-areequal'); + const { getSongMenu } = require("../../providers/dom-elements"); const { ElementFromFile, templatePath } = require("../utils"); @@ -74,13 +77,13 @@ const listenForToggle = () => { }); } -function observeMenu(options) { +function observeMenu() { document.addEventListener( "apiLoaded", () => { listenForToggle(); // remove native listeners - cloneButton(".player-minimize-button").onclick = () => { + cloneButton(".player-minimize-button").onclick = () => { global.togglePictureInPicture(); setTimeout(() => $('#player').click()); }; @@ -97,4 +100,15 @@ function observeMenu(options) { ); } -module.exports = observeMenu; +module.exports = (options) => { + observeMenu(); + + if (options.hotkey) { + const hotkeyEvent = toKeyEvent(options.hotkey); + window.addEventListener('keydown', (event) => { + if (keyEventAreEqual(event, hotkeyEvent) && !$('ytmusic-search-box').opened) { + togglePictureInPicture(); + } + }); + } +}; diff --git a/yarn.lock b/yarn.lock index 2d7a6028..7b1ec0a8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5518,7 +5518,7 @@ __metadata: languageName: node linkType: hard -"keyboardevents-areequal@npm:^0.2.1": +"keyboardevents-areequal@npm:^0.2.1, keyboardevents-areequal@npm:^0.2.2": version: 0.2.2 resolution: "keyboardevents-areequal@npm:0.2.2" checksum: 05d846f75170238bbb9ed45d13ca9c6cd3e68ea8ba6b7727971790fa55b44c3386ec8b9c321ae72dae0d0944678d0dc2b922148fe67d3f9720bf30a23999dd65 @@ -8979,6 +8979,8 @@ __metadata: filenamify: ^4.3.0 howler: ^2.2.3 html-to-text: ^9.0.3 + keyboardevent-from-electron-accelerator: ^2.0.0 + keyboardevents-areequal: ^0.2.2 md5: ^2.3.0 mpris-service: ^2.1.2 node-fetch: ^2.6.8