summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon McVittie <smcv@debian.org>2022-03-31 10:13:50 +0100
committerSimon McVittie <smcv@debian.org>2022-04-01 12:00:02 +0100
commit25bfb115c7777d0006b1e699d0b1994208e3ba1c (patch)
tree659ad7499abacd7683c7d8a9683b27dcfaf9db4e
parent9daa88483cc13823325827fae0ae9a68cdc00a23 (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.js7
-rw-r--r--extension.js9
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}`);