extensionPrefs: Sync list visibility on status changes
We only show the list of system- and user extensions if corresponding extensions are installed, however we only update the visibility after loading the initial list of extensions. As it's possible for the first user extension to be installed while the app is open or the last one to be removed, we should also update the list visibility after extension state changes. https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1088
This commit is contained in:
parent
eb3c857f23
commit
7d94bfa642
@ -423,11 +423,13 @@ var ExtensionsWindow = GObject.registerClass({
|
|||||||
if (row) {
|
if (row) {
|
||||||
if (extension.state === ExtensionState.UNINSTALLED)
|
if (extension.state === ExtensionState.UNINSTALLED)
|
||||||
row.destroy();
|
row.destroy();
|
||||||
return; // we only deal with new and deleted extensions here
|
} else {
|
||||||
}
|
|
||||||
this._addExtensionRow(extension);
|
this._addExtensionRow(extension);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this._syncListVisibility();
|
||||||
|
}
|
||||||
|
|
||||||
_scanExtensions() {
|
_scanExtensions() {
|
||||||
this._shellProxy.ListExtensionsRemote(([extensionsMap], e) => {
|
this._shellProxy.ListExtensionsRemote(([extensionsMap], e) => {
|
||||||
if (e) {
|
if (e) {
|
||||||
@ -471,6 +473,16 @@ var ExtensionsWindow = GObject.registerClass({
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_syncListVisibility() {
|
||||||
|
this._userList.visible = this._userList.get_children().length > 0;
|
||||||
|
this._systemList.visible = this._systemList.get_children().length > 0;
|
||||||
|
|
||||||
|
if (this._userList.visible || this._systemList.visible)
|
||||||
|
this._mainStack.visible_child_name = 'main';
|
||||||
|
else
|
||||||
|
this._mainStack.visible_child_name = 'placeholder';
|
||||||
|
}
|
||||||
|
|
||||||
_checkUpdates() {
|
_checkUpdates() {
|
||||||
let nUpdates = this._userList.get_children().filter(c => c.hasUpdate).length;
|
let nUpdates = this._userList.get_children().filter(c => c.hasUpdate).length;
|
||||||
|
|
||||||
@ -482,14 +494,7 @@ var ExtensionsWindow = GObject.registerClass({
|
|||||||
}
|
}
|
||||||
|
|
||||||
_extensionsLoaded() {
|
_extensionsLoaded() {
|
||||||
this._userList.visible = this._userList.get_children().length > 0;
|
this._syncListVisibility();
|
||||||
this._systemList.visible = this._systemList.get_children().length > 0;
|
|
||||||
|
|
||||||
if (this._userList.visible || this._systemList.visible)
|
|
||||||
this._mainStack.visible_child_name = 'main';
|
|
||||||
else
|
|
||||||
this._mainStack.visible_child_name = 'placeholder';
|
|
||||||
|
|
||||||
this._checkUpdates();
|
this._checkUpdates();
|
||||||
|
|
||||||
if (this._startupUuid)
|
if (this._startupUuid)
|
||||||
|
Loading…
Reference in New Issue
Block a user