diff options
author | Simon McVittie <smcv@debian.org> | 2022-03-31 10:13:50 +0100 |
---|---|---|
committer | Simon McVittie <smcv@debian.org> | 2022-04-01 12:00:02 +0100 |
commit | 25bfb115c7777d0006b1e699d0b1994208e3ba1c (patch) | |
tree | 659ad7499abacd7683c7d8a9683b27dcfaf9db4e | |
parent | 9daa88483cc13823325827fae0ae9a68cdc00a23 (diff) |
bluetooth: Use a separate signal for changes to the default adapter
In gnome-bluetooth API version 1.0 (GNOME 41 and older), the Bluetooth
adapters are part of the same GtkTreeModel as the devices attached to
them, but in gnome-bluetooth API version 3.0 (GNOME 42) they're tracked
separately.
Signed-off-by: Simon McVittie <smcv@debian.org>
Forwarded: https://github.com/bjarosze/gnome-bluetooth-quick-connect/pull/55
Gbp-Pq: Name bluetooth-Use-a-separate-signal-for-changes-to-the-defaul.patch
-rw-r--r-- | bluetooth.js | 7 | ||||
-rw-r--r-- | extension.js | 9 |
2 files changed, 12 insertions, 4 deletions
diff --git a/bluetooth.js b/bluetooth.js index a8ed5e0..7472b07 100644 --- a/bluetooth.js +++ b/bluetooth.js @@ -31,7 +31,12 @@ var BluetoothController = class { this._connectSignal(this._model, 'row-changed', (arg0, arg1, iter) => { if (iter) { let device = this._buildDevice(iter); - this.emit('device-changed', device); + if (device.isDefault) { + this.emit('default-adapter-changed', device); + } + else { + this.emit('device-changed', device); + } } }); diff --git a/extension.js b/extension.js index bf89429..f154581 100644 --- a/extension.js +++ b/extension.js @@ -82,6 +82,11 @@ class BluetoothQuickConnect { _connectControllerSignals() { this._logger.info('Connecting bluetooth controller signals'); + this._connectSignal(this._controller, 'default-adapter-changed', (ctrl) => { + this._logger.info('Default adapter changed event'); + this._refresh(); + }); + this._connectSignal(this._controller, 'device-inserted', (ctrl, device) => { this._logger.info(`Device inserted event: ${device.name}`); if (device.isPaired) { @@ -93,9 +98,7 @@ class BluetoothQuickConnect { this._connectSignal(this._controller, 'device-changed', (ctrl, device) => { this._logger.info(`Device changed event: ${device.name}`); - if (device.isDefault) - this._refresh(); - else if (device.isPaired) + if (device.isPaired) this._syncMenuItem(device); else this._logger.info(`Skipping change event for unpaired device ${device.name}`); |