From bf0c7f731d0adb36526a62c0dcb64a890ff477ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Pi=C3=B1eiro?= Date: Thu, 29 May 2014 14:12:16 +0200 Subject: [PATCH] a11y: initialize atspi on demand Only call atspi.init if needed. This is also more coherent with the listener registration, that is only done when needed. https://bugzilla.gnome.org/show_bug.cgi?id=730118 --- js/ui/focusCaretTracker.js | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/js/ui/focusCaretTracker.js b/js/ui/focusCaretTracker.js index beaf2de0f..265fcce71 100644 --- a/js/ui/focusCaretTracker.js +++ b/js/ui/focusCaretTracker.js @@ -32,11 +32,9 @@ const FocusCaretTracker = new Lang.Class({ Name: 'FocusCaretTracker', _init: function() { - Atspi.init(); - Atspi.set_timeout(250, 250); - this._atspiListener = Atspi.EventListener.new(Lang.bind(this, this._onChanged)); + this._atspiInited = false; this._focusListenerRegistered = false; this._caretListenerRegistered = false; }, @@ -48,12 +46,20 @@ const FocusCaretTracker = new Lang.Class({ this.emit('caret-moved', event); }, + _initAtspi: function() { + if (!this._atspiInited) { + Atspi.init(); + Atspi.set_timeout(250, 250); + this._atspiInited = true; + } + }, + registerFocusListener: function() { if (this._focusListenerRegistered) return; - // Ignore the return value, we get an exception if they fail - // And they should never fail + this._initAtspi(); + this._atspiListener.register(STATECHANGED + ':focused'); this._atspiListener.register(STATECHANGED + ':selected'); this._focusListenerRegistered = true; @@ -63,6 +69,8 @@ const FocusCaretTracker = new Lang.Class({ if (this._caretListenerRegistered) return; + this._initAtspi(); + this._atspiListener.register(CARETMOVED); this._caretListenerRegistered = true; },