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
This commit is contained in:
Alejandro Piñeiro 2014-05-29 14:12:16 +02:00
parent 5a8a293614
commit bf0c7f731d

View File

@ -32,11 +32,9 @@ const FocusCaretTracker = new Lang.Class({
Name: 'FocusCaretTracker', Name: 'FocusCaretTracker',
_init: function() { _init: function() {
Atspi.init();
Atspi.set_timeout(250, 250);
this._atspiListener = Atspi.EventListener.new(Lang.bind(this, this._onChanged)); this._atspiListener = Atspi.EventListener.new(Lang.bind(this, this._onChanged));
this._atspiInited = false;
this._focusListenerRegistered = false; this._focusListenerRegistered = false;
this._caretListenerRegistered = false; this._caretListenerRegistered = false;
}, },
@ -48,12 +46,20 @@ const FocusCaretTracker = new Lang.Class({
this.emit('caret-moved', event); this.emit('caret-moved', event);
}, },
_initAtspi: function() {
if (!this._atspiInited) {
Atspi.init();
Atspi.set_timeout(250, 250);
this._atspiInited = true;
}
},
registerFocusListener: function() { registerFocusListener: function() {
if (this._focusListenerRegistered) if (this._focusListenerRegistered)
return; return;
// Ignore the return value, we get an exception if they fail this._initAtspi();
// And they should never fail
this._atspiListener.register(STATECHANGED + ':focused'); this._atspiListener.register(STATECHANGED + ':focused');
this._atspiListener.register(STATECHANGED + ':selected'); this._atspiListener.register(STATECHANGED + ':selected');
this._focusListenerRegistered = true; this._focusListenerRegistered = true;
@ -63,6 +69,8 @@ const FocusCaretTracker = new Lang.Class({
if (this._caretListenerRegistered) if (this._caretListenerRegistered)
return; return;
this._initAtspi();
this._atspiListener.register(CARETMOVED); this._atspiListener.register(CARETMOVED);
this._caretListenerRegistered = true; this._caretListenerRegistered = true;
}, },