[gnome-shell/wip/carlosg/magnifier-fixes: 1/2] magnifier: Add method to enable/disable crosshairs
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell/wip/carlosg/magnifier-fixes: 1/2] magnifier: Add method to enable/disable crosshairs
- Date: Mon, 28 Jun 2021 18:56:48 +0000 (UTC)
commit 36e5da0e2d6c61a007304f7f5f37d78640310cf6
Author: Carlos Garnacho <carlosg gnome org>
Date: Mon Jun 28 14:19:15 2021 +0200
magnifier: Add method to enable/disable crosshairs
These do some some signals connection and monitor layout tracking
that we forget to disconnect when the magnifier is disconnected.
This causes warnings if enabling the magnifier, disabling it,
switching to another tty, and back. (Presumably also happens for
monitor hotplugs).
This signal should just stay connected as long as it's needed,
so add a setEnabled() method on the CrossHairs actor that we
can hook on the magnifier.
js/ui/magnifier.js | 17 ++++++++++++++---
1 file changed, 14 insertions(+), 3 deletions(-)
---
diff --git a/js/ui/magnifier.js b/js/ui/magnifier.js
index 22c11766b0..c8f695e2b6 100644
--- a/js/ui/magnifier.js
+++ b/js/ui/magnifier.js
@@ -172,6 +172,9 @@ var Magnifier = class Magnifier {
this.stopTrackingMouse();
}
+ if (this._crossHairs)
+ this._crossHairs.setEnabled(activate);
+
// Make sure system mouse pointer is shown when all zoom regions are
// invisible.
if (!activate)
@@ -1677,9 +1680,7 @@ class Crosshairs extends Clutter.Actor {
this._clipSize = [0, 0];
this._clones = [];
this.reCenter();
-
- Main.layoutManager.connect('monitors-changed',
- this._monitorsChanged.bind(this));
+ this._monitorsChangedId = 0;
}
_monitorsChanged() {
@@ -1687,6 +1688,16 @@ class Crosshairs extends Clutter.Actor {
this.reCenter();
}
+ setEnabled(enabled) {
+ if (enabled && this._monitorsChangedId === 0) {
+ this._monitorsChangedId = Main.layoutManager.connect(
+ 'monitors-changed', this._monitorsChanged.bind(this));
+ } else if (!enabled && this._monitorsChangedId !== 0) {
+ Main.layoutManager.disconnect(this._monitorsChangedId);
+ this._monitorsChangedId = 0;
+ }
+ }
+
/**
* addToZoomRegion
* Either add the crosshairs actor to the given ZoomRegion, or, if it is
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]