egorsemenov06
А обязательно новую добавлять? от Sidebar Tabs "resource://ucf_sidebar_tabs" лучше используйте чтобы одинаковые были,
добавить в Object.entries({
class: "menuitem-iconic", style: 'list-style-image:url("resource://ucf_sidebar_tabs");-moz-context-properties:fill,stroke,fill-opacity;stroke:currentColor;fill:currentColor;fill-opacity:var(--toolbarbutton-icon-fill-opacity,.8);',
Отсутствует
Vitaliy V.
Поставил крайние UserChromeFiles.zip + UserChromeFiles_Fix_115_ESR.zip
Раскомментировал user_chrome_files\custom_scripts\sidebar_tabs.js, установил значение
AUTO_HIDE = false, // Auto hide
Теперь боковая панель сдвигает Sidebar Tabs, а раньше выезжала поверх. Мне кажется, поверх было симпатичнее, ничего не дёргалось. Так задумано или я что-то не донастроил?
https://imgur.com/XLdI2YS
Отсутствует
-
Отредактировано Vitaliy V. (08-08-2024 14:42:55)
Отсутствует
egorsemenov06
` get buttonID() { delete this.buttonID; return this.buttonID = new Map([ ["PanelUI-menu-button", "appMenu-popup"], ["star-button", "editBookmarkPanel"], ]); },
` get buttonID() { delete this.buttonID; return this.buttonID = new Map([ ["PanelUI-menu-button", "appMenu-popup"], ["library-button", "customizationui-widget-panel"], ["fxa-toolbar-menu-button", "customizationui-widget-panel"], ["nav-bar-overflow-button", "widget-overflow"], ["unified-extensions-button","toolbarbutton-1"], ["star-button", "editBookmarkPanel"], ["pageActionButton", "pageActionPanel"], ]); },
Добавлено 22-06-2024 19:29:28
если можно из этих 2-х кнопок сделать одну
А тестировать как, а по мне можно два в одном, ну тобошь в один файл.
Отредактировано Farby (22-06-2024 19:29:28)
Жизнь иногда такое выкидывает, что хочется подобрать...
На форуме
["unified-extensions-button","toolbarbutton-1"],
Это что ещё за дичь?
Не работает, и не может работать.
Работает добавить #unified-extensions-button
к другим двоим таким же, начинающимся с решётки
#star-button,
#PanelUI-menu-button(,)...
А ["unified-extensions-button", "unified-extensions-panel"],
стоит добавить лишь в том смысле, чтобы панелька,
в некоторых случаях, закрывалась.
STR: наводим указатель мыши на аддонскую кнопку.
Панелька этой аддонской кнопки открывается.
Теперь, не сходя с места, наводим указатель мыши
на кнопку гамбургера.
Гамбургерская панелька открывается.
При этом, аддонская панелька остаётся торчать открытой.
А если добавить, то аддонская панелька,
в этом случае, будет закрываться.
Кстати, недавно, запилили метод nsIAppWindow.rollupAllPopups()
Схлопывает все менюшки разом, если может вдруг интересно.
Отсутствует
Всем привет! Как правильно подключить в Библиотеку скрипт Восстановить удалённое ?
При удалении Закладки из Библиотеки в контекстном меню нет строки: "Восстановить удалённое", а в панели закладок есть.
scriptschrome: { domload: [ // фрагмент скрипта CustomStylesScripts.mjs { path: "undoBookmarks.js", ucfobj: true }, ], }, scriptsallchrome: { load: [ { path: "undoBookmarks.js", urlregxp: /chrome:\/\/browser\/content\/places\/places\.xhtml/, ucfobj: false, }, ], },
Отсутствует
Это что ещё за дичь?
Не работает, и не может работать.
Спасибо!! Теперь я точно знаю, что ничего не знаю
.. ["alltabs-button","customizationui-widget-panel"], ["unified-extensions-button","unified-extensions-panel"],
Жизнь иногда такое выкидывает, что хочется подобрать...
На форуме
Dobrov
Опять ты со своим «Как правильно?»
Никак не правильно.
Просто потому, что в окне Библиотеки
работает Ctrl+Z
Быть может, для тебя это представляет
какой-то чисто академический интерес.
Но тогда, консоль должна была бы подсказать,
что следует импортировать недостающий UcfPrefs.
var {UcfPrefs} = ChromeUtils.importESModule("chrome://user_chrome_files/content/user_chrome/UcfPrefs.mjs");
А ещё, у меня, с этого кода наблюдается
некий странно-непонятно-загадочный глюк,
когда, после восстановления закладки,
на этой восстановленной закладке,
пункт «Удалить закладку» вообще перестаёт работать.
Так что — сочтём этот код просто провальным, если воспроизводится.
Отсутствует
Быть может, для тебя это представляет какой-то чисто академический интерес.
По аналогии с Sidebars Tabs хотел в Библиотеке в контекст-меню пункт: "Восстановить закладку"
у меня, с этого кода наблюдается некий странно-непонятно-загадочный глюк
То есть, стóит вернуться на предыдущий универсальный скрипт "Восстановить закладку" ?
Отсутствует
Восстановить закладку (последний спойлер)
У меня давно работает вообще везде, даже в менюшках с закладками, подключается так
. scriptschrome: { // Для докум. окна браузера [ChromeOnly] domload: [ // По событию "DOMContentLoaded" ... ], load: [ // По событию "load" { path: "ucf_UndoBookmarksContextMenu.uc.js", ucfobj: false, }, ], scriptsallchrome: { // Для докум. всех окон [ChromeOnly] domload: [ // По событию "DOMContentLoaded" ... ], load: [ // По событию "load" { path: "ucf_UndoBookmarksContextMenu.uc.js", urlregxp: /chrome:\/\/browser\/content\/places\/bookmarksSidebar\.xhtml/, ucfobj: false, }, { path: "ucf_UndoBookmarksContextMenu.uc.js", urlregxp: /chrome:\/\/browser\/content\/places\/places\.xhtml/, ucfobj: false, }, ], scriptscontent: { DOMWindowCreated: [ // По событию "DOMWindowCreated" ... ], DOMContentLoaded: [ // По событию "DOMContentLoaded" ... ], pageshow: [ // По событию "pageshow" { path: "ucf_UndoBookmarksContextMenu.uc.js", urlregxp: /chrome:\/\/browser\/content\/places\/places\.xhtml/, }, ], },
Отредактировано _zt (26-06-2024 12:14:43)
Отсутствует
Автоматически открывать меню
Автоматически закрывать меню
наконец дошли руки для отлавливания этих менюшек, тестируйте кому надо новый скрипт
(async ( id = Symbol("mouseover_openpopup"), delay = 300, hidedelay = 1000, btnSelectors = [ "#PanelUI-menu-button", "#library-button", "#fxa-toolbar-menu-button", "#nav-bar-overflow-button", "#star-button-box", "#pageActionButton", "#unified-extensions-button", "#downloads-button", "#alltabs-button", ], excludeBtnSelectors = [ "#tabs-newtab-button", "#new-tab-button", "#back-button", "#forward-button", ], areaSelectors = [ "toolbar", ], hideAreaSelectors = [ // "#PlacesToolbarItems", ], excludeHidePopupSelectors = [ "#contentAreaContextMenu", "#contentAreaContextMenu :scope", "#PopupSearchAutoComplete", "#PopupAutoComplete", ], ) => (this[id] = { timer: null, hidetimer: null, hideArea: [], open_: false, get popups() { delete this.popups; return this.popups = new Set(); }, get btnSelectors() { delete this.btnSelectors; return this.btnSelectors = btnSelectors.join(","); }, get ExtensionParent() { delete this.ExtensionParent; return this.ExtensionParent = ChromeUtils.importESModule("resource://gre/modules/ExtensionParent.sys.mjs").ExtensionParent; }, get browserActionFor() { delete this.browserActionFor; return this.browserActionFor = this.ExtensionParent.apiManager.global.browserActionFor; }, get exclude() { delete this.exclude; return this.exclude = excludeBtnSelectors.join(","); }, get excludePopup() { delete this.excludePopup; return this.excludePopup = excludeHidePopupSelectors.join(","); }, async init() { await delayedStartupPromise; for (let elm of (this.areasList = document.querySelectorAll(areaSelectors.join(",")))) { elm.addEventListener("mouseover", this); elm.addEventListener("mouseout", this); elm.addEventListener("mousedown", this); } for (let elm of (this.popupsList = document.querySelectorAll("toolbar, popupset"))) elm.addEventListener("popupshown", this); setUnloadMap(id, this.destructor, this); if (!hideAreaSelectors.length) return; if (excludeHidePopupSelectors.length) this.popupShown = this.pShown; this.popupShown_ = this.popupShown.bind(this); this.popupHidden_ = this.popupHidden.bind(this); this.hidePopup = this.hPopup; for (let elm of (this.hideArea = document.querySelectorAll(hideAreaSelectors.join(",")))) elm.addEventListener("popupshown", this.popupShown_); }, destructor() { for (let elm of this.areasList) { elm.removeEventListener("mouseover", this); elm.removeEventListener("mouseout", this); elm.removeEventListener("mousedown", this); } for (let elm of this.popupsList) elm.removeEventListener("popupshown", this); for (let elm of this.hideArea) elm.removeEventListener("popupshown", this.popupShown_); }, popupShown({target}) { if (target.localName === "tooltip") return; this.pShow(target); }, pShown({target}) { if (target.localName === "tooltip" || target.matches(this.excludePopup)) return; this.pShow(target); }, pShow(target) { target.addEventListener("mouseenter", this); target.addEventListener("popuphidden", this.popupHidden_, { once: true }); if (this.open_) return; this.open_ = true; gBrowser.tabpanels.addEventListener("mouseenter", this); }, popupHidden({target}) { target.removeEventListener("mouseenter", this); }, handleEvent(e) { this[e.type](e); }, mouseenter({currentTarget}) { clearTimeout(this.hidetimer); if (currentTarget != gBrowser.tabpanels) return; this.hidetimer = setTimeout(() => this.hidePopup(), hidedelay); }, popuphidden({target}) { this.popups.delete(target); }, popupshown({target}) { if (target.localName === "tooltip") return; this.popups.add(target); target.addEventListener("popuphidden", this, { once: true }); }, hidePopup() { this.popups.forEach(p => p.hidePopup?.()); this.popups.clear(); }, hPopup() { this.popups.forEach(p => p.hidePopup?.()); this.popups.clear(); if (!this.open_) return; gBrowser.tabpanels.removeEventListener("mouseenter", this); this.open_ = false; }, mousedown() { clearTimeout(this.timer); }, mouseout() { clearTimeout(this.timer); }, mouseover({target}) { clearTimeout(this.timer); this.timer = setTimeout(() => { if (target?.matches?.(`${this.exclude},:is(menupopup,panel) :scope`) ?? true) return; let extensionid, isbtn = target.matches(this.btnSelectors) || !!(target.parentElement.matches(this.btnSelectors) && (target = target.parentElement)); if (!target.hasAttribute("open") && (isbtn || target.menupopup || target.getAttribute("widget-type") === "view" || target.classList.contains("toolbarbutton-combined-buttons-dropmarker") || ((extensionid = target.dataset?.extensionid) && this.browserActionFor(this.ExtensionParent.WebExtensionPolicy.getByID(extensionid).extension).action.tabContext.get(gBrowser.selectedTab).popup))) { this.hidePopup(); let params = { bubbles: false, cancelable: true, }; target.dispatchEvent(new MouseEvent("mousedown", params)); target.dispatchEvent(new MouseEvent("click", params)); } }, delay); }, }).init())();
Отредактировано Vitaliy V. (26-06-2024 15:10:34)
Отсутствует
Vitaliy V.
Проверил на чистом профиле. Помимо указанных кнопок открывает при наведении на кнопки приложений меню, если оно есть. И даже при наведении на стрелочку из приложения ATB кнопки, типа "Восстановить", "Переключить прокси". В старом варианте так не было. Придётся делать большой список excludeBtnSelectors. Пока список exclude не делал, не проверил.
И ещё, было и в старом и в новом есть. При наведении на звёздочку (добавление в закладки) в адресной, происходит клик и страница добавляется в закладки. Это просто информация, у себя закомментарил.
Отсутствует
а что бы менюшки сами закрывались можно сделать
Все что ли? тогда попробуйте добавить в hideAreaSelectors
"toolbar",
"popupset",
или раскомментируйте то что там есть только для закладок на панели,
кстати логика самозакрытия несколько отличается от того что было, они закрываются при наведении курсора на область контента, иначе получаем неожиданное закрытие меню например при при отводе курсора на другое меню вызываемое по ПКМ
Отредактировано Vitaliy V. (08-08-2024 14:46:25)
Отсутствует
Но я так и не понял как исключить некоторые кнопки
Ну как в excludeBtnSelectors добавляете селекторы, ID или например так сразу для всех расширений
"toolbarbutton[data-extensionid]",
Отсутствует
Восстановить закладку (последний спойлер)
У меня давно работает вообще везде, даже в менюшках с закладками, подключается так
Спасибо! У меня не было подключено в pageshow:. И вот здесь правильней оставить только load:
domload: [ // По событию "DOMContentLoaded" { path: "ucf_UndoBookmarksContextMenu.uc.js", urlregxp: /chrome:\/\/browser\/content\/places\/bookmarksSidebar\.xhtml/, ucfobj: false, }, ], load: [ // По событию "load" { path: "ucf_UndoBookmarksContextMenu.uc.js", urlregxp: /chrome:\/\/browser\/content\/places\/places\.xhtml/, ucfobj: false, },
Отсутствует
вроде работает как мне надо, но не знаю правильно или нет.
Не могли бы Вы обновить еще одну кнопку
Разве что обновить в смысле оформить для UCF
(async ( timeout = 150, trg = document.querySelector("#tabbrowser-tabs tab.tabbrowser-tab").flattenedTreeParentNode, ) => ({ id: 0, tab: null, init() { trg.addEventListener("mouseover", this); setUnloadMap(Symbol("tab_focus"), this.destructor, this); }, handleEvent({target}) { var tab = target.closest("tab:not([selected])"); if (tab && this.tab != tab) clearTimeout(this.id), this.id = setTimeout((t, x) => { if (t.matches(":hover") && Math.abs(x - t.screenX) < 50) gBrowser.selectedTab = t; this.tab = null; }, timeout, this.tab = tab, tab.screenX); }, destructor() { trg.removeEventListener("mouseover", this); }, }).init())();
и тут бы исключить меню по ПКМ
Добавил excludeHidePopupSelectors туда можно добавлять селекторы Pop-Up
Отредактировано Vitaliy V. (28-06-2024 14:44:33)
Отсутствует
обнновите пожалуйста еще вот эту кнопку
Ничего себе кнопка это моё расширение, но модифицированное, почему бы вам к автору мода Dumby не обратится?
подключается так
Многовато подключений это же регулярные выражения, можно заменить три в scriptschrome и scriptsallchrome
но одно в scriptsallchrome
{ path: "ucf_UndoBookmarksContextMenu.uc.js", urlregxp: /^chrome:\/\/browser\/content\/(?:browser|places\/(?:bookmarksSidebar|places))\.xhtml/, },
Отредактировано Vitaliy V. (26-06-2024 20:30:57)
Отсутствует
Крайние оригинальные UserChromeFiles и sidebar_tabs.js.
Как сделать так, чтобы при постоянно видимом вертикальном тулбаре, при нажатии на кнопку панель sidebar_tabs появлялась поверх контента на странице?
Firefox 128 (64-bit) on windows 10 (64-bit).
Отсутствует
одно в scriptsallchrome
Точно, спасибо. Даже не задумывался об этом.
Как сделать так, чтобы при постоянно видимом вертикальном тулбаре, при нажатии на кнопку панель sidebar_tabs появлялась поверх контента на странице?
Вот мне тоже по наведению не нравится, хотелось бы иметь возможность вызывать кнопкой. Но это не к sidebar_tabs относится, а к кнопке. Так будет меньше времени тратиться, а сейчас надо медленно позиционировать курсор или увеличивать область срабатывания, первое тратит время и отвлекает внимание, а второе приведет к ложным вызовам.
Отредактировано _zt (26-06-2024 21:41:31)
Отсутствует
Вот мне тоже по наведению не нравится, хотелось бы иметь возможность вызывать кнопкой. Но это не к sidebar_tabs относится, а к кнопке.
Всё равно не понимаю как скрестить кнопку+sidebar_tabs для нужного мне режима отображения.
По отдельной кнопке "Декодеры" https://forum.mozilla-russia.org/viewto … 21#p810021 панель sidebar_tabs ведёт себя ровно так как мне нужно. Я нажимаю на кнопку, выезжает боковая панель, не сдвигая содержимое страницы, а отображается поверх.
Более того, после первого открытия боковой панели этой отдельной кнопкой, начинает корректно работать (до закрытия браузера) и родная кнопка sidebar_tabs.
Есть ли какой-то вариант сделать так, чтобы нажимая на родную кнопку sidebar_tabs, выезжала боковая панель, но не сдвигая страницу вправо, а поверх содержимого страницы?
Отредактировано Den199 (28-06-2024 11:23:49)
Firefox 128 (64-bit) on windows 10 (64-bit).
Отсутствует
сделать так, чтобы нажимая на родную кнопку sidebar_tabs, выезжала боковая панель, но не сдвигая страницу вправо, а поверх содержимого страницы?
Хорошо добавил параметр SHOW_HIDE https://github.com/VitaliyVstyle/Vitali … abs.js#L41
Параметр влияет на кнопку (кроме кнопки закрытия на самом Sidebar Tabs) и сочетания клавиш. Например клик по кнопке показывает панель, для скрытия можно использовать повторный клик или клик в области контента.
Для полного закрытия Sidebar Tabs (то что делала кнопка и раньше) можно использовать Shift + ЛКМ по кнопке, или без модификаторов по кнопке закрытия Sidebar Tabs.
Полное закрытие значит выгрузка контента из Sidebar Tabs, удаление всех слушателей а значит отключение показа панели по наведению курсора на область срабатывания.
Добавлено 28-06-2024 13:26:14
Вот мне тоже по наведению не нравится, хотелось бы иметь возможность вызывать кнопкой.
Ну не знаю показать можно сделать но чтобы скрыть тоже кликать по кнопке придется, там по СКМ добавить можно или как?
папка long_left_click
Загружать из неё в сандбокс скрипт startup.js
Например
А почему не установить расширение например так
AddonManager.installBuiltinAddon("resource://..."); ?
Отредактировано Vitaliy V. (28-06-2024 15:50:21)
Отсутствует
Vitaliy V.
А закрывать по щелчку в поле контента нельзя? Но только именно контента, а не вкладок или родного сайдбара с TST.
Я оттуда не открываю вкладки, только поиск, добавление и микропересортировка, так что думаю нормально будет. Да повесьте пожалуйста на СКМ, а я потом переставлю, если понадобится. И, если можно, пример для Ctrl+ЛКМ.
Отредактировано _zt (28-06-2024 15:44:03)
Отсутствует