status/keyboard: When per-window, choose the first IS for new windows

This was libgnomekbd's behavior and seems to be prefered by users.

https://bugzilla.gnome.org/show_bug.cgi?id=746037
This commit is contained in:
Rui Matos 2015-03-11 15:48:03 +01:00
parent 01b51cd081
commit 4e52ed9df7

View File

@ -475,13 +475,20 @@ const InputSourceManager = new Lang.Class({
}, },
_getNewInputSource: function(current) { _getNewInputSource: function(current) {
for (let i in this._inputSources) { let sourceIndexes = Object.keys(this._inputSources);
let is = this._inputSources[i]; if (sourceIndexes.length == 0)
if (is.type == current.type && return null;
is.id == current.id)
return is; if (current) {
for (let i in this._inputSources) {
let is = this._inputSources[i];
if (is.type == current.type &&
is.id == current.id)
return is;
}
} }
return this._currentSource;
return this._inputSources[sourceIndexes[0]];
}, },
_getCurrentWindow: function() { _getCurrentWindow: function() {
@ -496,16 +503,13 @@ const InputSourceManager = new Lang.Class({
if (!window) if (!window)
return; return;
if (!window._inputSources) { if (window._inputSources != this._inputSources) {
window._inputSources = this._inputSources;
window._currentSource = this._currentSource;
} else if (window._inputSources == this._inputSources) {
window._currentSource.activate();
} else {
window._inputSources = this._inputSources; window._inputSources = this._inputSources;
window._currentSource = this._getNewInputSource(window._currentSource); window._currentSource = this._getNewInputSource(window._currentSource);
window._currentSource.activate();
} }
if (window._currentSource)
window._currentSource.activate();
}, },
_sourcesPerWindowChanged: function() { _sourcesPerWindowChanged: function() {