diff options
author | Bartosz Jaroszewski <b.jarosze@gmail.com> | 2020-05-17 00:22:14 +0200 |
---|---|---|
committer | Bartosz Jaroszewski <b.jarosze@gmail.com> | 2020-05-17 00:22:14 +0200 |
commit | 3d8b17ef4864f27c4f7b86c6d9ae55746283b7e7 (patch) | |
tree | 96add14822b69c6d87bee4b742756a9cd97122ce | |
parent | c54485722f91a53298849bff2e819c551fb93587 (diff) |
pause idle monitor when menu opened
-rw-r--r-- | extension.js | 23 |
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() { |