57 lines
1.9 KiB
JavaScript
57 lines
1.9 KiB
JavaScript
(function () {
|
|
if (window.__customFrameNativeMenu) return;
|
|
window.__customFrameNativeMenu = true;
|
|
|
|
function toggleCheckbox(newElem, toggle) {
|
|
const tmp = newElem.querySelector("mdui-checkbox");
|
|
if (tmp && tmp !== undefined) {
|
|
if (toggle) {
|
|
tmp.setAttribute('checked', '');
|
|
tmp.setAttribute('value', 'on');
|
|
} else {
|
|
tmp.removeAttribute('checked');
|
|
tmp.setAttribute('value', 'off');
|
|
}
|
|
}
|
|
}
|
|
|
|
function initCFNM() {
|
|
let elem = document.querySelector("#floating div:not(:empty) div.will-change_transform.flex_1_1_800px div:has(> a) > a:last-child")
|
|
if (!elem) { return; }
|
|
|
|
let title = elem.querySelector("div.flex-g_1 > div")
|
|
if (!title || title.textContent.trim() !== "Custom window frame") { return; }
|
|
|
|
let desc = elem.querySelector("div.flex-g_1 > span")
|
|
if (!desc || desc.textContent.trim() !== "Let Stoat use its own custom titlebar.") { return; }
|
|
|
|
var newElem = elem.cloneNode(true);
|
|
let nTitle = newElem.querySelector("div.flex-g_1 > div");
|
|
let nDesc = newElem.querySelector("div.flex-g_1 > span");
|
|
if (!nTitle || !nDesc) { newElem = null; return; }
|
|
|
|
nTitle.textContent = "Native menu on custom window frame";
|
|
nDesc.textContent = "Use the system's native menu on the custom window frame.";
|
|
|
|
let config = window.desktopConfig.get();
|
|
toggleCheckbox(newElem, config.customFrameNativeMenu);
|
|
|
|
newElem.addEventListener("click", e => {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
|
|
let config = window.desktopConfig.get();
|
|
config.customFrameNativeMenu = !config.customFrameNativeMenu;
|
|
window.desktopConfig.set(config);
|
|
|
|
toggleCheckbox(newElem, config.customFrameNativeMenu);
|
|
});
|
|
|
|
elem.parentNode.appendChild(newElem);
|
|
}
|
|
|
|
initCFNM();
|
|
|
|
const observer = new MutationObserver(() => initCFNM());
|
|
observer.observe(document.body, { childList: true, subtree: true });
|
|
})();
|