status/bluetooth: Clear list of connected signals on adapter changes
With the porting of gnome-bluetooth to the new GListModel API the behavior regarding removing adapters changed: It now no longer guarantees to emit "device-removed" signals for the paired devices when the adapter gets removed. This means we need to do that ourselves now, so clear the list of connected signals when the default adapter changes. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2214>
This commit is contained in:
parent
94d9264d96
commit
eeabdd150c
@ -27,6 +27,17 @@ class Indicator extends PanelMenu.SystemIndicator {
|
|||||||
this._hadSetupDevices = global.settings.get_boolean(HAD_BLUETOOTH_DEVICES_SETUP);
|
this._hadSetupDevices = global.settings.get_boolean(HAD_BLUETOOTH_DEVICES_SETUP);
|
||||||
|
|
||||||
this._client = new GnomeBluetooth.Client();
|
this._client = new GnomeBluetooth.Client();
|
||||||
|
this._client.connect('notify::default-adapter', () => {
|
||||||
|
const newAdapter = this._client.default_adapter ?? null;
|
||||||
|
|
||||||
|
if (newAdapter && this._adapter)
|
||||||
|
this._setHadSetupDevices(this._getDeviceInfos().length > 0);
|
||||||
|
|
||||||
|
this._adapter = newAdapter;
|
||||||
|
|
||||||
|
this._deviceNotifyConnected.clear();
|
||||||
|
this._sync();
|
||||||
|
});
|
||||||
this._client.connect('notify::default-adapter-powered', this._sync.bind(this));
|
this._client.connect('notify::default-adapter-powered', this._sync.bind(this));
|
||||||
|
|
||||||
this._proxy = new RfkillManagerProxy(Gio.DBus.session, BUS_NAME, OBJECT_PATH,
|
this._proxy = new RfkillManagerProxy(Gio.DBus.session, BUS_NAME, OBJECT_PATH,
|
||||||
@ -133,10 +144,6 @@ class Indicator extends PanelMenu.SystemIndicator {
|
|||||||
const connectedDevices = devices.filter(dev => dev.connected);
|
const connectedDevices = devices.filter(dev => dev.connected);
|
||||||
const nConnectedDevices = connectedDevices.length;
|
const nConnectedDevices = connectedDevices.length;
|
||||||
|
|
||||||
if (this._client.default_adapter && this._adapter)
|
|
||||||
this._setHadSetupDevices(devices.length > 0);
|
|
||||||
this._adapter = this._client.default_adapter ?? null;
|
|
||||||
|
|
||||||
let sensitive = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter;
|
let sensitive = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter;
|
||||||
|
|
||||||
this.menu.setSensitive(sensitive);
|
this.menu.setSensitive(sensitive);
|
||||||
|
Loading…
Reference in New Issue
Block a user