NetworkMenu: take out an item from More... when another is destroyed
When one of the networks in the main menu is removed and we have a More... submenu, we can take the first out from the submenu and show it in the main menu. https://bugzilla.gnome.org/show_bug.cgi?id=647175
This commit is contained in:
parent
a007b1bb2d
commit
5819dd3a5a
@ -946,6 +946,14 @@ PopupMenuBase.prototype = {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
get firstMenuItem() {
|
||||||
|
let items = this._getMenuItems();
|
||||||
|
if (items.length)
|
||||||
|
return items[0];
|
||||||
|
else
|
||||||
|
return null;
|
||||||
|
},
|
||||||
|
|
||||||
removeAll: function() {
|
removeAll: function() {
|
||||||
let children = this._getMenuItems();
|
let children = this._getMenuItems();
|
||||||
for (let i = 0; i < children.length; i++) {
|
for (let i = 0; i < children.length; i++) {
|
||||||
|
@ -1281,12 +1281,29 @@ NMDeviceWireless.prototype = {
|
|||||||
if (apObj.accessPoints.length == 0) {
|
if (apObj.accessPoints.length == 0) {
|
||||||
if (apObj.item)
|
if (apObj.item)
|
||||||
apObj.item.destroy();
|
apObj.item.destroy();
|
||||||
this._networks.splice(pos, 1);
|
|
||||||
if (this._overflowItem &&
|
if (this._overflowItem) {
|
||||||
this._overflowItem.menu.length == 0) {
|
if (!apObj.isMore) {
|
||||||
|
// we removed an item in the main menu, and we have a more submenu
|
||||||
|
// we need to extract the first item in more and move it to the submenu
|
||||||
|
|
||||||
|
let apObj = this._overflowItem.menu.firstMenuItem;
|
||||||
|
if (apObj.item) {
|
||||||
|
apObj.item.destroy();
|
||||||
|
|
||||||
|
this._createNetworkItem(apObj, NUM_VISIBLE_NETWORKS-1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// This can happen if the removed connection is from the overflow
|
||||||
|
// menu, or if we just moved the last connection out from the menu
|
||||||
|
if (this._overflowItem.menu.length == 0) {
|
||||||
this._overflowItem.destroy();
|
this._overflowItem.destroy();
|
||||||
this._overflowItem = null;
|
this._overflowItem = null;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
this._networks.splice(pos, 1);
|
||||||
|
|
||||||
} else if (apObj.item)
|
} else if (apObj.item)
|
||||||
apObj.item.updateAccessPoints(apObj.accessPoints);
|
apObj.item.updateAccessPoints(apObj.accessPoints);
|
||||||
},
|
},
|
||||||
@ -1482,14 +1499,16 @@ NMDeviceWireless.prototype = {
|
|||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
if (position < NUM_VISIBLE_NETWORKS)
|
if (position < NUM_VISIBLE_NETWORKS) {
|
||||||
|
apObj.isMore = false;
|
||||||
this.section.addMenuItem(apObj.item, position);
|
this.section.addMenuItem(apObj.item, position);
|
||||||
else {
|
} else {
|
||||||
if (!this._overflowItem) {
|
if (!this._overflowItem) {
|
||||||
this._overflowItem = new PopupMenu.PopupSubMenuMenuItem(_("More..."));
|
this._overflowItem = new PopupMenu.PopupSubMenuMenuItem(_("More..."));
|
||||||
this.section.addMenuItem(this._overflowItem);
|
this.section.addMenuItem(this._overflowItem);
|
||||||
}
|
}
|
||||||
this._overflowItem.menu.addMenuItem(apObj.item, position - NUM_VISIBLE_NETWORKS);
|
this._overflowItem.menu.addMenuItem(apObj.item, position - NUM_VISIBLE_NETWORKS);
|
||||||
|
apObj.isMore = true;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user