null node.getAttribute("skipintoolbarset") != "true" && node.id) .map(node => node.id); CustomizableUI.registerToolbarNode(this, children); ]]> 0) { if (this.overflowable && this.overflowable.initialized) { this.overflowable.onOverflow(aEvent); } else { this.overflowedDuringConstruction = aEvent; } } else if (aEvent.type == "underflow" && aEvent.detail > 0) { this.overflowedDuringConstruction = null; } ]]> currentWidgets.has(w)).join(","); ]]> x); let oldIds = CustomizableUI.getWidgetIdsInArea(this.id); // Get a list of items only in the new list let newIds = newVal.filter(id => oldIds.indexOf(id) == -1); CustomizableUI.beginBatchUpdate(); try { for (let newId of newIds) { oldIds = CustomizableUI.getWidgetIdsInArea(this.id); let nextId = newId; let pos; do { // Get the next item nextId = newVal[newVal.indexOf(nextId) + 1]; // Figure out where it is in the old list pos = oldIds.indexOf(nextId); // If it's not in the old list, repeat: } while (pos == -1 && nextId); if (pos == -1) { pos = null; // We didn't find anything, insert at the end } CustomizableUI.addWidgetToArea(newId, this.id, pos); } let currentIds = this.currentSet.split(","); let removedIds = currentIds.filter(id => newIds.indexOf(id) == -1 && newVal.indexOf(id) == -1); for (let removedId of removedIds) { CustomizableUI.removeWidgetFromArea(removedId); } } finally { CustomizableUI.endBatchUpdate(); } ]]> this._setInactive(); this._setActive(); null true