status/network: Use property bindings for global visibility
There is a straight mapping between running/enabled and visibility, so bind them instead of using a signal handler. _syncConnectivity() is called both from _syncMainConnection() and on connectivity changes, which should cover any running/enabled changes. That just leaves updating the icon on state changes. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2406>
This commit is contained in:
parent
f411228fa0
commit
54a1c34f6e
@ -1779,14 +1779,18 @@ class Indicator extends PanelMenu.SystemIndicator {
|
|||||||
|
|
||||||
this._readConnections();
|
this._readConnections();
|
||||||
this._readDevices();
|
this._readDevices();
|
||||||
this._syncNMState();
|
|
||||||
this._syncMainConnection();
|
this._syncMainConnection();
|
||||||
this._syncVpnConnections();
|
this._syncVpnConnections();
|
||||||
|
|
||||||
|
this._client.bind_property('nm-running',
|
||||||
|
this, 'visible',
|
||||||
|
GObject.BindingFlags.SYNC_CREATE);
|
||||||
|
this._client.bind_property('networking-enabled',
|
||||||
|
this.menu.actor, 'visible',
|
||||||
|
GObject.BindingFlags.SYNC_CREATE);
|
||||||
|
|
||||||
this._client.connectObject(
|
this._client.connectObject(
|
||||||
'notify::nm-running', () => this._syncNMState(),
|
'notify::state', () => this._updateIcon(),
|
||||||
'notify::networking-enabled', () => this._syncNMState(),
|
|
||||||
'notify::state', () => this._syncNMState(),
|
|
||||||
'notify::primary-connection', () => this._syncMainConnection(),
|
'notify::primary-connection', () => this._syncMainConnection(),
|
||||||
'notify::activating-connection', () => this._syncMainConnection(),
|
'notify::activating-connection', () => this._syncMainConnection(),
|
||||||
'notify::active-connections', () => this._syncVpnConnections(),
|
'notify::active-connections', () => this._syncVpnConnections(),
|
||||||
@ -2061,14 +2065,6 @@ class Indicator extends PanelMenu.SystemIndicator {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_syncNMState() {
|
|
||||||
this.visible = this._client.nm_running;
|
|
||||||
this.menu.actor.visible = this._client.networking_enabled;
|
|
||||||
|
|
||||||
this._updateIcon();
|
|
||||||
this._syncConnectivity();
|
|
||||||
}
|
|
||||||
|
|
||||||
_flushConnectivityQueue() {
|
_flushConnectivityQueue() {
|
||||||
for (let item of this._connectivityQueue)
|
for (let item of this._connectivityQueue)
|
||||||
this._portalHelperProxy?.CloseAsync(item);
|
this._portalHelperProxy?.CloseAsync(item);
|
||||||
|
Loading…
Reference in New Issue
Block a user