Single Star Button (without Bookmarks Menu Button) (Без перезапуска)

Дополнение заменяет составную кнопку добавления закладки/открытия меню, одной звездатой кнопкой :)

kiss_7kb.1466017907.png

Нормально работает вместе с Add Bookmark Here (показывает путь закладки). Сигнализирует как и дефолтная звезда о существовании закладки.
Экономит место и упрощает работу с закладками, но открывает меню закладок по правому клику, что непривычно и не очевидно.
А драгоценный левый клик использует под ненужное (с Add Bookmark Here) добавление в закладки !

Ребятушки, нужна помощь !

Пожалуйста ! Поменяйте местами действие левой и правой кнопки !

Я пытался, но что-то не получается.. (в файле bookmarks-button-3io.js)

(секретное действие: клик средней кнопкой открывает библиотеку во вкладке)

Выделить код

Код:

((btn, popup) => {
  for (var type of ['mouseup', 'click']) {
    btn.addEventListener(type, e=> {
      if (e.button === 0 && e.target === btn) {
        e.preventDefault(); e.stopPropagation();
        if(e.type == 'click') popup.openPopup(btn, 'after_start');
      }
      if (e.button === 2 && e.target === btn) {
        e.preventDefault(); e.stopPropagation(); e.stopImmediatePropagation();
        if (e.type == 'click') BookmarkingUI.onCommand(event);
      }
    },true)
  }
})(document.getElementById('bookmarks-menu-button'), document.getElementById('BMB_bookmarksPopup'));

В инициализацию новой/существующей Custom Buttons кнопки. Как добавить кнопку(помощь для новичка)

Вот это да ! Класс !
Только по правому клику оба действия выполняются, и добавить в закладки и меню показать..
Нельзя ли что-нибудь одно делать ?
Спасибо !

Поправил.


Спасибо, братуха ! Ты мой герой ! :rock: :rock: :rock:

Хинт: Неподшитые закладки в меню закладок можно скрыть посредством Menu Wizard.
А перемещаемый "ярлык" на неё создаётся в настройках Add Bookmark Here (в самом конце).

Зачем вообще это расширение Single Star Button + СВ, может лучше стилем:
ЛКМ - открыть закладки
СКМ - открыть закладки во вкладке
ПКМ - добавить закладку

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

Выделить код

Код:

@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
/*AGENT_SHEET*/
@-moz-document url("chrome://browser/content/browser.xul") {
#bookmarks-menu-button[cui-areatype="toolbar"] {
    -moz-binding: url("data:text/xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxiaW5kaW5ncwogICAgICAgICAgeG1sbnM9Imh0dHA6Ly93d3cubW96aWxsYS5vcmcveGJsIgogICAgICAgICAgeG1sbnM6eGJsPSJodHRwOi8vd3d3Lm1vemlsbGEub3JnL3hibCIKICAgICAgICAgIHhtbG5zOmh0bWw9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiCiAgICAgICAgICB4bWxuczp4dWw9Imh0dHA6Ly93d3cubW96aWxsYS5vcmcva2V5bWFzdGVyL2dhdGVrZWVwZXIvdGhlcmUuaXMub25seS54dWwiPgogIDxiaW5kaW5nIGlkPSJtZW51LWJ1dHRvbiIgZXh0ZW5kcz0iY2hyb21lOi8vZ2xvYmFsL2NvbnRlbnQvYmluZGluZ3MvdG9vbGJhcmJ1dHRvbi54bWwjbWVudS1idXR0b24iPgogICAgPGhhbmRsZXJzPgogICAgICA8aGFuZGxlciBldmVudD0iY2xpY2siPjwhW0NEQVRBWwogICAgICAgIGlmIChldmVudC50YXJnZXQgPT0gdGhpcykgewoJCSAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwoJCSAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKCQkJaWYgKGV2ZW50LmJ1dHRvbiA9PSAxKSB7CgkJCSAgICB2YXIgYnJvd3NlciA9IHdpbmRvdy5nZXRCcm93c2VyKCk7CgkJCQlicm93c2VyLnNlbGVjdGVkVGFiID0gYnJvd3Nlci5hZGRUYWIoImNocm9tZTovL2Jyb3dzZXIvY29udGVudC9wbGFjZXMvcGxhY2VzLnh1bCIpOwoJCQl9CgkJCWlmIChldmVudC5idXR0b24gPT0gMikgQm9va21hcmtpbmdVSS5vbkNvbW1hbmQoZXZlbnQpOwoJCX0KICAgICAgXV0+PC9oYW5kbGVyPgogICAgICA8aGFuZGxlciBldmVudD0iY29udGV4dG1lbnUiPjwhW0NEQVRBWwogICAgICAgIGlmIChldmVudC50YXJnZXQgPT0gdGhpcykgewoJCSAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwoJCSAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKCQl9CiAgICAgIF1dPjwvaGFuZGxlcj4KICAgICAgPGhhbmRsZXIgZXZlbnQ9Im1vdXNlZG93biI+PCFbQ0RBVEFbCiAgICAgICAgaWYgKGV2ZW50LnRhcmdldCA9PSB0aGlzKSB7CgkJICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CgkJICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwoJCQlpZiAoZXZlbnQuYnV0dG9uID09IDApIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJCTUJfYm9va21hcmtzUG9wdXAiKS5zaG93UG9wdXAoKTsKCQl9CiAgICAgIF1dPjwvaGFuZGxlcj4KICAgIDwvaGFuZGxlcnM+CiAgPC9iaW5kaW5nPgo8L2JpbmRpbmdzPgo=#menu-button") !important;
}

#bookmarks-menu-button[cui-areatype="menu-panel"] {
    -moz-binding: url("data:text/xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxiaW5kaW5ncwogICAgICAgICAgeG1sbnM9Imh0dHA6Ly93d3cubW96aWxsYS5vcmcveGJsIgogICAgICAgICAgeG1sbnM6eGJsPSJodHRwOi8vd3d3Lm1vemlsbGEub3JnL3hibCIKICAgICAgICAgIHhtbG5zOmh0bWw9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiCiAgICAgICAgICB4bWxuczp4dWw9Imh0dHA6Ly93d3cubW96aWxsYS5vcmcva2V5bWFzdGVyL2dhdGVrZWVwZXIvdGhlcmUuaXMub25seS54dWwiPgogIDxiaW5kaW5nIGlkPSJtZW51IiBleHRlbmRzPSJjaHJvbWU6Ly9nbG9iYWwvY29udGVudC9iaW5kaW5ncy90b29sYmFyYnV0dG9uLnhtbCNtZW51LWJ1dHRvbiI+CiAgICA8aGFuZGxlcnM+CiAgICAgIDxoYW5kbGVyIGV2ZW50PSJjbGljayIgYnV0dG9uPSIxIj48IVtDREFUQVsKICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ID09IHRoaXMpIHsKCQkgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKCQkgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CgkJCXZhciBicm93c2VyID0gd2luZG93LmdldEJyb3dzZXIoKTsKCQkJYnJvd3Nlci5zZWxlY3RlZFRhYiA9IGJyb3dzZXIuYWRkVGFiKCJjaHJvbWU6Ly9icm93c2VyL2NvbnRlbnQvcGxhY2VzL3BsYWNlcy54dWwiKTsKCQl9CiAgICAgIF1dPjwvaGFuZGxlcj4KICAgIDwvaGFuZGxlcnM+CiAgPC9iaW5kaW5nPgo8L2JpbmRpbmdzPgo=#menu") !important;
}

#bookmarked-notification-anchor[notification="finish"] > #bookmarked-notification {
    animation: none !important;
    display: none !important;
}

#nav-bar #bookmarks-menu-button.toolbarbutton-1 > .toolbarbutton-menubutton-button > .toolbarbutton-icon {
    border-style: solid !important;
    border-width: 1px !important;
    border-radius: 1px !important;
    max-width: 32px !important; /* horizontal padding + border + actual icon width */
    padding-left: 6px !important;
    padding-right: 6px !important;
}

#nav-bar #bookmarks-menu-button > .toolbarbutton-menubutton-button {
    -moz-padding-end: 2px !important;
}

#bookmarks-menu-button > .toolbarbutton-menubutton-button > .toolbarbutton-icon {
    opacity: 1 !important;
}

#bookmarks-menu-button .toolbarbutton-menubutton-button::after,
#bookmarks-menu-button .toolbarbutton-menubutton-dropmarker {
    display: none !important;
}
}

Vitaliy V. пишет

может лучше стилем:

Абсолютно согласен ! Но turbot всё-таки показал класс !

Зачем вообще это расширение Single Star Button + СВ, может лучше стилем:

Как с помощью стиля при ЛКМ  запретить Add Bookmark Here выводить диалоговое окно с добавлением закладки  одновременно с меню закладок?

Отвечу сам себе: если в Add Bookmark Here в настройках звездочки добавления в закладки выставить дефолтное поведение кнопок.

для Vitaliy V.
Еще вопрос по стилю: что прописать, чтобы по клику средней кнопки управление закладками открывалось в окне, а не во вкладке?

для turbot

Поправил.

После создания кнопки в CB и добавления расширения Single Star Button для объединения составной кнопки в одну звездочку, новая звездочка работает как надо. Но при условии, что кнопка, созданная в CB, будет присутствовать на панели, причем она всегда остается не активной.  Можно сделать эту кнопку активной, чтобы она полностью заменила звездочку?

Letterman пишет

что прописать, чтобы по клику средней кнопки управление закладками открывалось в окне, а не во вкладке?

Это PlacesCommandHook.showPlacesOrganizer('BookmarksMenu');

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

Выделить код

Код:

@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
/*AGENT_SHEET*/
@-moz-document url("chrome://browser/content/browser.xul") {
#bookmarks-menu-button[cui-areatype="toolbar"] {
    -moz-binding: url("data:text/xml;utf8,<bindings xmlns='http://www.mozilla.org/xbl' xmlns:xbl='http://www.mozilla.org/xbl' xmlns:html='http://www.w3.org/1999/xhtml' xmlns:xul='http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul'><binding id='menu-button' extends='chrome://global/content/bindings/toolbarbutton.xml%23menu-button'><handlers><handler event='click'><![CDATA[ if (event.target == this) { event.preventDefault(); event.stopPropagation(); if (event.button == 1) PlacesCommandHook.showPlacesOrganizer('BookmarksMenu'); else if (event.button == 2) BookmarkingUI.onCommand(event); } ]]></handler><handler event='contextmenu'><![CDATA[ if (event.target == this) { event.preventDefault(); event.stopPropagation(); } ]]></handler><handler event='mousedown' button='0'><![CDATA[ if (event.target == this) { event.preventDefault(); event.stopPropagation(); document.getElementById('BMB_bookmarksPopup').showPopup(); } ]]></handler></handlers></binding></bindings>#menu-button") !important;
}

#bookmarks-menu-button[cui-areatype="menu-panel"] {
    -moz-binding: url("data:text/xml;utf8,<bindings xmlns='http://www.mozilla.org/xbl' xmlns:xbl='http://www.mozilla.org/xbl' xmlns:html='http://www.w3.org/1999/xhtml' xmlns:xul='http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul'><binding id='menu' extends='chrome://global/content/bindings/toolbarbutton.xml%23menu-button'><handlers><handler event='click' button='1'><![CDATA[ if (event.target == this) { event.preventDefault(); event.stopPropagation(); PlacesCommandHook.showPlacesOrganizer('BookmarksMenu'); } ]]></handler></handlers></binding></bindings>#menu") !important;
}

#bookmarked-notification-anchor[notification="finish"] > #bookmarked-notification {
    animation: none !important;
    display: none !important;
}

#nav-bar #bookmarks-menu-button.toolbarbutton-1 > .toolbarbutton-menubutton-button > .toolbarbutton-icon {
    border-style: solid !important;
    border-width: 1px !important;
    border-radius: 1px !important;
    max-width: 32px !important; /* horizontal padding + border + actual icon width */
    padding-left: 6px !important;
    padding-right: 6px !important;
}

#nav-bar #bookmarks-menu-button > .toolbarbutton-menubutton-button {
    -moz-padding-end: 2px !important;
}

#bookmarks-menu-button > .toolbarbutton-menubutton-button > .toolbarbutton-icon {
    opacity: 1 !important;
}

#bookmarks-menu-button .toolbarbutton-menubutton-button::after,
#bookmarks-menu-button .toolbarbutton-menubutton-dropmarker {
    display: none !important;
}
}


Или замените на
PlacesCommandHook.showPlacesOrganizer('UnfiledBookmarks');
PlacesCommandHook.showPlacesOrganizer('BookmarksToolbar');

Загрузки PlacesCommandHook.showPlacesOrganizer("Downloads");
История PlacesCommandHook.showPlacesOrganizer('History');
и т. д.

Это PlacesCommandHook.showPlacesOrganizer('BookmarksMenu');

Великолепно, как раз то что нужно! Спасибо за код.:)

Последняя версия кода для сдвоенной кнопки, не требуется установка дополнения Single Star Button, может использоваться с дополнением Add Bookmark Here и без него.

Функционал:

ЛКМ - показать ваши закладки, при активации пункта "Показать все закладки" открывается  менеджер закладок (меню закладок) во вкладке
СКМ - открыть менеджер закладок (меню закладок) во вкладке
Комбинация Shift + СКМ - открыть менеджер закладок (меню закладок) в окне
ПКМ - добавить/редактировать закладку

Настройки в дополнении Add Bookmark Here: Звездочка добавления в закладки - для всех клавиш поведение по умолчанию. При ПКМ - добавить закладку - диалога не будет, только при удалении закладки.

Спасибо Vitaliy V. за разработку данного кода.

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

Выделить код

Код:

@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
/*AGENT_SHEET*/
@-moz-document url("chrome://browser/content/browser.xul") {
#bookmarks-menu-button[cui-areatype="toolbar"] {
    -moz-binding: url("data:text/xml;utf8,<bindings xmlns='http://www.mozilla.org/xbl' xmlns:xbl='http://www.mozilla.org/xbl' xmlns:html='http://www.w3.org/1999/xhtml' xmlns:xul='http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul'><binding id='menu-button' extends='chrome://global/content/bindings/toolbarbutton.xml%23menu-button'><handlers><handler event='click'><![CDATA[ if (event.target == this) { event.preventDefault(); event.stopPropagation(); if (event.button == 1) { if (event.shiftKey) { PlacesCommandHook.showPlacesOrganizer('BookmarksMenu'); } else { var pages = window.gBrowser.getBrowserForTab(window.gBrowser.selectedTab = window.gBrowser.addTab('chrome://browser/content/places/places.xul')); pages.addEventListener('pageshow', function show(event) { pages.removeEventListener('pageshow', show, false); event.target.defaultView.PlacesOrganizer.location = 'place:folder=BOOKMARKS_MENU&excludeItems=1&expandQueries=0'; }, false); }} else if (event.button == 2) BookmarkingUI.onCommand(event); } ]]></handler><handler event='contextmenu'><![CDATA[ if (event.target == this) { event.preventDefault(); event.stopPropagation(); } ]]></handler><handler event='mousedown' button='0'><![CDATA[ if (event.target == this) { event.preventDefault(); event.stopPropagation(); document.getElementById('BMB_bookmarksPopup').showPopup(); } ]]></handler></handlers></binding></bindings>#menu-button") !important;
}

#bookmarks-menu-button[cui-areatype="menu-panel"] {
    -moz-binding: url("data:text/xml;utf8,<bindings xmlns='http://www.mozilla.org/xbl' xmlns:xbl='http://www.mozilla.org/xbl' xmlns:html='http://www.w3.org/1999/xhtml' xmlns:xul='http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul'><binding id='menu' extends='chrome://global/content/bindings/toolbarbutton.xml%23menu-button'><handlers><handler event='click' button='1'><![CDATA[ if (event.target == this) { event.preventDefault(); event.stopPropagation(); if (event.shiftKey) { PlacesCommandHook.showPlacesOrganizer('BookmarksMenu'); } else { var pages = window.gBrowser.getBrowserForTab(window.gBrowser.selectedTab = window.gBrowser.addTab('chrome://browser/content/places/places.xul')); pages.addEventListener('pageshow', function show(event) { pages.removeEventListener('pageshow', show, false); event.target.defaultView.PlacesOrganizer.location = 'place:folder=BOOKMARKS_MENU&excludeItems=1&expandQueries=0'; }, false); }} ]]></handler></handlers></binding></bindings>#menu") !important;
}

#bookmarked-notification-anchor[notification="finish"] > #bookmarked-notification {
    animation: none !important;
    display: none !important;
}

#nav-bar #bookmarks-menu-button.toolbarbutton-1 > .toolbarbutton-menubutton-button > .toolbarbutton-icon {
    border-style: solid !important;
    border-width: 1px !important;
    border-radius: 1px !important;
    max-width: 32px !important; /* horizontal padding + border + actual icon width */
    padding-left: 6px !important;
    padding-right: 6px !important;
}

#nav-bar #bookmarks-menu-button > .toolbarbutton-menubutton-button {
    -moz-padding-end: 2px !important;
}

#bookmarks-menu-button > .toolbarbutton-menubutton-button > .toolbarbutton-icon {
    opacity: 1 !important;
}

#bookmarks-menu-button .toolbarbutton-menubutton-button::after,
#bookmarks-menu-button .toolbarbutton-menubutton-dropmarker {
    display: none !important;
}
#BMB_bookmarksShowAll {
    -moz-binding: url("data:text/xml;utf8,<bindings xmlns='http://www.mozilla.org/xbl' xmlns:xul='http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul' xmlns:xbl='http://www.mozilla.org/xbl'><binding id='menu' extends='chrome://global/content/bindings/menu.xml%23menuitem'><implementation><constructor><![CDATA[ this.removeAttribute(%22command%22); this.setAttribute(%22oncommand%22, %22var pages = window.gBrowser.getBrowserForTab(window.gBrowser.selectedTab = window.gBrowser.addTab('chrome://browser/content/places/places.xul')); pages.addEventListener('pageshow', function show(event) { pages.removeEventListener('pageshow', show, false); event.target.defaultView.PlacesOrganizer.location = 'place:folder=BOOKMARKS_MENU&excludeItems=1&expandQueries=0'; }, false);%22); ]]></constructor></implementation></binding></bindings>#menu") !important;
}
}