From eeabdd150c70ff003a5cca60039ec8f2c4e5dbd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= Date: Thu, 24 Feb 2022 19:35:06 +0100 Subject: [PATCH] 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: --- js/ui/status/bluetooth.js | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/js/ui/status/bluetooth.js b/js/ui/status/bluetooth.js index 187e10635..5e985dd1a 100644 --- a/js/ui/status/bluetooth.js +++ b/js/ui/status/bluetooth.js @@ -27,6 +27,17 @@ class Indicator extends PanelMenu.SystemIndicator { this._hadSetupDevices = global.settings.get_boolean(HAD_BLUETOOTH_DEVICES_SETUP); 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._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 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; this.menu.setSensitive(sensitive);