From 46e5ac207a244960840a1d8108b780dd95a8146a Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Tue, 15 Sep 2015 14:04:07 -0400 Subject: [PATCH] magnifier: don't spew to console when focus moves around We currently ship at-spi2 2.8 in 7.2 but gnome-shell 3.14 which depends on function names shipped in later versions of at-spi2. This commit works around the problem by using the names of the functions, as they existed in 2.8. --- js/ui/magnifier.js | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/js/ui/magnifier.js b/js/ui/magnifier.js index 101c14c..2fe99c6 100644 --- a/js/ui/magnifier.js +++ b/js/ui/magnifier.js @@ -690,78 +690,91 @@ const ZoomRegion = new Lang.Class({ this._background = null; this._uiGroupClone = null; this._mouseSourceActor = mouseSourceActor; this._mouseActor = null; this._crossHairs = null; this._crossHairsActor = null; this._viewPortX = 0; this._viewPortY = 0; this._viewPortWidth = global.screen_width; this._viewPortHeight = global.screen_height; this._xCenter = this._viewPortWidth / 2; this._yCenter = this._viewPortHeight / 2; this._xMagFactor = 1; this._yMagFactor = 1; this._followingCursor = false; this._xFocus = 0; this._yFocus = 0; this._xCaret = 0; this._yCaret = 0; Main.layoutManager.connect('monitors-changed', Lang.bind(this, this._monitorsChanged)); this._focusCaretTracker.connect('caret-moved', Lang.bind(this, this._updateCaret)); this._focusCaretTracker.connect('focus-changed', Lang.bind(this, this._updateFocus)); }, _updateFocus: function(caller, event) { - let component = event.source.get_component_iface(); + let component; + + if (typeof event.source.get_component_iface === "function") { + component = event.source.get_component_iface(); + } else if (typeof event.source.get_component === "function") { + component = event.source.get_component(); + } + if (!component || event.detail1 != 1) return; let extents; try { extents = component.get_extents(Atspi.CoordType.SCREEN); } catch(e) { log('Failed to read extents of focused component: ' + e.message); return; } [this._xFocus, this._yFocus] = [extents.x + (extents.width / 2), extents.y + (extents.height / 2)]; this._centerFromFocusPosition(); }, _updateCaret: function(caller, event) { - let text = event.source.get_text_iface(); + let text; + + if (typeof event.source.get_text_iface === "function") { + text = event.source.get_text_iface(); + } else if (typeof event.source.get_text === "function") { + text = event.source.get_text(); + } if (!text) return; let extents; try { extents = text.get_character_extents(text.get_caret_offset(), 0); } catch(e) { log('Failed to read extents of text caret: ' + e.message); return; } [this._xCaret, this._yCaret] = [extents.x, extents.y]; this._centerFromCaretPosition(); }, /** * setActive: * @activate: Boolean to show/hide the ZoomRegion. */ setActive: function(activate) { if (activate == this.isActive()) return; if (activate) { this._createActors(); if (this._isMouseOverRegion()) this._magnifier.hideSystemCursor(); this._updateMagViewGeometry(); this._updateCloneGeometry(); this._updateMousePosition(); } else { -- 2.5.0