From f9820df6c649a01e7cdbff7fe50ac0376d3724e0 Mon Sep 17 00:00:00 2001 From: Araxeus <78568641+Araxeus@users.noreply.github.com> Date: Thu, 12 Jan 2023 19:18:58 +0200 Subject: [PATCH 1/3] fix PiP button fix #959 --- plugins/picture-in-picture/front.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/picture-in-picture/front.js b/plugins/picture-in-picture/front.js index 685b15c1..92b3d17e 100644 --- a/plugins/picture-in-picture/front.js +++ b/plugins/picture-in-picture/front.js @@ -69,7 +69,9 @@ function observeMenu(options) { listenForToggle(); const minButton = $(".player-minimize-button"); // remove native listeners + const svg = $(".player-minimize-button #icon svg").cloneNode(true); minButton.replaceWith(minButton.cloneNode(true)); + $(".player-minimize-button #icon").appendChild(svg); $(".player-minimize-button").onclick = () => { global.togglePictureInPicture(); setTimeout(() => $('#player').click()); From b3f561cf2f599202a101fe2af4a5ce49fd27d20a Mon Sep 17 00:00:00 2001 From: Araxeus <78568641+Araxeus@users.noreply.github.com> Date: Thu, 12 Jan 2023 19:53:17 +0200 Subject: [PATCH 2/3] disable maximize button on PiP (doesn't work if `in-app-menu` is enabled) --- plugins/picture-in-picture/back.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/picture-in-picture/back.js b/plugins/picture-in-picture/back.js index fa679d79..d71acd49 100644 --- a/plugins/picture-in-picture/back.js +++ b/plugins/picture-in-picture/back.js @@ -47,6 +47,7 @@ const togglePiP = async () => { win.webContents.on("before-input-event", blockShortcutsInPiP); + win.setMaximizable(false); win.setFullScreenable(false); runAdaptors(); @@ -62,6 +63,7 @@ const togglePiP = async () => { } } else { win.webContents.removeListener("before-input-event", blockShortcutsInPiP); + win.setMaximizable(true); win.setFullScreenable(true); runAdaptors(); From 0e99f96f01803600c5b35de9f4c64169dd1625bd Mon Sep 17 00:00:00 2001 From: Araxeus <78568641+Araxeus@users.noreply.github.com> Date: Thu, 12 Jan 2023 19:51:38 +0200 Subject: [PATCH 3/3] fix PiP unminimize button hidden --- plugins/picture-in-picture/front.js | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/plugins/picture-in-picture/front.js b/plugins/picture-in-picture/front.js index 92b3d17e..788a908e 100644 --- a/plugins/picture-in-picture/front.js +++ b/plugins/picture-in-picture/front.js @@ -10,6 +10,21 @@ const pipButton = ElementFromFile( templatePath(__dirname, "picture-in-picture.html") ); +// will also clone +function replaceButton(query, button) { + const svg = button.querySelector("#icon svg").cloneNode(true); + button.replaceWith(button.cloneNode(true)); + button.remove(); + const newButton = $(query); + newButton.querySelector("#icon").appendChild(svg); + return newButton; +} + +function cloneButton(query) { + replaceButton(query, $(query)); + return $(query); +} + const observer = new MutationObserver(() => { if (!menu) { menu = getSongMenu(); @@ -30,9 +45,6 @@ global.togglePictureInPicture = () => { const listenForToggle = () => { const originalExitButton = $(".exit-fullscreen-button"); - const clonedExitButton = originalExitButton.cloneNode(true); - clonedExitButton.onclick = () => togglePictureInPicture(); - const appLayout = $("ytmusic-app-layout"); const expandMenu = $('#expanding-menu'); const middleControls = $('.middle-controls'); @@ -44,7 +56,7 @@ const listenForToggle = () => { ipcRenderer.on('pip-toggle', (_, isPip) => { if (isPip) { - $(".exit-fullscreen-button").replaceWith(clonedExitButton); + replaceButton(".exit-fullscreen-button", originalExitButton).onclick = () => togglePictureInPicture(); player.onDoubleClick_ = () => {}; expandMenu.onmouseleave = () => middleControls.click(); if (!playerPage.playerPageOpen_) { @@ -67,12 +79,8 @@ function observeMenu(options) { "apiLoaded", () => { listenForToggle(); - const minButton = $(".player-minimize-button"); // remove native listeners - const svg = $(".player-minimize-button #icon svg").cloneNode(true); - minButton.replaceWith(minButton.cloneNode(true)); - $(".player-minimize-button #icon").appendChild(svg); - $(".player-minimize-button").onclick = () => { + cloneButton(".player-minimize-button").onclick = () => { global.togglePictureInPicture(); setTimeout(() => $('#player').click()); };