status/system: Fix session submenu visibility
Commit 147a743d8d
moved the suspend and power-off actions into
the submenu that contains the log-out and switch-user actions,
but did not update the submenu visibility logic to account for
the additional actions.
As a result, the submenu is hidden when log-out and switch-user
are unavailable (like on the login screen), even if suspend and
power-off are enabled.
https://gitlab.gnome.org/GNOME/gnome-shell/issues/2169
This commit is contained in:
parent
e16c64dbdd
commit
a205f4e249
@ -20,9 +20,13 @@ class Indicator extends PanelMenu.SystemIndicator {
|
|||||||
this._createSubMenu();
|
this._createSubMenu();
|
||||||
|
|
||||||
this._loginScreenItem.connect('notify::visible',
|
this._loginScreenItem.connect('notify::visible',
|
||||||
() => this._updateMultiUser());
|
() => this._updateSessionSubMenu());
|
||||||
this._logoutItem.connect('notify::visible',
|
this._logoutItem.connect('notify::visible',
|
||||||
() => this._updateMultiUser());
|
() => this._updateSessionSubMenu());
|
||||||
|
this._suspendItem.connect('notify::visible',
|
||||||
|
() => this._updateSessionSubMenu());
|
||||||
|
this._powerOffItem.connect('notify::visible',
|
||||||
|
() => this._updateSessionSubMenu());
|
||||||
// Whether shutdown is available or not depends on both lockdown
|
// Whether shutdown is available or not depends on both lockdown
|
||||||
// settings (disable-log-out) and Polkit policy - the latter doesn't
|
// settings (disable-log-out) and Polkit policy - the latter doesn't
|
||||||
// notify, so we update the menu item each time the menu opens or
|
// notify, so we update the menu item each time the menu opens or
|
||||||
@ -33,7 +37,7 @@ class Indicator extends PanelMenu.SystemIndicator {
|
|||||||
|
|
||||||
this._systemActions.forceUpdate();
|
this._systemActions.forceUpdate();
|
||||||
});
|
});
|
||||||
this._updateMultiUser();
|
this._updateSessionSubMenu();
|
||||||
|
|
||||||
Main.sessionMode.connect('updated', this._sessionUpdated.bind(this));
|
Main.sessionMode.connect('updated', this._sessionUpdated.bind(this));
|
||||||
this._sessionUpdated();
|
this._sessionUpdated();
|
||||||
@ -43,11 +47,12 @@ class Indicator extends PanelMenu.SystemIndicator {
|
|||||||
this._settingsItem.visible = Main.sessionMode.allowSettings;
|
this._settingsItem.visible = Main.sessionMode.allowSettings;
|
||||||
}
|
}
|
||||||
|
|
||||||
_updateMultiUser() {
|
_updateSessionSubMenu() {
|
||||||
let hasSwitchUser = this._loginScreenItem.visible;
|
this._sessionSubMenu.visible =
|
||||||
let hasLogout = this._logoutItem.visible;
|
this._loginScreenItem.visible ||
|
||||||
|
this._logoutItem.visible ||
|
||||||
this._sessionSubMenu.visible = hasSwitchUser || hasLogout;
|
this._suspendItem.visible ||
|
||||||
|
this._powerOffItem.visible;
|
||||||
}
|
}
|
||||||
|
|
||||||
_createSubMenu() {
|
_createSubMenu() {
|
||||||
|
Loading…
Reference in New Issue
Block a user