Show input methods for selected language correctly
Remove redundant calls to prepareInputmethods and redundant button styling. Rename firstLanguauge to the clearer currentLanguage. Switch checking for imeLanguage and the prereferences language to make sure that the last one is shown. Done in pair programming with Santhosh. Bug: 48163 Change-Id: Ie8441f29eb20caa05534c8589481a26cb415a27f
This commit is contained in:
@@ -95,7 +95,6 @@
|
|||||||
this.$template.find( '.enabled-only' ).addClass( 'hide' );
|
this.$template.find( '.enabled-only' ).addClass( 'hide' );
|
||||||
}
|
}
|
||||||
this.prepareLanguages();
|
this.prepareLanguages();
|
||||||
this.prepareInputmethods( $.ime.preferences.getLanguage() );
|
|
||||||
this.prepareToggleButton();
|
this.prepareToggleButton();
|
||||||
this.$template.i18n();
|
this.$template.i18n();
|
||||||
this.listen();
|
this.listen();
|
||||||
@@ -196,7 +195,7 @@
|
|||||||
prepareLanguages: function () {
|
prepareLanguages: function () {
|
||||||
var inputSettings = this,
|
var inputSettings = this,
|
||||||
SUGGESTED_LANGUAGES_NUMBER = 3,
|
SUGGESTED_LANGUAGES_NUMBER = 3,
|
||||||
firstLanguage = this.contentLanguage,
|
currentLanguage = this.contentLanguage,
|
||||||
selectedImeLanguage = $.ime.preferences.getLanguage(),
|
selectedImeLanguage = $.ime.preferences.getLanguage(),
|
||||||
languagesForButtons, $languages, suggestedLanguages,
|
languagesForButtons, $languages, suggestedLanguages,
|
||||||
lang, i, language, $button, $caret;
|
lang, i, language, $button, $caret;
|
||||||
@@ -216,21 +215,21 @@
|
|||||||
// after selecting a different language
|
// after selecting a different language
|
||||||
$languages.empty();
|
$languages.empty();
|
||||||
|
|
||||||
// UI language must always be present
|
|
||||||
if ( this.imeLanguage !== this.contentLanguage &&
|
|
||||||
$.uls.data.languages[this.imeLanguage]
|
|
||||||
) {
|
|
||||||
languagesForButtons.push( this.imeLanguage );
|
|
||||||
firstLanguage = this.imeLanguage;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Selected IME language may be different, and it must
|
// Selected IME language may be different, and it must
|
||||||
// be present, too
|
// be present, too
|
||||||
if ( $.inArray( selectedImeLanguage, languagesForButtons ) === -1 &&
|
if ( $.inArray( selectedImeLanguage, languagesForButtons ) === -1 &&
|
||||||
$.uls.data.languages[selectedImeLanguage]
|
$.uls.data.languages[selectedImeLanguage]
|
||||||
) {
|
) {
|
||||||
languagesForButtons.push( selectedImeLanguage );
|
languagesForButtons.push( selectedImeLanguage );
|
||||||
firstLanguage = selectedImeLanguage;
|
currentLanguage = selectedImeLanguage;
|
||||||
|
}
|
||||||
|
|
||||||
|
// UI language must always be present
|
||||||
|
if ( this.imeLanguage !== this.contentLanguage &&
|
||||||
|
$.uls.data.languages[this.imeLanguage]
|
||||||
|
) {
|
||||||
|
languagesForButtons.push( this.imeLanguage );
|
||||||
|
currentLanguage = this.imeLanguage;
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( lang in suggestedLanguages ) {
|
for ( lang in suggestedLanguages ) {
|
||||||
@@ -251,7 +250,10 @@
|
|||||||
return function () {
|
return function () {
|
||||||
var selectedLanguage = button.data( 'language' ) || inputSettings.imeLanguage;
|
var selectedLanguage = button.data( 'language' ) || inputSettings.imeLanguage;
|
||||||
|
|
||||||
inputSettings.enableApplyButton();
|
if ( selectedLanguage !== inputSettings.imeLanguage ) {
|
||||||
|
inputSettings.enableApplyButton();
|
||||||
|
}
|
||||||
|
|
||||||
$.ime.preferences.setLanguage( selectedLanguage );
|
$.ime.preferences.setLanguage( selectedLanguage );
|
||||||
$( '.uls-ui-languages .button' ).removeClass( 'down' );
|
$( '.uls-ui-languages .button' ).removeClass( 'down' );
|
||||||
button.addClass( 'down' );
|
button.addClass( 'down' );
|
||||||
@@ -270,16 +272,16 @@
|
|||||||
dir: $.uls.data.getDir( language )
|
dir: $.uls.data.getDir( language )
|
||||||
} );
|
} );
|
||||||
|
|
||||||
if ( language === firstLanguage ) {
|
|
||||||
$button.addClass( 'down' );
|
|
||||||
}
|
|
||||||
|
|
||||||
$button.data( 'language', language );
|
$button.data( 'language', language );
|
||||||
$caret = $( '<span>' ).addClass( 'uls-input-settings-caret' );
|
$caret = $( '<span>' ).addClass( 'uls-input-settings-caret' );
|
||||||
|
|
||||||
$languages.append( $button, $caret );
|
$languages.append( $button, $caret );
|
||||||
|
|
||||||
$button.on( 'click', buttonHandler( $button ) );
|
$button.on( 'click', buttonHandler( $button ) );
|
||||||
|
|
||||||
|
if ( language === currentLanguage ) {
|
||||||
|
$button.click();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.prepareMoreLanguages();
|
this.prepareMoreLanguages();
|
||||||
@@ -333,7 +335,6 @@
|
|||||||
inputSettings.imeLanguage = langCode;
|
inputSettings.imeLanguage = langCode;
|
||||||
inputSettings.$parent.show();
|
inputSettings.$parent.show();
|
||||||
inputSettings.prepareLanguages();
|
inputSettings.prepareLanguages();
|
||||||
inputSettings.prepareInputmethods( langCode );
|
|
||||||
},
|
},
|
||||||
languages: mw.ime.getLanguagesWithIME(),
|
languages: mw.ime.getLanguagesWithIME(),
|
||||||
lazyload: false
|
lazyload: false
|
||||||
|
|||||||
Reference in New Issue
Block a user