Полезная информация

Юристы зарабатывают огромные деньги и славу, оперируя хорошим знанием законов. Правила форума — простой путь к успешному общению.

№2631-07-2015 10:58:34

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2249
UA: Firefox 31.0

Re: Панель закладок в контекстном меню

turbot пишет

У меня, кстати, не работает ваш код после запуска. Только после реинициализации.

Ну, это не наш код (мы бы до такого не додумались),
а модификация твоего кода, в попытке не засорять #mainPopupSet.

Сейчас поставил  FF 42.0a1 (2015-07-30), запилил новый чистый профиль,
установил Custom Buttons 0.0.5.9pre1 и создал кнопку с нашим кодом.
Включил на компе звук, открыл в FF mp3-файл, чтобы убедиться, что звук OK.

Закрыл FF, открыл FF. Нажимаю Alt+Shift+B, и ...
popup появился, звуковой алерт не услышал. :(

Но оказалось, что MousePosTracker пасёт не те координаты, которые я ожидал.
Поскольку я тоже не знаю, что нужно вызвать, чтобы обрести позицию мыши,
то ничего лучше не придумал, как добавить лишний листенер.

скрытый текст

Выделить код

Код:

(box => {
    var popup = box.appendChild(document.createElement("menupopup"));
    for(var [attributeName, attributeValue] in Iterator({

        placespopup:          "true",
        context:              "placesContext",
        openInTabs:           "children",
        tooltip:              "bhTooltip",
        popupsinherittooltip: "true",
        onpopupshowing:       "if (!this.parentNode._placesView) new PlacesMenu(event, 'place:folder=TOOLBAR')",
        oncommand:            "BookmarksEventHandler.onCommand(event, this.parentNode._placesView);",
        onclick:              "BookmarksEventHandler.onClick(event, this.parentNode._placesView);"

    })) popup.setAttribute(attributeName, attributeValue);

    var x, y; addEventListener("mousemove", e => {x = e.screenX, y = e.screenY});

    addEventListener("keydown", e => {
        if (!e.repeat && !e.ctrlKey && e.shiftKey && e.altKey && !e.metaKey && e.code == "KeyB") {
            e.preventDefault(); e.stopPropagation(); e.stopImmediatePropagation();
            popup.openPopupAtScreen(x, y);
        }
    }, true);
    
})(this.appendChild(document.createElement("box")));

Отредактировано Dumby (31-07-2015 11:00:39)

Отсутствует

 

№2731-07-2015 18:13:56

turbot
Участник
 
Группа: Members
Зарегистрирован: 09-10-2011
Сообщений: 2529
UA: Firefox 42.0

Re: Панель закладок в контекстном меню

Dumby пишет

Ну, это не наш код (мы бы до такого не додумались),

Это тонкий намек, что надо на"ты" перейти, или отказ от претензий? :rolleyes: (буду, до прояснения, считать что первое :D)

Dumby пишет

popup появился, звуковой алерт не услышал. :(

Ага, виноват, поленился на чистом проверить. Нашел виновника непоявления. Проблема возникает (проверял на чистом профиле) если кнопка расположена на аддон-баре от Classic Theme Restorer скрытом кнопкой [CB]Спрятать панель дополнений, поправленой (испорченой?) под него

скрытый текст

Выделить код

Код:

// Спрятать панель дополнений от 11.02.2014.


this.onclick = function(e) {
     if ( e.button == 0 ) pref.value = pref.value ? false : true;
};

var right = 4; // отступ справа в px  

var s = 'CB.hideAddonBar2'
cbu.isPref(s, false );
var pref = Application.prefs.get(s);


function toggleButton() {   
   document.getElementById("ctraddon_extra-bar2").setAttribute('hideElements', pref.value );     
    
   var icon = self.ownerDocument.getAnonymousElementByAttribute( self, "class", "toolbarbutton-icon");
   icon.style.transform = pref.value ? "rotate(180deg)" : "";   // перевернуть иконку
   
   self.tooltipText = pref.value ? 'Показать панель дополнений' : 'Спрятать панель дополнений';     
};
toggleButton();
gPrefService.addObserver( s, toggleButton, false );
addDestructor(function() { gPrefService.removeObserver( s, toggleButton, false ) });


// Стиль для панели дополнений  ................................
var uri = makeURI('data:text/css,'+ encodeURIComponent('\
/* минимальный и прозрачный */\
#ctraddon_extra-bar2 {\
margin: 0!important;\
border-color: transparent!important;\
width: auto;\
height: 24px!important;\
max-height: 24px!important;\
min-height: 24px!important;\
position: fixed;\
padding-right: 2px!important;\
right: ' + right + 'px;\
background: transparent !important;\
z-index: 999 !important;\
}\
#ctraddon_extra-bar2 .toolbarbutton-menubutton-dropmarker {\
width: 15px!important;\
max-width: 15px!important;\
min-width: 15px!important;\
}\
#ctraddon_extra-bar2 toolbarbutton {\
vertical-align: middle !important;\
height: 24px!important;\
max-height: 24px!important;\
min-height: 24px!important;\
}\
/* если открыть настройку инструментов */\
#ctraddon_extra-bar2[customizing] {\
background: -moz-Dialog;\
border-radius: 7px 0 0 0;\
visibility: visible !important;\
}\
/* убираем лишние элементы, убираем кнопки при добавлении атрибута hideElements */\
#ctraddon_extra-bar2-closebutton,\
#ctraddon_extra-bar2:not([customizing])[hideElements="true"] label,\
#ctraddon_extra-bar2:not([customizing])[hideElements="true"] hbox,\
#ctraddon_extra-bar2:not([customizing])[hideElements="true"] .statusbarpanel-iconic,\
#ctraddon_extra-bar2:not([customizing])[hideElements="true"] toolbarbutton-icon,\
#ctraddon_extra-bar2:not([customizing])[hideElements="true"] statusbarpanel,\
#ctraddon_extra-bar2:not([customizing])[hideElements="true"] toolbaritem,\
#ctraddon_extra-bar2:not([customizing])[hideElements="true"] toolbarbutton:not([id="' + _id + '"]):not([id="custombuttons-button29"]),\
#ctraddon_extra-bar2:not([customizing])[hideElements="true"] #UserScriptLoader-icon {\
display: none !important;\
}\
\
#ctraddon_extra-bar2 > statusbar > .statusbar-resizerpanel {\
position: relative;\
margin-right:-4px;\
}\
'));
const sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);
sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
addDestructor(function() { sss.unregisterSheet(uri, sss.AGENT_SHEET) });


Кто виноват, что делать?.. Кнопка, CTR? ВыТы не мог бы посмотреть? (Хотя, в случае "Автовыделение++", проблема не в ctr'овской панели - там на чистом профиле проверял.)

А вот звуковой алерт (с предыдущим вариантом кнопки) возникает и на новом профиле. :P
И еще: в новом варианте, после перетаскивания кнопки в режиме кастомизации, у нее иконка пропадает, до тех пор, пока не отредактируешь.

Отредактировано turbot (31-07-2015 18:24:45)

Отсутствует

 

№2801-08-2015 03:15:50

lakostis
Administrator
 
Группа: Administrators
Откуда: /dev/urandom
Зарегистрирован: 07-10-2004
Сообщений: 1302
Веб-сайт

Re: Панель закладок в контекстном меню

Тема перенесена из форума «Firefox» в форум «Сustom Buttons».


Все микробы умрут

Отсутствует

 

№2901-08-2015 09:21:49

OmTatSat
Участник
 
Группа: Members
Зарегистрирован: 25-06-2015
Сообщений: 82
UA: Firefox 39.0

Re: Панель закладок в контекстном меню

turbot пишет

OmTatSat пишет:

    и чтобы на весь экран

Вот это не понял.

на весь экран

скрытый текст
mvn4zuba9bxg.png

не на весь
скрытый текст
2sdwkcovz4xa.png

Отсутствует

 

№3001-08-2015 16:43:02

turbot
Участник
 
Группа: Members
Зарегистрирован: 09-10-2011
Сообщений: 2529
UA: Firefox 42.0

Re: Панель закладок в контекстном меню

OmTatSat
Попробуйте по оси y задать положение 0 в:

Выделить код

Код:

var x, y; addEventListener("mousemove", e => {x = e.screenX, y = 0});

(это для последнего варианта Dumby)

Отсутствует

 

№3101-08-2015 22:03:48

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2249
UA: Firefox 31.0

Re: Панель закладок в контекстном меню

turbot пишет

"Автовыделение++", проблема

Проблема ещё и в том, что она в выключенном состоянии, при перемещении по вкладкам
сбрасывает подсвеченное через кнопку «Подсветить все» на панели поиска.

после перетаскивания кнопки в режиме кастомизации, у нее иконка пропадает, до тех пор, пока не отредактируешь

Да, ты прав. Действительно, лучше добавлять не к кнопке. Спасибо.
Решил вот попробовать для нескольких. Вроде работает
на #ctraddon_extra-bar2, скрытом поправленой кнопкой [CB]Спрятать панель дополнений.

скрытый текст

Выделить код

Код:

gBrowser.currentURI.spec == "about:customizing" || (popupset => {
    var data = {
          "folder=TOOLBAR":           {code: "KeyB", ctrlKey: false, shiftKey: true, altKey: true, metaKey: false}
        , "folder=BOOKMARKS_MENU":    {code: "KeyM", ctrlKey: false, shiftKey: true, altKey: true, metaKey: false}
        , "folder=UNFILED_BOOKMARKS": {code: "KeyU", ctrlKey: false, shiftKey: true, altKey: true, metaKey: false}
        , "sort=8&maxResults=16":     {code: "KeyN", ctrlKey: false, shiftKey: true, altKey: true, metaKey: false}
    };
    popupset.id = "CB" + _id.slice(20) + "-popupset";
    addDestructor(() => popupset.remove());

    var popups = [];
    for(var [place, shortcut] in Iterator(data)) {
        var box = popupset.appendChild(document.createElement("box"));
        var popup = box.appendChild(document.createElement("menupopup"));
        for(var [attributeName, attributeValue] in Iterator({

            placespopup:          "true",
            context:              "placesContext",
            openInTabs:           "children",
            tooltip:              "bhTooltip",
            popupsinherittooltip: "true",
            onpopupshowing:       "if (!this.parentNode._placesView) new PlacesMenu(event, 'place:" + place + "');",
            oncommand:            "BookmarksEventHandler.onCommand(event, this.parentNode._placesView);",
            onclick:              "BookmarksEventHandler.onClick(event, this.parentNode._placesView);"

        })) popup.setAttribute(attributeName, attributeValue);
        popups.push(popup); popup.shortcut = shortcut;
    }
    var x, y; addEventListener("mousemove", e => {x = e.screenX; y = e.screenY});
    addEventListener("keydown", e => {
        popups.some(popup => {
            for(var property in popup.shortcut) {
                if (popup.shortcut[property] != e[property]) return false;
            }
            e.preventDefault(); e.stopPropagation(); e.stopImmediatePropagation();
            popup.openPopupAtScreen(x, y + 1); return true;
        });
    }, true);
})(document.documentElement.appendChild(document.createElement("popupset")));

Отредактировано Dumby (01-08-2015 22:04:31)

Отсутствует

 

№3201-08-2015 22:27:37

turbot
Участник
 
Группа: Members
Зарегистрирован: 09-10-2011
Сообщений: 2529
UA: Firefox 42.0

Re: Панель закладок в контекстном меню

Dumby пишет

#ctraddon_extra-bar2

Упс, это я не для того тулбара кнопку дал. Впрочем, что с ним, что с #ctraddon_addon-bar - одна проблема.

Dumby пишет

Вроде работает

Да, спасибо. А саму "Спрятать панель" нельзя как-то поправить, чтобы таких проблем не было? Или в каких случаях, у каких кнопок, такая проблема будет?
А то я так и не понял, понял, что в новом варианте такого, что позволяет обойти это. :rolleyes:

Добавлено 01-08-2015 22:56:22
Dumby
Эээ, и может подскажете, как в последний вариант еще и открытие по ctrl+ПКМ на странице добавить?

Отредактировано turbot (01-08-2015 22:56:22)

Отсутствует

 

№3302-08-2015 13:12:00

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2249
UA: Firefox 31.0

Re: Панель закладок в контекстном меню

turbot пишет

А саму "Спрятать панель" нельзя как-то поправить, чтобы таких проблем не было? Или в каких случаях, у каких кнопок, такая проблема будет?

Что там поправлять, она же ничего не делает, только
регистрирует стиль для тулбара и переключает атрибут.
А какие проблемы могут быть у кнопок, расположенных на
таким образом стилизированном тулбаре, я не знаю.

как в последний вариант еще и открытие по ctrl+ПКМ на странице добавить?

Может так

скрытый текст

Выделить код

Код:

addEventListener("contextmenu", e => {
        if (
            e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey && e instanceof Event
            && (e.target.ownerGlobal.top == content || e.target == gBrowser)
        ) {
            e.preventDefault();
            popups[0].openPopupAtScreen(x, y + 1);
        }
    }, true, gBrowser);

Отсутствует

 

№3402-08-2015 15:13:00

OmTatSat
Участник
 
Группа: Members
Зарегистрирован: 25-06-2015
Сообщений: 82
UA: Firefox 39.0

Re: Панель закладок в контекстном меню

turbot Dumby Спасибо Вам

Отсутствует

 

№3502-08-2015 15:27:33

turbot
Участник
 
Группа: Members
Зарегистрирован: 09-10-2011
Сообщений: 2529
UA: Firefox 42.0

Re: Панель закладок в контекстном меню

Dumby пишет

Что там поправлять, она же ничего не делает, только
регистрирует стиль для тулбара и переключает атрибут.

Вот и мне непонятно. Но факт. Без этой кнопки на этом тулбаре - проблемы нет. Пробовал задержку выставлять, перед регистрацией стиля, - не помогает...

Dumby пишет

Может так

Ага, спасибо, идеально. :)

Отсутствует

 

№3627-01-2016 22:35:03

xseed
Участник
 
Группа: Members
Зарегистрирован: 24-03-2009
Сообщений: 58
UA: Firefox 44.0

Re: Панель закладок в контекстном меню

turbot, здравствуйте!
После обновления на Firefox 44 этот код и этот перестали работать, т.е. меню с закладками не появляется, а открывается обычное контестное меню. Пробовал удалять кнопку и создавать заново, отключать и включать дополнение Custom Buttons, но не помогает. Может быть в новой версии выпилили какую-то функцию и она перестала работать?
При нажатии на созданную кнопку на Панели инструментов или нажатии CTRL-RMB в окне браузера в Консоли браузера ничего не происходит.

PS: Еще хотел спросить. А возможно ли повесить на отдельное контекстное меню текущие открытые вкладки, и вызывать его например, при помощи сочетания ALT-RMB? Было бы очень удобно. Во первых, при открытии большого количества вкладок их поместится больше на экране, т.к. их расположение в виде контекстного меню будет более плотным, друг под другом, и в результате на экране будет видно больше текста в названии для каждой вкладки. Во-вторых, в полноэкранном режиме можно будет полностью Скрыть панели инструментов, в результате на экране освободится больше места.

Отредактировано xseed (09-02-2016 09:57:10)


Три студента и лопата заменяют экскаватор

Отсутствует

 

№3731-01-2016 00:05:55

OmTatSat
Участник
 
Группа: Members
Зарегистрирован: 25-06-2015
Сообщений: 82
UA: Firefox 39.0

Re: Панель закладок в контекстном меню

xseed пишет

на отдельное контекстное меню текущие открытые вкладки

реализовал подобное с помощью  https://addons.mozilla.org/ru/firefox/addon/enhanced-middle-click/?src=api
и ahk скрипта, его описание  https://addons.mozilla.org/ru/firefox/addon/enhanced-middle-click/reviews/user:4913006

Отредактировано OmTatSat (31-01-2016 00:06:38)

Отсутствует

 

№3813-02-2016 03:02:35

xseed
Участник
 
Группа: Members
Зарегистрирован: 24-03-2009
Сообщений: 58
UA: Firefox 44.0

Re: Панель закладок в контекстном меню

xseed пишет

turbot, здравствуйте!
После обновления на Firefox 44 этот код и этот перестали работать, т.е. меню с закладками не появляется, а открывается обычное контестное меню. Пробовал удалять кнопку и создавать заново, отключать и включать дополнение Custom Buttons, но не помогает. Может быть в новой версии выпилили какую-то функцию и она перестала работать?
При нажатии на созданную кнопку на Панели инструментов или нажатии CTRL-RMB в окне браузера в Консоли браузера ничего не происходит.

Глюк в CB, надо было обновить его.


Три студента и лопата заменяют экскаватор

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]