 Chromium Code Reviews
 Chromium Code Reviews Issue 2878079:
  Fix behaviors of Add and Remove buttons.  (Closed)
    
  
    Issue 2878079:
  Fix behaviors of Add and Remove buttons.  (Closed) 
  | Index: chrome/browser/resources/options/chromeos_language_list.js | 
| diff --git a/chrome/browser/resources/options/chromeos_language_list.js b/chrome/browser/resources/options/chromeos_language_list.js | 
| index ac0c8b941b3e405826c9d4a2eb7c3844d9db6aaa..c6e603357dc5c013e06f174af1b1d759ac925d21 100644 | 
| --- a/chrome/browser/resources/options/chromeos_language_list.js | 
| +++ b/chrome/browser/resources/options/chromeos_language_list.js | 
| @@ -62,8 +62,9 @@ cr.define('options.language', function() { | 
| * @param {string} languageCode language code (ex. "fr"). | 
| */ | 
| addLanguage: function(languageCode) { | 
| - var dataModel = this.dataModel; | 
| - dataModel.push(languageCode); | 
| + this.dataModel.push(languageCode); | 
| + // Select the last item, which is the language added. | 
| + this.selectionModel.selectedIndex = this.dataModel.length - 1; | 
| 
arv (Not doing code reviews)
2010/08/04 17:19:54
You might want to set leadIndex and anchorIndex as
 
satorux1
2010/08/05 04:12:50
Thank you for pointing this out. We'll be supposed
 | 
| this.updateBackend_(); | 
| }, | 
| @@ -101,8 +102,6 @@ cr.define('options.language', function() { | 
| this.selectionModel.selectedIndex = Math.min( | 
| originalIndex, | 
| this.dataModel.length - 1); | 
| - var newLanguageCodes = this.dataModel.slice(); | 
| - this.load_(newLanguageCodes); | 
| this.updateBackend_(); | 
| } | 
| }, | 
| @@ -125,12 +124,22 @@ cr.define('options.language', function() { | 
| * @private | 
| */ | 
| load_: function(languageCodes) { | 
| + // Preserve the original selected index. See comments below. | 
| + var originalSelectedIndex = (this.selectionModel ? | 
| + this.selectionModel.selectedIndex : -1); | 
| this.dataModel = new ArrayDataModel(languageCodes); | 
| - // Select the first item if it's not empty. | 
| - // TODO(satorux): Switch to a single item selection model that does | 
| - // not allow no selection, one it's ready: crbug.com/49893 | 
| - if (this.dataModel.length > 0) | 
| + if (originalSelectedIndex >= 0 && | 
| + originalSelectedIndex < this.dataModel.length) { | 
| + // Restore the original selected index if the selected index is | 
| + // valid after the data model is loaded. This is neeeded to keep | 
| + // the selected language after the languge is added or removed. | 
| + this.selectionModel.selectedIndex = originalSelectedIndex; | 
| + } else if (this.dataModel.length > 0){ | 
| + // Otherwise, select the first item if it's not empty. | 
| + // TODO(satorux): Switch to a single item selection model that does | 
| + // not allow no selection, one it's ready: crbug.com/49893 | 
| this.selectionModel.selectedIndex = 0; | 
| + } | 
| }, | 
| /** |