summaryrefslogtreecommitdiff
path: root/extension.js
diff options
context:
space:
mode:
authorBartosz Jaroszewski <b.jarosze@gmail.com>2020-05-17 00:22:14 +0200
committerBartosz Jaroszewski <b.jarosze@gmail.com>2020-05-17 00:22:14 +0200
commit3d8b17ef4864f27c4f7b86c6d9ae55746283b7e7 (patch)
tree96add14822b69c6d87bee4b742756a9cd97122ce /extension.js
parentc54485722f91a53298849bff2e819c551fb93587 (diff)
pause idle monitor when menu opened
Diffstat (limited to 'extension.js')
-rw-r--r--extension.js23
1 files changed, 18 insertions, 5 deletions
diff --git a/extension.js b/extension.js
index 503535b..111f3c4 100644
--- a/extension.js
+++ b/extension.js
@@ -103,8 +103,14 @@ class BluetoothQuickConnect {
enable() {
this._loadBluetoothModel();
this._connectSignal(this._menu, 'open-state-changed', (menu, isOpen) => {
+ if (isOpen)
+ this._disconnectIdleMonitor()
+ else
+ this._connectIdleMonitor();
+
if (isOpen && this._autoPowerOnEnabled())
this._proxy.BluetoothAirplaneMode = false;
+
this._sync();
});
@@ -112,7 +118,7 @@ class BluetoothQuickConnect {
this._connectSignal(this._model, 'row-deleted', () => this._sync());
this._connectSignal(this._model, 'row-inserted', () => this._sync());
- this._idleMonitor();
+ this._connectIdleMonitor();
if (!this._proxy.BluetoothAirplaneMode) {
this._sync();
}
@@ -130,7 +136,9 @@ class BluetoothQuickConnect {
}
}
- _idleMonitor() {
+ _connectIdleMonitor() {
+ if (this._idleMonitorId) return;
+
this._idleMonitorId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, this._autoPowerOffCheckingInterval() * 1000, () => {
if (this._autoPowerOffEnabled() && this._getConnectedDevices().length === 0)
this._proxy.BluetoothAirplaneMode = true;
@@ -139,6 +147,13 @@ class BluetoothQuickConnect {
});
}
+ _disconnectIdleMonitor() {
+ if (!this._idleMonitorId) return;
+
+ GLib.Source.remove(this._idleMonitorId);
+ this._idleMonitorId = null;
+ }
+
_connectSignal(subject, signal_name, method) {
let signal_id = subject.connect(signal_name, method);
this._signals.push({
@@ -218,9 +233,7 @@ class BluetoothQuickConnect {
});
this._signals = [];
this._removeDevicesFromMenu();
-
- if (this._idleMonitorId)
- GLib.Source.remove(this._idleMonitorId);
+ this._disconnectIdleMonitor();
}
_autoPowerOnEnabled() {