refactor menuWillShow

This commit is contained in:
Shelley Vohr 2017-10-23 22:22:39 -04:00
parent 9038987e1d
commit 9b364d5be3
No known key found for this signature in database
GPG key ID: F13993A75599653C

View file

@ -7,7 +7,7 @@ const bindings = process.atomBinding('menu')
const {Menu} = bindings
let applicationMenu = null
let nextGroupId = 0
let groupIdIndex = 0
Object.setPrototypeOf(Menu.prototype, EventEmitter.prototype)
@ -44,23 +44,10 @@ Menu.prototype._init = function () {
command.click(event, BrowserWindow.getFocusedWindow(), webContents.getFocusedWebContents())
},
menuWillShow: () => {
// Make sure radio groups have at least one menu item seleted.
var checked, group, id, j, len, radioItem, ref1
ref1 = this.groupsMap
for (id in ref1) {
group = ref1[id]
checked = false
for (j = 0, len = group.length; j < len; j++) {
radioItem = group[j]
if (!radioItem.checked) {
continue
}
checked = true
break
}
if (!checked) {
v8Util.setHiddenValue(group[0], 'checked', true)
}
// Ensure radio groups have at least one menu item seleted
for (let id in this.groupsMap) {
let found = this.groupsMap[id].find(item => item.checked) || null
if (!found) v8Util.setHiddenValue(this.groupsMap[id][0], 'checked', true)
}
}
}
@ -251,29 +238,23 @@ Menu.buildFromTemplate = function (template) {
// Search between separators to find a radio menu item and return its group id,
function generateGroupId (items, pos) {
var i, item, j, k, ref1, ref2, ref3
let i, item
if (pos > 0) {
for (i = j = ref1 = pos - 1; ref1 <= 0 ? j <= 0 : j >= 0; i = ref1 <= 0 ? ++j : --j) {
let asc, start
for (start = pos - 1, i = start, asc = start <= 0; asc ? i <= 0 : i >= 0; asc ? i++ : i--) {
item = items[i]
if (item.type === 'radio') {
return item.groupId
}
if (item.type === 'separator') {
break
}
if (item.type === 'radio') { return item.groupId }
if (item.type === 'separator') { break }
}
} else if (pos < items.length) {
for (i = k = ref2 = pos, ref3 = items.length - 1; ref2 <= ref3 ? k <= ref3 : k >= ref3; i = ref2 <= ref3 ? ++k : --k) {
let asc1, end
for (i = pos, end = items.length - 1, asc1 = pos <= end; asc1 ? i <= end : i >= end; asc1 ? i++ : i--) {
item = items[i]
if (item.type === 'radio') {
return item.groupId
}
if (item.type === 'separator') {
break
if (item.type === 'radio') { return item.groupId }
if (item.type === 'separator') { break }
}
}
}
return ++nextGroupId
return ++groupIdIndex
}
// Returns the index of item according to |id|.
@ -284,6 +265,7 @@ function indexOfItemById (items, id) {
}
// Returns the index of where to insert the item according to |position|
// cleaned up
function indexToInsertByPosition (items, position) {
if (!position) return items.length
@ -315,8 +297,4 @@ function indexToInsertByPosition (items, position) {
return (query in queries) ? queries[query](idx) : idx
}
function computeNewIndexOnQuery(idx, query) {
}
module.exports = Menu