Пробовал вот это, но не помогло
toolbarpaletteitem[place="palette"] > toolbaritem.ucf-additional-springs { background: white url("./svg/spring.svg") center no-repeat; border: none; outline: 1px solid currentColor; outline-offset: -1px; min-height: 37px; opacity: 0.3; } toolbarpaletteitem[place="toolbar"] > toolbaritem.ucf-additional-springs, toolbarpaletteitem[place="panel"] > toolbaritem.ucf-additional-springs, toolbarpaletteitem[place="menu-panel"] > toolbaritem.ucf-additional-springs { background: white url("./svg/spring.svg") center no-repeat; border: none; min-width: 34px; min-height: 14px; outline: 1px solid currentColor; outline-offset: -1px; margin-block: 2px !important; margin-inline: 1px !important; opacity: 0.3; } toolbarpaletteitem[place="palette"][id*="ucf-additional-top-spring"], toolbarpaletteitem[place="palette"][id*="ucf-additional-vertical-spring"], toolbarpaletteitem[place="palette"][id*="ucf-additional-bottom-spring"] { vertical-align: top; } toolbarpaletteitem[place] > toolbaritem.ucf-additional-springs { -moz-window-dragging: no-drag !important; } #ucf-restart-app { list-style-image: url("./svg/restart-app-16.svg") !important; fill: #f38725 !important; } #ucf-additional-vertical-toggle-button { list-style-image: url("./svg/vert-toolbar.svg") !important; } #ucf-additional-top-toggle-button { list-style-image: url("./svg/top-toolbar.svg") !important; } #ucf-additional-bottom-toggle-button { list-style-image: url("./svg/bottom-toolbar.svg") !important; } #ucf-view-history-sidebar-button { list-style-image: url("./svg/history-16.svg") !important; } #ucf-view-bookmarks-sidebar-button { list-style-image: url("./svg/bookmark-16.svg") !important; } #ucf-open-directories-button { list-style-image: url("./svg/user-home-16.svg") !important; } #browser-bottombox:not([lwthemefooter="true"]):-moz-lwtheme { background-color: transparent !important; } #ucf-additional-vertical-box { background: none !important; border: none !important; box-shadow: none !important; position: relative !important; z-index: 3 !important; margin: -1px 0 !important; } #ucf-additional-top-bar, #ucf-additional-vertical-bar, #ucf-additional-bottom-bar { -moz-appearance: none !important; appearance: none !important; padding: 0 !important; border-block: none !important; overflow: -moz-hidden-unscrollable; overflow: clip; } #ucf-additional-bottom-bar { border-top: 1px solid var(--chrome-content-separator-color, var(--toolbox-border-bottom-color, rgba(0,0,0,0.1))) !important; } #ucf-additional-bottom-bar #ucf-additional-bottom-closebutton { margin: 0 var(--toolbarbutton-outer-padding, 1px) !important; padding: var(--toolbarbutton-inner-padding, 4px) !important; } #ucf-additional-bottom-bar #ucf-additional-bottom-closebutton .toolbarbutton-icon { margin: 0 !important; padding: 0 !important; height: 16px !important; width: 16px !important; } #ucf-additional-vertical-box > #ucf-additional-vertical-bar, #ucf-additional-bottom-bar { -moz-window-dragging: no-drag !important; background-clip: border-box !important; background-origin: border-box !important; background-color: var(--toolbar-bgcolor, -moz-Dialog) !important; background-image: var(--toolbar-bgimage, linear-gradient(rgba(255,255,255,.15), rgba(255,255,255,.15))) !important; color: var(--toolbar-color, -moz-DialogText) !important; border-inline: none !important; } #ucf-additional-vertical-box > #ucf-additional-vertical-bar { padding: 1px 0 !important; margin: 0 !important; font-size: 1rem !important; min-width: 20px !important; width: auto !important; flex-grow: 1 !important; align-items: stretch !important; justify-content: start !important; flex-direction: column !important; } :root:-moz-lwtheme[style*="--lwt-additional-images"] #navigator-toolbox { background-attachment: fixed !important; } #ucf-additional-vertical-box:-moz-lwtheme > #ucf-additional-vertical-bar, #ucf-additional-bottom-bar:-moz-lwtheme { color: var(--toolbar-color, inherit) !important; background-repeat: no-repeat, var(--lwt-background-tiling, repeat-y) !important; background-size: auto auto !important; background-attachment: fixed !important; background-position: right top, var(--lwt-background-alignment, right top) !important; background-color: transparent !important; background-image: linear-gradient(var(--toolbar-bgcolor, rgba(255,255,255,.4)), var(--toolbar-bgcolor, rgba(255,255,255,.4))), var(--lwt-header-image, var(--lwt-additional-images, none)) !important; } :root[lwtheme-image="true"] #ucf-additional-vertical-box:-moz-lwtheme > #ucf-additional-vertical-bar, :root[lwtheme-image="true"] #ucf-additional-bottom-bar:-moz-lwtheme { background-repeat: no-repeat, repeat-y !important; } :root #browser-bottombox[lwthemefooter="true"] #ucf-additional-bottom-bar:-moz-lwtheme { background-repeat: initial !important; background-attachment: initial !important; background-position: initial !important; background-color: var(--toolbar-bgcolor, rgba(255,255,255,.4)) !important; background-image: none !important; } #ucf-additional-vertical-box[vertautohide="true"]:-moz-lwtheme > #ucf-additional-vertical-bar { background-color: var(--lwt-accent-color, white) !important; } #ucf-additional-vertical-box[vertautohide="true"]:-moz-lwtheme-brighttext > #ucf-additional-vertical-bar { background-color: var(--lwt-accent-color, black) !important; } #ucf-additional-vertical-box > #ucf-additional-vertical-bar:not([collapsed="true"]) { border-inline-end: 1px solid var(--chrome-content-separator-color, var(--toolbox-border-bottom-color, rgba(0,0,0,0.1))) !important; } #ucf-additional-vertical-box[v_vertical_bar_start="false"] > #ucf-additional-vertical-bar:not([collapsed="true"]) { border-inline-end: none !important; border-inline-start: 1px solid var(--chrome-content-separator-color, var(--toolbox-border-bottom-color, rgba(0,0,0,0.1))) !important; } #ucf-additional-vertical-box > #ucf-additional-vertical-bar[collapsed="true"] { padding: 0 !important; border: none !important; min-width: 0 !important; } #ucf-additional-vertical-box > #ucf-additional-vertical-bar > toolbaritem.toolbaritem-combined-buttons { flex-direction: column !important; margin-inline: 0 !important; } #ucf-additional-vertical-box > #ucf-additional-vertical-bar > toolbaritem.toolbaritem-combined-buttons > toolbarbutton.toolbarbutton-combined > .toolbarbutton-text { padding-inline: 1px !important; margin-inline: 0 !important; min-width: 0 !important; } #ucf-additional-vertical-box > #ucf-additional-vertical-bar > toolbaritem.toolbaritem-combined-buttons separator { display: none !important; } #ucf-additional-vertical-box > #ucf-additional-vertical-bar > toolbarspring { min-width: 0 !important; } #ucf-additional-vertical-box > #ucf-additional-vertical-bar > toolbarseparator { -moz-appearance: none !important; appearance: none !important; padding: 0 !important; margin: 2px !important; margin-top: 4px !important; margin-bottom: 0 !important; border: none !important; border-top: 1px solid currentColor !important; width: auto !important; max-width: none !important; height: 5px !important; min-height: 5px !important; max-height: 5px !important; opacity: 0.3 !important; } #ucf-additional-vertical-box > #ucf-additional-vertical-bar > toolbarspacer { height: 15px !important; } #ucf-additional-vertical-container { display: flex !important; } #ucf-additional-vertical-container[vertautohide="true"] { position: relative !important; min-width: 100px !important; width: 100px !important; max-width: 100px !important; overflow: visible !important; margin-inline-start: 0 !important; margin-inline-end: -100px !important; pointer-events: none !important; visibility: hidden !important; } #ucf-additional-vertical-container[vertautohide="true"][v_vertical_bar_start="false"] { margin-inline-start: -100px !important; margin-inline-end: 0 !important; } #ucf-additional-vertical-box[vertautohide="true"] { position: absolute !important; display: block !important; top: 0 !important; bottom: 0 !important; left: 0 !important; right: auto !important; font-size: 0px !important; } #ucf-additional-vertical-box[vertautohide="true"][v_vertical_bar_start="false"], #ucf-additional-vertical-box[vertautohide="true"]:-moz-locale-dir(rtl) { left: auto !important; right: 0 !important; } #ucf-additional-vertical-box[vertautohide="true"][v_vertical_bar_start="false"]:-moz-locale-dir(rtl) { left: 0 !important; right: auto !important; } #ucf-additional-vertical-box[vertautohide="true"] > #ucf-additional-vertical-bar:not([collapsed="true"]) { left: calc(-1 * (100% - 5px)); right: auto; opacity: 0; animation-name: toolbar-hide !important; animation-timing-function: linear !important; animation-duration: 0.2s !important; animation-iteration-count: 1 !important; animation-delay: 0s !important; transition-property: opacity !important; transition-timing-function: step-start !important; transition-duration: 0s !important; transition-delay: 0.2s !important; pointer-events: auto !important; height: 100% !important; visibility: visible !important; position: relative !important; } #ucf-additional-vertical-box[vertautohide="true"]:-moz-locale-dir(rtl) > #ucf-additional-vertical-bar:not([collapsed="true"]), #ucf-additional-vertical-box[vertautohide="true"][v_vertical_bar_start="false"] > #ucf-additional-vertical-bar:not([collapsed="true"]) { left: auto; right: calc(-1 * (100% - 5px)); animation-name: toolbar-hide-rtl !important; } #ucf-additional-vertical-box[vertautohide="true"][v_vertical_bar_start="false"]:-moz-locale-dir(rtl) > #ucf-additional-vertical-bar:not([collapsed="true"]) { left: calc(-1 * (100% - 5px)); right: auto; animation-name: toolbar-hide !important; } #ucf-additional-vertical-container > #ucf-additional-vertical-box[vertautohide="true"][v_vertical_bar_visible] > #ucf-additional-vertical-bar:not([collapsed="true"]) { left: 0px; right: auto; opacity: 1; animation-name: toolbar-visible !important; transition-delay: 0s !important; } #ucf-additional-vertical-container > #ucf-additional-vertical-box[vertautohide="true"]:-moz-locale-dir(rtl)[v_vertical_bar_visible] > #ucf-additional-vertical-bar:not([collapsed="true"]), #ucf-additional-vertical-container > #ucf-additional-vertical-box[vertautohide="true"][v_vertical_bar_start="false"][v_vertical_bar_visible] > #ucf-additional-vertical-bar:not([collapsed="true"]) { left: auto; right: 0px; animation-name: toolbar-visible-rtl !important; } #ucf-additional-vertical-container > #ucf-additional-vertical-box[vertautohide="true"][v_vertical_bar_start="false"]:-moz-locale-dir(rtl)[v_vertical_bar_visible] > #ucf-additional-vertical-bar:not([collapsed="true"]) { left: 0px; right: auto; animation-name: toolbar-visible !important; } @keyframes toolbar-hide { from { left: 0px; } to { left: calc(-1 * (100% - 5px)); } } @keyframes toolbar-hide-rtl { from { right: 0px; } to { right: calc(-1 * (100% - 5px)); } } @keyframes toolbar-visible { from { left: calc(-1 * (100% - 5px)); } to { left: 0px; } } @keyframes toolbar-visible-rtl { from { right: calc(-1 * (100% - 5px)); } to { right: 0px; } } :root[inDOMFullscreen] #ucf-additional-vertical-box > #ucf-additional-vertical-bar:not([collapsed="true"]), :root[inFullscreen]:not([OSXLionFullscreen]) #ucf-additional-vertical-box > #ucf-additional-vertical-bar:not([collapsed="true"]):not([fullscreentoolbar="true"]), #ucf-additional-bottom-bar[collapsed="true"][customizable="true"][customizing="true"] { visibility: collapse !important; padding: 0 !important; border: none !important; min-width: 0 !important; } #ucf-additional-vertical-box > #ucf-additional-vertical-bar > #personal-bookmarks { width: 0 !important; flex-grow: 0 !important; margin: 0 !important; } #ucf-additional-vertical-box > #ucf-additional-vertical-bar > #search-container { width: 0 !important; max-height: 0 !important; overflow-y: visible !important; flex-grow: 0 !important; min-width: 80px !important; margin: 0 !important; } :root[chromehidden~="location"][chromehidden~="toolbar"] #ucf-additional-vertical-container { display: none !important; } @supports (fill: color-mix(in srgb, currentColor 20%, transparent)) { #ucf-restart-app { fill: color-mix(in srgb, currentColor 20%, #f38725) !important; } }
Win7
Отсутствует
kokoss, у меня vertical_top_bottom_bar.css аналогичный, но нижней панели нет.
Windows 10 LTSC
Отсутствует
Black_Monk
Эту правку -> https://forum.mozilla-russia.org/viewto … 91#p802991 делали?
Отредактировано kokoss (02-08-2023 12:37:16)
Win7
Отсутствует
Black_Monk
Эту правку -> https://forum.mozilla-russia.org/viewto … 91#p802991 делали?
Этот блок у меня в vertical_top_bottom_bar.js уже есть...
Отредактировано Black_Monk (02-08-2023 12:51:31)
Windows 10 LTSC
Отсутствует
kokoss
Теоретически, не исключён вариант, что Black_Monk
в UCF пользуется только нижним тулбаром и ничем другим,
поэтому про него и говорит, то есть как-бы ложный акцент.
Если предположение верно, тогда мог просто накрыться сам UCF,
и тулбар, соответственно, вместе с ним.
В таком случае, можно предложить почитать отсюда.
Ну, и ещё, напомнить, что лучше заранее удалить
импорт модуля Services.jsm а то в 117 опять будет проблема.
Отсутствует
Теоретически, не исключён вариант, что Black_Monk
в UCF пользуется только нижним тулбаром и ничем другим,
Да, так и есть...
В таком случае, можно предложить почитать отсюда.
Да помогло, огромное спасибо. И vertical_top_bottom_bar.css не пришлось править...
лучше заранее удалить
импорт модуля Services.jsm а то в 117 опять будет проблема.
А это как сделать? Я честно говоря, даже не понял о чём вы...
Отредактировано Black_Monk (02-08-2023 16:37:03)
Windows 10 LTSC
Отсутствует
Dumby
В таком случае, можно предложить почитать отсюда.
У меня без этой правки не работал UCF, а у него только нижняя панель, поэтому даже не подумал про эту правку!
Win7
Отсутствует
А это как сделать? Я честно говоря, даже не понял о чём вы...
Видимо про это -> var { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
Win7
Отсутствует
Видимо про это -> var { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
А если так: ChromeUtils.defineModuleGetter(this, "Services", "resource://gre/modules/Services.jsm");
Тоже удалять?
«The Truth Is Out There»
Отсутствует
А если так: ChromeUtils.defineModuleGetter(this, "Services", "resource://gre/modules/Services.jsm");
Тоже удалять?
Откуда ж мне знать, у меня нет 117!
Win7
Отсутствует
А если так: ChromeUtils.defineModuleGetter(this, "Services", "resource://gre/modules/Services.jsm");
Тоже удалять?
Конечно удалять. По этому адресу теперь больше ничего нет.
Обратишься к такому геттеру — получишь ошибку NS_ERROR_FILE_NOT_FOUND
Если сомнение в том, а как же совместимость кода с лисицами древнее чем 104,
тогда можно задвинуть импорт какой-нибудь проверкой, например, globalThis.Services
Ещё возможен кейс, где импорт идёт через Cu.import() и не по назначению, а для получения NSVO
Это невозможно уже со 102-ой, но сам код мог ещё как-то, неправильно, но работать.
А теперь вообще откажет. В этом случае, простое удаление не поможет, нужно искать замену,
например, перенести в SystemGlobal
Отсутствует
Конечно удалять. По этому адресу теперь больше ничего нет.
Обратишься к такому геттеру — получишь ошибку NS_ERROR_FILE_NOT_FOUND
Dumby, спасибо.
Правда я пока не планирую переходить на Windows 10+, поэтому FF117+ мне не грозит.
Но взял на заметку. Мало ли в будущем все-таки придется пересесть на Windows 10+.
«The Truth Is Out There»
Отсутствует
Dumby, kokoss, спасибо за помощь...
Windows 10 LTSC
Отсутствует
to_Alls свёл в один скрипт перехват нажатий клавиш от Dumby (немного изменил), может пригодиться!
(async anim => { // Для докум. окна браузера [ChromeOnly] var klaBa = { /* блок перехвата нажатиий клавиш синтаксис: Имя[_mod][_OS](e,t){код} e = Event, t = gBrowser.selectedTab Откройте боковую панель и смотрите коды нажатий клавиш в консоли имя со строчной буквы: передавать нажатия окну, запрет preventDefault() mod содержит «I» — запуск только в полях ввода, «i» кроме полей ввода отделять «_» от кода клавиши при наличии модификаторов и/или «iI»-флага OS только для указанной системы: KeyA_1i_win(e,t){… //Alt+A для Windows Ссылка: "имя нужной функции": digit1() {код}, numpad1: "digit1" */ Digit1() { console.log("Digit1 Page+Input"); }, digit2() { console.log("digit2 skip preventDefault"); }, Digit3_I() { console.log("Digit3 Only Input"); }, Digit4_i() { console.log("Digit4 Skip Input"); }, Digit5: "Digit1", //ссылка на функцию Digit6_win(e, t) { console.log("Digit6_I Windows Only"); }, Digit6_linux(e, t) { console.log("Digit6_I Linux Only"); }, }; ((obj, re, reos, del) => { // парсинг блока клавиш ускоряет обработку нажатий var {platform} = AppConstants, num = -platform.length - 1; for(var p in klaBa) reos.test(p) && del.add( p.endsWith(platform) ? p.slice(0, num) : p); for(var p in klaBa) del.has(klaBa[p]) && del.add(p); for(var d of del) delete klaBa[d]; //есть Key_OS ? удалить имена-клоны for(var p in klaBa) if (reos.test(p)) { //убрать имя вашей ОС из свойства klaBa[p.replace(reos,'')] = klaBa[p]; delete klaBa[p];} for(var p in klaBa) { // парсинг функция(){…}, bool, num var func = klaBa[p]; if (typeof func == "string") func = klaBa[func]; //ссылка на функцию var [key, mod] = p.split("_"); mod = mod || ""; var upper = key[0].toUpperCase(); var prevent = key[0] == upper; // bool: True если имя с Заглавной. если false: Skip preventDefault var [, m, i] = mod.match(re); m = m || 0; // modifiers bitmap var arr = [func, prevent, i ? i == "I" ? 0 : 1 : -1]; // textfields flag var prop = prevent ? key : upper + key.slice(1); //имя клавиши без модификаторов var o = obj[prop] || (obj[prop] = Object.create(null)); o[m] ? o[m].push(arr) : o[m] = [arr]; } klaBa = obj; // нет Ii -1 везде, Имя_I = 0 в полях ввода, Имя_i 1 кроме полей ввода })(Object.create(null), /(\d+)?(i)?/i, /_(?:win|linux|macosx)$/, new Set()); var Debug = (id = "sidebar-box") => !document.getElementById(id).hidden, keydown_w = e => { // перехват клавиш if (e.repeat) return; // повтор: выход var mod = e.metaKey*8 + e.ctrlKey*4 + e.shiftKey*2 + e.altKey; if (e.keyCode > 31 && Debug()) console.log(`■ key ${mod ? e.code +"_"+ mod : e.code}`); //показ клавиш var data = klaBa[e.code]?.[mod]; if (!data) return; for(var [func, p, i] of data) if (i ^ docShell.isCommandEnabled("cmd_insertText")) p && e.preventDefault(), func(e, gBrowser.selectedTab); //запуск по сочетанию }; var args = ["keydown", e => { keydown_w(e)}, true]; window.addEventListener(...args); var id = Symbol(), ucf = ucf_custom_script_win; ucf.unloadlisteners.push(id); ucf[id] = {destructor: () => window.removeEventListener(...args)}; })({animate: true});
Отсутствует
Dumby
Убрал, в config.js тоже, но у меня теперь отвалились хоткей, которые похоже зависят от него.
Что делать? Если уберут в 117, придется обходиться таким?
var p=Services.dirsvc.get('UChrm',Ci.nsIFile);p.initWithPath(p.path+"...");p.launch();
Отсутствует
смотрите коды нажатий клавиш в консоли
Вот это мне не нравится.
Из-за этого, вычисление модификаторов вытащено из того места, где оно было,
и поднято выше, таким образом, теряется существенная часть смысла предварительной
обработки klaBa — «если e.code не совпадает, то модификаторы даже не вычисляются».
Даже если вернуть на место и повторить под Debug()-условием, то всё равно,
это лишние проверки, а из-за e.keyCode > 31 не показывает какие-нибудь там
«Backspace», «Enter», «Pause».
Лучше бы что-нибудь другое для просмотра кода клавиш придумать.
Захотелось попробовать спец-панельку, типа жмешь, например, Ctrl+Shift+0,
выскакивает панелька, теперь нажимешь клавиши, и на ней смотришь.
Набросок кода для добавления в предоставленный, перед последней строкой.
// Ctrl+Shift+0 (klaBa.Digit0 = klaBa.Digit0 || (klaBa.Digit0 = Object.create(null)))[6] = [[e => { var df = MozXULElement.parseXULToFragment(` <panel onpopuphidden="destroy()" onpopupshown="pos()" oncommand="cmd(event)"> <hbox style="font-size: 20px; padding: .5em;"> <label style="min-width: 14em; border: 1px solid gray; display: flex; align-items: center; justify-content: center;"/> <button label="P" tooltiptext="Toggle skip preventDefailt()" style="min-width: 2em;"/> <button label="i" tooltiptext="Ignore textfields" style="min-width: 2em;"/> <button label="I" tooltiptext="Only textfields" style="min-width: 2em;"/> <box style="width: 1em;"/> <button label="W" tooltiptext="Windows" style="min-width: 2em;"/> <button label="L" tooltiptext="Linux" style="min-width: 2em;"/> <button label="M" tooltiptext="Mac" style="min-width: 2em;"/> <box style="width: 1em;"/> <button label="Copy"/> </hbox> </panel> `); var code, mods, os; var panel = df.firstChild, label = df.querySelector("label"); panel.remove(); var setLabel = () => label.value = [code, mods, os].filter(Boolean).join("_"); var kw = keydown_w; panel.destroy = () => panel.remove(keydown_w = kw); panel.pos = () => { var {width, height} = panel.getOuterScreenRect(); var aw = screen.availWidth - width; panel.moveTo(aw/2, screen.availHeight/3); panel.style.removeProperty("opacity"); } panel.cmd = e => { var lab = e.target.label; if (lab == "Copy") navigator.clipboard.writeText(label.value), panel.hidePopup(); else commands[lab](), setLabel(); } var re = /i/i, commands = { P() { var first = code[0]; var upper = first.toUpperCase(); first = first == upper ? first.toLowerCase() : upper; code = first + code.slice(1); }, i: (flag = "i") => re.test(mods) ? mods = mods.replace(re, mods.includes(flag) ? "" : flag) : mods += flag, I: () => commands.i("I"), W: (pl = "win") => os = os == pl ? "" : pl, L: () => commands.W("linux"), M: () => commands.W("macosx") }; var handleKeydown = e => { e.preventDefault(); e.stopImmediatePropagation(); if (e.repeat) return; os = ""; code = e.code || ""; mods = e.metaKey*8 + e.ctrlKey*4 + e.shiftKey*2 + e.altKey || ""; //if (!mods && code == "Escape") return panel.hidePopup(); setLabel(); } // end of lazy stuff (klaBa.Digit0[6][0][0] = () => { panel.style.setProperty("opacity", "0", "important"); mainPopupSet.append(panel); panel.openPopupAtScreen(); (keydown_w = handleKeydown)(e); })(); }, false, -1]];
Убрал, в config.js тоже, но у меня теперь отвалились хоткей, которые похоже зависят от него.
Нисколько не похоже.
Вообще никак не связанные вещи.
Эту плюшку просто выбросили в 116
Bug 920187 - Deprecate and get rid of FileUtils.getFile()
Отсутствует
Dumby
Как можно поправить? Не работает из-за FileUtils.getFile. При выходе, удалялись ненужные файлы в профиле.
try{var closer={observe:(s,topic,data)=>{if(topic=="quit-application"){ //const clipboard=Cc["@mozilla.org/widget/clipboard;1"].getService(Ci.nsIClipboard);clipboard.emptyClipboard(clipboard.kGlobalClipboard);//Clear clipboard FileUtils.getFile("UChrm",["user_chrome_files","_","sqlite[Fx].vbs"]).launch();//Run external script }}};Services.obs.addObserver(closer,"quit-application",false);}catch(ex){}
По ссылке на баг, прочитал такое "IOUtils and PathUtils offers async alternatives", но дуб дубом в этом. Это что-то вроде замены FileUtils.getFile()?
Отредактировано b0ttle (03-08-2023 23:39:58)
Отсутствует
В последних версиях пропали интервалы из add_toolbar_buttons@vitaliy.ru.xpi. Остался только растягивающийся интервал. Можно ли это как то поправить?
special_widget.css:
@-moz-document url("chrome://browser/content/browser.xhtml") { toolbarpaletteitem[place="palette"] > toolbarspring[id^="customizableui-special-spring"] { background: white url("./svg/spring.svg") center no-repeat !important; border: none !important; outline: 1px solid currentColor !important; outline-offset: -1px !important; min-height: 37px !important; opacity: 0.3 !important; } toolbarpaletteitem[place="toolbar"] > toolbarspring[id^="customizableui-special-spring"] { background: white url("./svg/spring.svg") center no-repeat !important; border: none !important; min-width: 34px !important; min-height: 14px !important; outline: 1px solid currentColor !important; outline-offset: -1px !important; margin-block: 2px !important; margin-inline: 1px !important; opacity: 0.3 !important; } toolbarpaletteitem[place="palette"] > toolbarspacer[id^="customizableui-special-spacer"] { background: white !important; border: none !important; outline: 1px solid currentColor !important; outline-offset: -1px !important; min-height: 37px !important; width: 15px !important; max-width: 15px !important; opacity: 0.3 !important; } toolbarpaletteitem[place="toolbar"] > toolbarspacer[id^="customizableui-special-spacer"] { background: white !important; border: none !important; outline: 1px solid currentColor !important; outline-offset: -1px !important; min-height: 14px !important; width: 15px !important; margin-block: 2px !important; margin-inline: 1px !important; opacity: 0.3 !important; } toolbarseparator[id^="customizableui-special-separator"] { -moz-appearance: none !important; appearance: none !important; padding: 0 !important; margin: 2px !important; margin-inline-start: 4px !important; margin-inline-end: 0 !important; border: none !important; border-inline-start: 1px solid currentColor !important; min-width: 5px !important; width: 5px !important; max-width: 5px !important; opacity: 0.3 !important; } toolbar[orient="vertical"] toolbarseparator[id^="customizableui-special-separator"] { margin-inline-start: 2px !important; margin-inline-end: 2px !important; margin-top: 4px !important; margin-bottom: 0 !important; border-top: 1px solid currentColor !important; border-inline-start: none !important; width: auto !important; max-width: none !important; height: 5px !important; min-height: 5px !important; max-height: 5px !important; } toolbarpaletteitem[place="palette"] > toolbarseparator[id^="customizableui-special-separator"] { margin: 0 !important; min-height: 37px !important; } toolbarpaletteitem[place] > toolbarspring[id^="customizableui-special-spring"], toolbarpaletteitem[place] > toolbarspacer[id^="customizableui-special-spacer"], toolbarpaletteitem[place] > toolbarseparator[id^="customizableui-special-separator"] { -moz-window-dragging: no-drag !important; } toolbar:not(#nav-bar) toolbarpaletteitem[place="toolbar"][id^="wrapper-customizableui-special-spring"], toolbar:not(#nav-bar) toolbarspring { max-width: none !important; } toolbarpaletteitem[place="palette"][id^="wrapper-customizableui-special-spacer"], toolbarpaletteitem[place="palette"][id^="wrapper-customizableui-special-separator"] { -moz-box-align: center !important; box-align: center !important; align-items: center !important; text-align: center !important; } }
Отсутствует
Northtech
У меня так, вроде не сильно отличается.
@-moz-document url("chrome://browser/content/browser.xhtml") { toolbarpaletteitem[place="palette"] > toolbarspring[id^="customizableui-special-spring"] { background: white url("../vertical_top_bottom_bar/svg/spring.svg") center no-repeat !important; border: none !important; outline: 1px solid currentColor !important; outline-offset: -1px !important; min-height: 37px !important; opacity: 0.3 !important; } toolbarpaletteitem[place="toolbar"] > toolbarspring[id^="customizableui-special-spring"] { background: white url("./svg/spring.svg") center no-repeat !important; border: none !important; min-width: 34px !important; min-height: 14px !important; outline: 1px solid currentColor !important; outline-offset: -1px !important; margin-block: 2px !important; margin-inline: 1px !important; opacity: 0.3 !important; } toolbarpaletteitem[place="palette"] > toolbarspacer[id^="customizableui-special-spacer"] { background: white !important; border: none !important; outline: 1px solid currentColor !important; outline-offset: -1px !important; min-height: 37px !important; width: 15px !important; max-width: 15px !important; opacity: 0.3 !important; } toolbarpaletteitem[place="toolbar"] > toolbarspacer[id^="customizableui-special-spacer"] { background: white !important; border: none !important; outline: 1px solid currentColor !important; outline-offset: -1px !important; min-height: 14px !important; width: 15px !important; margin-block: 2px !important; margin-inline: 1px !important; opacity: 0.3 !important; } toolbarseparator[id^="customizableui-special-separator"] { -moz-appearance: none !important; appearance: none !important; padding: 0 !important; margin: 2px !important; margin-inline-start: 4px !important; margin-inline-end: 0 !important; border: none !important; border-inline-start: 1px solid currentColor !important; min-width: 5px !important; width: 5px !important; max-width: 5px !important; opacity: 0.3 !important; } toolbar[orient="vertical"] toolbarseparator[id^="customizableui-special-separator"] { margin-inline-start: 2px !important; margin-inline-end: 2px !important; margin-top: 4px !important; margin-bottom: 0 !important; border-top: 1px solid currentColor !important; border-inline-start: none !important; width: auto !important; max-width: none !important; height: 5px !important; min-height: 5px !important; max-height: 5px !important; } toolbarpaletteitem[place="palette"] > toolbarseparator[id^="customizableui-special-separator"] { margin: 0 !important; min-height: 37px !important; } toolbarpaletteitem[place] > toolbarspring[id^="customizableui-special-spring"], toolbarpaletteitem[place] > toolbarspacer[id^="customizableui-special-spacer"], toolbarpaletteitem[place] > toolbarseparator[id^="customizableui-special-separator"] { -moz-window-dragging: no-drag !important; } toolbar:not(#nav-bar) toolbarpaletteitem[place="toolbar"][id^="wrapper-customizableui-special-spring"], toolbar:not(#nav-bar) toolbarspring { max-width: none !important; } toolbarpaletteitem[place="palette"][id^="wrapper-customizableui-special-spacer"], toolbarpaletteitem[place="palette"][id^="wrapper-customizableui-special-separator"] { align-items: center !important; } }
Отредактировано b0ttle (04-08-2023 02:10:58)
Отсутствует
Набросок кода для добавления в предоставленный, перед последней строкой.
Это всё конечно хорошо, но многовато дублирующего кода - в однократном парсинге и коде просмотра клавиш одинаковая обработка модификаторов и постфиксов на ОС. А если использовать предпросмотр нажатий, то код панельки пригодится вынести отдельно - в ней и нажатия мыши удобно просматривать и вывод отладки или сообщения об ошибках…
Ещё вот вариант простого синтаксиса клавиш, сложнее в восприятии, но проще для кода парсинга:
Dumby — посмотри, как с этим вариантом переделать keydown_win = e => ……
Digit1() { console.log("Digit1 Page+Input Only Apple");}, true, -1, "macosx", (ОС можно пропустить: …, true, -1,,)
var keydown_win = e => { // перехват клавиш, учитывая поля ввода if (e.repeat || !prefs.getBoolPref('javascript.enabled',1)) return; // повтор|скрипты OFF: выход var data = klaBa[e.code]?.[e.metaKey*8 + e.ctrlKey*4 + e.shiftKey*2 + e.altKey]; if (data) for(var [func, p, i] of data) if (i ^ docShell.isCommandEnabled("cmd_insertText")) p && e.preventDefault(), func(e, gBrowser.selectedTab); //запуск по сочетанию if (!Debug()) return; // отладки нет var mod = e.metaKey*8 + e.ctrlKey*4 + e.shiftKey*2 + e.altKey; console.log(`■ key ${mod ? e.code +"_"+ mod : e.code}`); //показ клавиш }
Отсутствует
Поделитесь, пожалуйста, рабочим вариантом
для автоматической очистки поля поиска
после ввода запроса.
Скрипт https://github.com/Aris-t2/CustomJSforFx/blob/master/scripts/alternative_searchbar.uc.js
на 114 не работает... (в строке 40 настройку false на true менял)
Отсутствует
Остался только растягивающийся интервал
У меня всегда было их два, "Растягивающийся пробел" первый и последний в списке. Остальные тоже на месте. https://imgsh.net/a/rqWJYGc.png
special_widget.css этот файл не трогал, как есть. В Вашем на 3 строки снизу больше
box-align: center !important; align-items: center !important; text-align: center !important;
Отсутствует
Viatcheslav
https://forum.mozilla-russia.org/viewto … 60#p795260
xrun1
Замените в файле special_widget.css -> -moz-box-align: center !important; на align-items: center !important;
Win7
Отсутствует
https://forum.mozilla-russia.org/viewtopic.php?pid=795260#p795260
Спасибо, но мне не для панели поиска Findbar (поиск на странице),
а для поисковой строки Searchbar (поиск в сети Интернет)
Отредактировано Viatcheslav (04-08-2023 11:34:10)
Отсутствует