Index: third_party/google_input_tools/src/chrome/os/inputview/elements/content/compactkey.js |
diff --git a/third_party/google_input_tools/src/chrome/os/inputview/elements/content/compactkey.js b/third_party/google_input_tools/src/chrome/os/inputview/elements/content/compactkey.js |
index e027211b627b09374782c2f02cdf2b505bf1ccbe..212e698ea8f8ca41bd47c459e1ef0be45f5f33a1 100644 |
--- a/third_party/google_input_tools/src/chrome/os/inputview/elements/content/compactkey.js |
+++ b/third_party/google_input_tools/src/chrome/os/inputview/elements/content/compactkey.js |
@@ -191,6 +191,8 @@ CompactKey.prototype.getContextOptimizedText_ = function() { |
* Get the active character. It may be upper case |text| when shift is pressed |
* or flickerred character when swipe. Note this should replace Compactkey.text |
* for compact keys. |
+ * |
+ * @return {string} |
*/ |
CompactKey.prototype.getActiveCharacter = function() { |
if (this.flickerredCharacter) { |
@@ -233,30 +235,39 @@ CompactKey.prototype.update = function() { |
* @return {!Array.<string>} The characters. |
*/ |
CompactKey.prototype.getMoreCharacters = function() { |
- var moreCharacters = goog.array.clone(this.compactKeyModel_.moreKeys); |
- switch (this.compactKeyModel_.moreKeysShiftOperation) { |
- case MoreKeysShiftOperation.TO_UPPER_CASE: |
- if (this.getActiveCharacter().toLowerCase() != |
- this.getActiveCharacter()) { |
- for (var i = 0; i < this.compactKeyModel_.moreKeys.length; i++) { |
- moreCharacters[i] = this.compactKeyModel_.moreKeys[i].toUpperCase(); |
+ var context = this.stateManager_.contextType; |
+ var contextMap = context && this.compactKeyModel_.textOnContext[context]; |
+ if (contextMap && |
+ contextMap[SpecNodeName.MORE_KEYS] && |
+ contextMap[SpecNodeName.MORE_KEYS][SpecNodeName.CHARACTERS]) { |
+ return goog.array.clone( |
+ contextMap[SpecNodeName.MORE_KEYS][SpecNodeName.CHARACTERS]); |
+ } else { |
+ var moreCharacters = goog.array.clone(this.compactKeyModel_.moreKeys); |
+ switch (this.compactKeyModel_.moreKeysShiftOperation) { |
+ case MoreKeysShiftOperation.TO_UPPER_CASE: |
+ if (this.getActiveCharacter().toLowerCase() != |
+ this.getActiveCharacter()) { |
+ for (var i = 0; i < this.compactKeyModel_.moreKeys.length; i++) { |
+ moreCharacters[i] = this.compactKeyModel_.moreKeys[i].toUpperCase(); |
+ } |
+ goog.array.removeDuplicates(moreCharacters); |
} |
- goog.array.removeDuplicates(moreCharacters); |
- } |
- return moreCharacters; |
- case MoreKeysShiftOperation.TO_LOWER_CASE: |
- if (this.hasShift_ && this.stateManager_.hasState( |
- i18n.input.chrome.inputview.StateType.SHIFT)) { |
- for (var i = 0; i < this.compactKeyModel_.moreKeys.length; i++) { |
- moreCharacters[i] = this.compactKeyModel_.moreKeys[i].toLowerCase(); |
+ return moreCharacters; |
+ case MoreKeysShiftOperation.TO_LOWER_CASE: |
+ if (this.hasShift_ && this.stateManager_.hasState( |
+ i18n.input.chrome.inputview.StateType.SHIFT)) { |
+ for (var i = 0; i < this.compactKeyModel_.moreKeys.length; i++) { |
+ moreCharacters[i] = this.compactKeyModel_.moreKeys[i].toLowerCase(); |
+ } |
+ goog.array.removeDuplicates(moreCharacters); |
} |
- goog.array.removeDuplicates(moreCharacters); |
- } |
- return moreCharacters; |
- case MoreKeysShiftOperation.STABLE: |
- break; |
+ return moreCharacters; |
+ case MoreKeysShiftOperation.STABLE: |
+ break; |
+ } |
+ return moreCharacters; |
} |
- return moreCharacters; |
}; |