diff --git a/addon/chrome/content/click/click.js b/addon/chrome/content/click/click.js index be71c70e..a219d449 100644 --- a/addon/chrome/content/click/click.js +++ b/addon/chrome/content/click/click.js @@ -546,12 +546,6 @@ var TabmixContext = { Tabmix.showItem("context_unpinTab", !multiselectionContext && show && aTab.pinned); Tabmix.showItem("context_pinSelectedTabs", multiselectionContext && show && !aTab.pinned); Tabmix.showItem("context_unpinSelectedTabs", multiselectionContext && show && aTab.pinned); - setTimeout(() => { - // we need to set our show/hide after tabGroups extension - let tabViewMenu = document.getElementById("context_tabViewMenu") || - document.getElementById("tabGroups-context_tabViewMenu"); - Tabmix.showItem(tabViewMenu, Tabmix.prefs.getBoolPref("moveToGroup") && !aTab.pinned); - }); Tabmix.showItem("context_moveTabOptions", Tabmix.prefs.getBoolPref("moveTabOptions")); // make sure not to show menu items that are hidden by Firefox @@ -1267,7 +1261,7 @@ var TabmixAllTabs = { if (typeof window.colorfulTabs == "object") { let rule = "none"; if (window.colorfulTabs.clrAllTabsPopPref) { - let tabClr = TabmixSessionData.getTabValue(tab, "tabClr"); + let tabClr = SessionStore.getCustomTabValue(tab, "tabClr"); if (tabClr) rule = "linear-gradient(rgba(255,255,255,.7),rgba(#1,.5),rgb(#1)),linear-gradient(rgb(#1),rgb(#1))" .replace(/#1/g, tabClr); diff --git a/addon/chrome/content/click/listeners.js b/addon/chrome/content/click/listeners.js index 3250554e..38e666f3 100644 --- a/addon/chrome/content/click/listeners.js +++ b/addon/chrome/content/click/listeners.js @@ -23,14 +23,6 @@ const mainCommandSet = document.getElementById("mainCommandSet"); mainCommandSet?.addEventListener("command", (/** @type {PopupEvent} */ event) => { switch (event.target.id) { - case "TabmixSessionUtils:SaveThisWindow": - TabmixSessionManager.sessionUtil("save", "thiswindow"); - event.stopPropagation(); - break; - case "TabmixSessionUtils:SaveAllWindow": - TabmixSessionManager.sessionUtil("save", "allwindows"); - event.stopPropagation(); - break; case "History:UndoCloseTab": event.stopPropagation(); undoCloseTab(); diff --git a/addon/chrome/content/dialogs/promptservice.js b/addon/chrome/content/dialogs/promptservice.js deleted file mode 100644 index 4fd57c60..00000000 --- a/addon/chrome/content/dialogs/promptservice.js +++ /dev/null @@ -1,285 +0,0 @@ -/// - -/* exported TMP_BUTTON_OK, TMP_BUTTON_CANCEL, TMP_BUTTON_EXTRA1, TMP_SHOW_MENULIST, - TMP_SHOW_TEXTBOX, TMP_HIDE_MENUANDTEXT, TMP_CHECKBOX_UNCHECKED, - TMP_CHECKBOX_CHECKED, TMP_HIDE_CHECKBOX, TMP_SELECT_DEFAULT, - TMP_SELECT_LASTSESSION, TMP_SELECT_CRASH, TMP_SHOW_CLOSED_WINDOW_LIST, - TMP_DLG_SAVE, TMP_DLG_RENAME, - prompt_init, prompt_extra1 */ -"use strict"; - -var TMP_BUTTON_OK = 0; -var TMP_BUTTON_CANCEL = 1; -var TMP_BUTTON_EXTRA1 = 2; -var TMP_SHOW_MENULIST = 1; -var TMP_SHOW_TEXTBOX = 0; -var TMP_HIDE_MENUANDTEXT = 2; -var TMP_CHECKBOX_UNCHECKED = 0; -var TMP_CHECKBOX_CHECKED = 1; -var TMP_HIDE_CHECKBOX = 2; -var TMP_SELECT_DEFAULT = 0; -var TMP_SELECT_LASTSESSION = 1; -var TMP_SELECT_CRASH = 2; -var TMP_SHOW_CLOSED_WINDOW_LIST = 3; -var TMP_DLG_SAVE = 0; -var TMP_DLG_RENAME = 1; - -/** @type {nsIDialogParamBlock} */ -var dialogParams; -/** @type {number} */ -var gHideElmParam; -/** @type {string[]} */ -var gSavedName; -/** @type {string} */ -var gCancelLabel; -/** @type {string} */ -var gOrigName; -/** @type {Element} */ -let documentElement; - -function prompt_init() { - if (!document.documentElement) { - // not supposed to happen - return; - } - documentElement = document.documentElement; - - const dialog = documentElement; - dialog.addEventListener("dialogaccept", prompt_deinit.bind(dialog, 0)); - dialog.addEventListener("dialogcancel", prompt_deinit.bind(dialog, 1)); - dialog.addEventListener("dialogextra1", prompt_extra1.bind(dialog, 2)); - - dialogParams = window.arguments[0].QueryInterface(Ci.nsIDialogParamBlock); - document.title = dialogParams.GetString(0); - - // display the main text - var messageText = dialogParams.GetString(1); - var messageParent = document.getElementById("tm_info"); - var messageParagraphs = messageText.split("\n"); - gHideElmParam = dialogParams.GetInt(1); - for (const paragraphs of messageParagraphs) { - const descriptionNode = document.createElement("description"); - const text = document.createTextNode(paragraphs); - descriptionNode.appendChild(text); - messageParent.appendChild(descriptionNode); - } - - // display the menulist - gHideElmParam = dialogParams.GetInt(1); - var menuList = document.getElementById("tm_prompt"); - if (gHideElmParam == TMP_SHOW_MENULIST) { - var index, isDisabled, popup = document.getElementById("tm_prompt_menu"); - if (dialogParams.GetInt(4) == 1) - window.opener.Tabmix.Sessions.createMenuForDialog(popup, dialogParams.GetInt(3)); - else - window.opener.TabmixSessionManager.createMenuForDialog(popup, dialogParams.GetInt(3)); - switch (dialogParams.GetInt(3)) { - case TMP_SELECT_CRASH: index = popup.childNodes.length - 1; - break; - case TMP_SHOW_CLOSED_WINDOW_LIST: index = 1; // 0 is menuseparator - break; - default: - index = menuList.defaultIndex; - if (index >= popup.childNodes.length || index < 0) index = 1; - isDisabled = popup.childNodes[index]?.getAttribute("disabled") == "true"; - // select the first entry that isn't menuseparator and not "disabled" - if (!isDisabled) break; - for (let i = 1; i < popup.childNodes.length; ++i) { - const item = popup.childNodes[i]; - if (item && item.localName != "menuseparator" && - item.getAttribute("disabled") != "true") { - index = i; - break; - } - } - } - menuList.selectedIndex = index; - } else { - menuList.hidden = true; - } - - // display the textBox - var textBox = document.getElementById("tm_textbox"); - if (gHideElmParam == TMP_SHOW_TEXTBOX) { - messageParent.lastChild?.setAttribute("style", "height:3em"); - gSavedName = dialogParams.GetString(2).split("\n"); - textBox.value = gSavedName.shift() ?? ""; - gOrigName = textBox.value.toLowerCase(); - } else { - textBox.hidden = true; - } - - // display the checkbox - var checkBox = document.getElementById("tm_checkbox"); - var check = dialogParams.GetInt(2); - if (check != TMP_HIDE_CHECKBOX) { - document.getElementById("checkboxContainer").removeAttribute("collapsed"); - checkBox.checked = check == TMP_CHECKBOX_CHECKED; - setLabelForNode(checkBox, dialogParams.GetString(3)); - } - - // display the command buttons - const buttons = ["accept", "cancel", "extra1"]; - var btnLabels = dialogParams.GetString(4).split("\n"); - buttons.forEach((type, i) => { - const button = documentElement.getButton(type); - if (i < btnLabels.length && btnLabels[i]) { - setLabelForNode(button, btnLabels[i]); - } else { - button.hidden = true; // hide extra button - } - }); - - // Set and focus default button - var dButton = buttons[dialogParams.GetInt(0)] ?? "accept"; - dialog.defaultButton = dButton; - if (gHideElmParam == TMP_HIDE_MENUANDTEXT) { // hide menulist & text box and set focus to default Button - document.getElementById("space_before_checkbox").hidden = true; - dialog.getButton(dButton).focus(); - } - - if (gHideElmParam == TMP_SHOW_TEXTBOX) { - dialog.getButton("extra1").hidden = true; - gCancelLabel = dialog.getButton("cancel").label ?? "Cancel"; - inputText(textBox); - } - - // Move to the right location - moveToAlertPosition(); - centerWindowOnScreen(); -} - -/** @param {number} button */ -function prompt_deinit(button) { - dialogParams.SetInt(4, button); // ok = 0; cancel = 1; extra1 = 2; - dialogParams.SetInt(5, Number(document.getElementById("tm_checkbox").checked)); - if (gHideElmParam < TMP_HIDE_MENUANDTEXT) { - if (gHideElmParam == TMP_SHOW_MENULIST) { - var item = document.getElementById("tm_prompt").selectedItem; - ///XXX item.fileName - in the new Tabmix.Sessions - dialogParams.SetString(5, item.session || item.fileName); - dialogParams.SetInt(6, parseInt(item.getAttribute("value") ?? "")); - } else { - dialogParams.SetString(5, document.getElementById("tm_textbox").value); - } - } - // if we are not a modal use a callback function - if (typeof window._callBackFunction == "function") { - if (window.opener && !window.opener.closed) { - let returnData = { - button: dialogParams.GetInt(4), - checked: dialogParams.GetInt(5) == TMP_CHECKBOX_CHECKED, - label: dialogParams.GetString(5), - value: dialogParams.GetInt(6) - }; - try { - window._callBackFunction(returnData); - } catch (ex) { - Tabmix.assert(ex, "error in callback " + window._callBackFunction.name); - } - } - delete window._callBackFunction; - } -} - -/** @param {number} button */ -function prompt_extra1(button) { - prompt_deinit(button); - window.close(); -} - -// copy from commonDialog.js -/** - * @param {HTMLInputElement | HTMLButtonElement} aNode - * @param {string} aLabel - * @param {boolean} [aIsLabelFlag] - */ -function setLabelForNode(aNode, aLabel, aIsLabelFlag) { - var accessKey = null; - if (/ *\(&([^&])\)(:?)$/.test(aLabel)) { - aLabel = RegExp.leftContext + RegExp.$2; - accessKey = RegExp.$1; - } else if (/^([^&]*)&(([^&]).*$)/.test(aLabel)) { - aLabel = RegExp.$1 + RegExp.$2; - accessKey = RegExp.$3; - } - - // && is the magic sequence to embed an & in your label. - aLabel = aLabel.replace(/&&/g, "&"); - if (aIsLabelFlag) { // Set text for