context menu fixes

This commit is contained in:
Kyle Spearrin 2017-01-20 22:32:21 -05:00
parent 0d74e145e2
commit 94bc17bd54
1 changed files with 24 additions and 1 deletions

View File

@ -135,7 +135,13 @@ if (chrome.runtime.onInstalled) {
}); });
} }
var buildingContextMenu = false;
function buildContextMenu(callback) { function buildContextMenu(callback) {
if (buildingContextMenu) {
return;
}
buildingContextMenu = true;
chrome.contextMenus.removeAll(function () { chrome.contextMenus.removeAll(function () {
chrome.contextMenus.create({ chrome.contextMenus.create({
type: 'normal', type: 'normal',
@ -176,6 +182,7 @@ function buildContextMenu(callback) {
contexts: ['all'], contexts: ['all'],
title: i18nService.generatePasswordCopied title: i18nService.generatePasswordCopied
}, function () { }, function () {
buildingContextMenu = false;
if (callback) { if (callback) {
callback(); callback();
} }
@ -212,8 +219,16 @@ chrome.tabs.onUpdated.addListener(function (tabId, changeInfo, tab) {
refreshBadgeAndMenu(); refreshBadgeAndMenu();
}); });
chrome.windows.onFocusChanged.addListener(function (windowId) {
if (!windowId || windowId < 0) {
return;
}
refreshBadgeAndMenu();
});
function refreshBadgeAndMenu() { function refreshBadgeAndMenu() {
chrome.tabs.query({ active: true }, function (tabs) { chrome.tabs.query({ active: true, windowId: chrome.windows.WINDOW_ID_CURRENT }, function (tabs) {
var tab = null; var tab = null;
if (tabs.length > 0) { if (tabs.length > 0) {
tab = tabs[0]; tab = tabs[0];
@ -563,7 +578,13 @@ function loadNoLoginsContextMenuOptions(noLoginsMessage) {
loadContextMenuOptions(noLoginsMessage, 'noop', null); loadContextMenuOptions(noLoginsMessage, 'noop', null);
} }
var loadingContextMenuOptions = false;
function loadContextMenuOptions(title, idSuffix, login) { function loadContextMenuOptions(title, idSuffix, login) {
if (loadingContextMenuOptions) {
return;
}
loadingContextMenuOptions = true;
if (!login || (login.password && login.password !== '')) { if (!login || (login.password && login.password !== '')) {
chrome.contextMenus.create({ chrome.contextMenus.create({
type: 'normal', type: 'normal',
@ -593,6 +614,8 @@ function loadContextMenuOptions(title, idSuffix, login) {
title: title title: title
}); });
} }
loadingContextMenuOptions = false;
} }
// TODO: Fix callback hell by moving to promises // TODO: Fix callback hell by moving to promises