|
|
@ -1268,6 +1268,61 @@ vAPI.toolbarButton.init = function() { |
|
|
|
'content: attr(badge);', |
|
|
|
'}' |
|
|
|
); |
|
|
|
} else { |
|
|
|
this.CUIEvents = {}; |
|
|
|
this.CUIEvents.onCustomizeEnd = function() { |
|
|
|
var wId = vAPI.toolbarButton.id; |
|
|
|
var buttonInPanel = CustomizableUI.getWidget(wId).areaType === CustomizableUI.TYPE_MENU_PANEL; |
|
|
|
|
|
|
|
for ( var win of vAPI.tabs.getWindows() ) { |
|
|
|
var button = win.document.getElementById(wId); |
|
|
|
if ( buttonInPanel ) { |
|
|
|
button.classList.remove('badged-button'); |
|
|
|
continue; |
|
|
|
} |
|
|
|
if ( button === null ) { |
|
|
|
continue; |
|
|
|
} |
|
|
|
button.classList.add('badged-button'); |
|
|
|
} |
|
|
|
|
|
|
|
if ( buttonInPanel ) { |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
// Anonymous elements need some time to be reachable
|
|
|
|
setTimeout(this.updateBadgeStyle, 0); |
|
|
|
}.bind(this.CUIEvents); |
|
|
|
this.CUIEvents.updateBadgeStyle = function() { |
|
|
|
var css = [ |
|
|
|
'background: #666', |
|
|
|
'color: #fff' |
|
|
|
].join(';'); |
|
|
|
|
|
|
|
for ( var win of vAPI.tabs.getWindows() ) { |
|
|
|
var button = win.document.getElementById(vAPI.toolbarButton.id); |
|
|
|
if ( button === null ) { |
|
|
|
continue; |
|
|
|
} |
|
|
|
var badge = button.ownerDocument.getAnonymousElementByAttribute( |
|
|
|
button, |
|
|
|
'class', |
|
|
|
'toolbarbutton-badge' |
|
|
|
); |
|
|
|
if ( !badge ) { |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
badge.style.cssText = css; |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
this.onCreated = function(button) { |
|
|
|
button.setAttribute('badge', ''); |
|
|
|
setTimeout(this.CUIEvents.onCustomizeEnd, 0); |
|
|
|
}; |
|
|
|
|
|
|
|
CustomizableUI.addListener(this.CUIEvents); |
|
|
|
} |
|
|
|
|
|
|
|
this.styleURI = Services.io.newURI( |
|
|
@ -1289,6 +1344,10 @@ vAPI.toolbarButton.init = function() { |
|
|
|
); |
|
|
|
|
|
|
|
cleanupTasks.push(function() { |
|
|
|
if ( this.CUIEvents ) { |
|
|
|
CustomizableUI.removeListener(this.CUIEvents); |
|
|
|
} |
|
|
|
|
|
|
|
CustomizableUI.destroyWidget(this.id); |
|
|
|
vAPI.messaging.globalMessageManager.removeMessageListener( |
|
|
|
location.host + ':closePopup', |
|
|
@ -1363,42 +1422,6 @@ vAPI.toolbarButton.onBeforeCreated = function(doc) { |
|
|
|
|
|
|
|
/******************************************************************************/ |
|
|
|
|
|
|
|
vAPI.toolbarButton.onCreated = function(button) { |
|
|
|
var platformVersion = Services.appinfo.platformVersion; |
|
|
|
|
|
|
|
if ( Services.vc.compare(platformVersion, '36.0') < 0 ) { |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
button.setAttribute('badge', ''); |
|
|
|
button.classList.add('badged-button'); |
|
|
|
|
|
|
|
setTimeout(function() { |
|
|
|
var badge = button.ownerDocument.getAnonymousElementByAttribute( |
|
|
|
button, |
|
|
|
'class', |
|
|
|
'toolbarbutton-badge' |
|
|
|
); |
|
|
|
|
|
|
|
if ( !badge ) { |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
badge.style.cssText = [ |
|
|
|
'position: absolute;', |
|
|
|
'bottom: 0;', |
|
|
|
'right: 0;', |
|
|
|
'padding: 1px;', |
|
|
|
'background: #666;', |
|
|
|
'color: #fff;', |
|
|
|
'font-size: 9px;', |
|
|
|
'font-weight: bold;' |
|
|
|
].join(''); |
|
|
|
}, 1000); |
|
|
|
}; |
|
|
|
|
|
|
|
/******************************************************************************/ |
|
|
|
|
|
|
|
vAPI.toolbarButton.onViewShowing = function({target}) { |
|
|
|
target.firstChild.setAttribute('src', vAPI.getURL('popup.html')); |
|
|
|
}; |
|
|
@ -1482,15 +1505,12 @@ vAPI.contextMenu.register = function(doc) { |
|
|
|
|
|
|
|
var contextMenu = doc.getElementById('contentAreaContextMenu'); |
|
|
|
var menuitem = doc.createElement('menuitem'); |
|
|
|
|
|
|
|
menuitem.setAttribute('id', this.menuItemId); |
|
|
|
menuitem.setAttribute('label', this.menuLabel); |
|
|
|
menuitem.setAttribute('image', vAPI.getURL('img/browsericons/icon16.svg')); |
|
|
|
menuitem.setAttribute('class', 'menuitem-iconic'); |
|
|
|
|
|
|
|
menuitem.addEventListener('command', this.onCommand); |
|
|
|
contextMenu.addEventListener('popupshowing', this.displayMenuItem); |
|
|
|
|
|
|
|
contextMenu.insertBefore(menuitem, doc.getElementById('inspect-separator')); |
|
|
|
}; |
|
|
|
|
|
|
@ -1503,7 +1523,6 @@ vAPI.contextMenu.unregister = function(doc) { |
|
|
|
|
|
|
|
var menuitem = doc.getElementById(this.menuItemId); |
|
|
|
var contextMenu = menuitem.parentNode; |
|
|
|
|
|
|
|
menuitem.removeEventListener('command', this.onCommand); |
|
|
|
contextMenu.removeEventListener('popupshowing', this.displayMenuItem); |
|
|
|
contextMenu.removeChild(menuitem); |
|
|
|