Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(13)

Side by Side Diff: third_party/google_input_tools/src/chrome/os/inputview/controller.js

Issue 1013263002: Update Google Input Tools. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The ChromeOS IME Authors. All Rights Reserved. 1 // Copyright 2014 The ChromeOS IME Authors. All Rights Reserved.
2 // limitations under the License. 2 // limitations under the License.
3 // See the License for the specific language governing permissions and 3 // See the License for the specific language governing permissions and
4 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 4 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
5 // distributed under the License is distributed on an "AS-IS" BASIS, 5 // distributed under the License is distributed on an "AS-IS" BASIS,
6 // Unless required by applicable law or agreed to in writing, software 6 // Unless required by applicable law or agreed to in writing, software
7 // 7 //
8 // http://www.apache.org/licenses/LICENSE-2.0 8 // http://www.apache.org/licenses/LICENSE-2.0
9 // 9 //
10 // You may obtain a copy of the License at 10 // You may obtain a copy of the License at
(...skipping 27 matching lines...) Expand all
38 goog.require('i18n.input.chrome.inputview.Settings'); 38 goog.require('i18n.input.chrome.inputview.Settings');
39 goog.require('i18n.input.chrome.inputview.SizeSpec'); 39 goog.require('i18n.input.chrome.inputview.SizeSpec');
40 goog.require('i18n.input.chrome.inputview.SpecNodeName'); 40 goog.require('i18n.input.chrome.inputview.SpecNodeName');
41 goog.require('i18n.input.chrome.inputview.StateType'); 41 goog.require('i18n.input.chrome.inputview.StateType');
42 goog.require('i18n.input.chrome.inputview.SwipeDirection'); 42 goog.require('i18n.input.chrome.inputview.SwipeDirection');
43 goog.require('i18n.input.chrome.inputview.elements.ElementType'); 43 goog.require('i18n.input.chrome.inputview.elements.ElementType');
44 goog.require('i18n.input.chrome.inputview.elements.content.Candidate'); 44 goog.require('i18n.input.chrome.inputview.elements.content.Candidate');
45 goog.require('i18n.input.chrome.inputview.elements.content.CandidateView'); 45 goog.require('i18n.input.chrome.inputview.elements.content.CandidateView');
46 goog.require('i18n.input.chrome.inputview.elements.content.ExpandedCandidateView '); 46 goog.require('i18n.input.chrome.inputview.elements.content.ExpandedCandidateView ');
47 goog.require('i18n.input.chrome.inputview.elements.content.MenuView'); 47 goog.require('i18n.input.chrome.inputview.elements.content.MenuView');
48 goog.require('i18n.input.chrome.inputview.events.DragEvent');
49 goog.require('i18n.input.chrome.inputview.events.EventType'); 48 goog.require('i18n.input.chrome.inputview.events.EventType');
50 goog.require('i18n.input.chrome.inputview.events.KeyCodes'); 49 goog.require('i18n.input.chrome.inputview.events.KeyCodes');
51 goog.require('i18n.input.chrome.inputview.handler.PointerHandler'); 50 goog.require('i18n.input.chrome.inputview.handler.PointerHandler');
52 goog.require('i18n.input.chrome.inputview.util'); 51 goog.require('i18n.input.chrome.inputview.util');
53 goog.require('i18n.input.chrome.message.ContextType'); 52 goog.require('i18n.input.chrome.message.ContextType');
54 goog.require('i18n.input.chrome.message.Name'); 53 goog.require('i18n.input.chrome.message.Name');
55 goog.require('i18n.input.chrome.message.Type'); 54 goog.require('i18n.input.chrome.message.Type');
56 goog.require('i18n.input.chrome.sounds.SoundController'); 55 goog.require('i18n.input.chrome.sounds.SoundController');
57 goog.require('i18n.input.lang.InputToolCode'); 56 goog.require('i18n.input.lang.InputToolCode');
58 57
59 58
60 59
61 goog.scope(function() { 60 goog.scope(function() {
62 var CandidateType = i18n.input.chrome.inputview.elements.content.Candidate.Type; 61 var CandidateType = i18n.input.chrome.inputview.elements.content.Candidate.Type;
63 var Candidate = i18n.input.chrome.inputview.elements.content.Candidate;
64 var CandidateView = i18n.input.chrome.inputview.elements.content.CandidateView; 62 var CandidateView = i18n.input.chrome.inputview.elements.content.CandidateView;
65 var ConditionName = i18n.input.chrome.inputview.ConditionName; 63 var ConditionName = i18n.input.chrome.inputview.ConditionName;
66 var ContextType = i18n.input.chrome.message.ContextType; 64 var ContextType = i18n.input.chrome.message.ContextType;
67 var Css = i18n.input.chrome.inputview.Css; 65 var Css = i18n.input.chrome.inputview.Css;
68 var ElementType = i18n.input.chrome.inputview.elements.ElementType; 66 var ElementType = i18n.input.chrome.inputview.elements.ElementType;
69 var EventType = i18n.input.chrome.inputview.events.EventType; 67 var EventType = i18n.input.chrome.inputview.events.EventType;
70 var ExpandedCandidateView = i18n.input.chrome.inputview.elements.content. 68 var ExpandedCandidateView = i18n.input.chrome.inputview.elements.content.
71 ExpandedCandidateView; 69 ExpandedCandidateView;
72 var FeatureName = i18n.input.chrome.inputview.FeatureName; 70 var FeatureName = i18n.input.chrome.inputview.FeatureName;
73 var InputToolCode = i18n.input.lang.InputToolCode; 71 var InputToolCode = i18n.input.lang.InputToolCode;
74 var KeyCodes = i18n.input.chrome.inputview.events.KeyCodes; 72 var KeyCodes = i18n.input.chrome.inputview.events.KeyCodes;
75 var MenuView = i18n.input.chrome.inputview.elements.content.MenuView; 73 var MenuView = i18n.input.chrome.inputview.elements.content.MenuView;
76 var Name = i18n.input.chrome.message.Name; 74 var Name = i18n.input.chrome.message.Name;
77 var PerfTracker = i18n.input.chrome.inputview.PerfTracker; 75 var PerfTracker = i18n.input.chrome.inputview.PerfTracker;
78 var SizeSpec = i18n.input.chrome.inputview.SizeSpec; 76 var SizeSpec = i18n.input.chrome.inputview.SizeSpec;
79 var SpecNodeName = i18n.input.chrome.inputview.SpecNodeName; 77 var SpecNodeName = i18n.input.chrome.inputview.SpecNodeName;
80 var StateType = i18n.input.chrome.inputview.StateType; 78 var StateType = i18n.input.chrome.inputview.StateType;
81 var content = i18n.input.chrome.inputview.elements.content;
82 var SoundController = i18n.input.chrome.sounds.SoundController; 79 var SoundController = i18n.input.chrome.sounds.SoundController;
83 var Sounds = i18n.input.chrome.sounds.Sounds;
84 var Type = i18n.input.chrome.message.Type; 80 var Type = i18n.input.chrome.message.Type;
85 var util = i18n.input.chrome.inputview.util; 81 var util = i18n.input.chrome.inputview.util;
86 82
87 83
88 84
89 /** 85 /**
90 * The controller of the input view keyboard. 86 * The controller of the input view keyboard.
91 * 87 *
92 * @param {string} keyset The keyboard keyset. 88 * @param {string} keyset The keyboard keyset.
93 * @param {string} languageCode The language code for this keyboard. 89 * @param {string} languageCode The language code for this keyboard.
(...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after
403 * 399 *
404 * @private {string} 400 * @private {string}
405 */ 401 */
406 Controller.prototype.passwordKeyset_ = ''; 402 Controller.prototype.passwordKeyset_ = '';
407 403
408 404
409 /** 405 /**
410 * The soft key map, because key configuration is loaded before layout, 406 * The soft key map, because key configuration is loaded before layout,
411 * controller needs this varaible to save it and hook into keyboard view. 407 * controller needs this varaible to save it and hook into keyboard view.
412 * 408 *
413 * @type {!Array.<!content.SoftKey>} 409 * @type {!Array.<!i18n.input.chrome.inputview.elements.content.SoftKey>}
414 * @private 410 * @private
415 */ 411 */
416 Controller.prototype.softKeyList_; 412 Controller.prototype.softKeyList_;
417 413
418 414
419 /** 415 /**
420 * The mapping from soft key id to soft key view id. 416 * The mapping from soft key id to soft key view id.
421 * 417 *
422 * @type {!Object.<string, string>} 418 * @type {!Object.<string, string>}
423 * @private 419 * @private
424 */ 420 */
425 Controller.prototype.mapping_; 421 Controller.prototype.mapping_;
426 422
427 423
428 /** 424 /**
429 * The dead key.
430 *
431 * @type {string}
432 * @private
433 */
434 Controller.prototype.deadKey_ = '';
435
436
437 /**
438 * The input tool name. 425 * The input tool name.
439 * 426 *
440 * @type {string} 427 * @type {string}
441 * @private 428 * @private
442 */ 429 */
443 Controller.prototype.title_; 430 Controller.prototype.title_;
444 431
445 432
446 /** 433 /**
447 * Registers event handlers. 434 * Registers event handlers.
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
492 }; 479 };
493 480
494 481
495 /** 482 /**
496 * Handler for voice module state change. 483 * Handler for voice module state change.
497 * 484 *
498 * @param {!i18n.input.chrome.message.Event} e . 485 * @param {!i18n.input.chrome.message.Event} e .
499 * @private 486 * @private
500 */ 487 */
501 Controller.prototype.onVoiceStateChange_ = function(e) { 488 Controller.prototype.onVoiceStateChange_ = function(e) {
502 var elem = this.container_.getElement();
503 if (!e.msg[Name.VOICE_STATE]) { 489 if (!e.msg[Name.VOICE_STATE]) {
504 this.container_.candidateView.switchToIcon( 490 this.container_.candidateView.switchToIcon(
505 CandidateView.IconType.VOICE, true); 491 CandidateView.IconType.VOICE, true);
506 this.container_.voiceView.stop(); 492 this.container_.voiceView.stop();
507 } 493 }
508 }; 494 };
509 495
510 496
511 /** 497 /**
512 * Handles the refresh event from adapter. 498 * Handles the refresh event from adapter.
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
603 } 589 }
604 if (!this.adapter_.features.isEnabled(FeatureName.EXPERIMENTAL) && 590 if (!this.adapter_.features.isEnabled(FeatureName.EXPERIMENTAL) &&
605 keysetMap[ContextType.DEFAULT] == 591 keysetMap[ContextType.DEFAULT] ==
606 'zhuyin.compact.qwerty') { 592 'zhuyin.compact.qwerty') {
607 newKeyset = 'zhuyin'; 593 newKeyset = 'zhuyin';
608 } 594 }
609 if (newKeyset) { 595 if (newKeyset) {
610 this.setDefaultKeyset_(newKeyset); 596 this.setDefaultKeyset_(newKeyset);
611 } 597 }
612 this.container_.selectView.setVisible( 598 this.container_.selectView.setVisible(
613 this.adapter_.features.isEnabled(FeatureName.GESTURE_EDITTING)); 599 this.adapter_.features.isEnabled(FeatureName.GESTURE_SELECTION));
614 // Loads resources in case the default keyset is changed. 600 // Loads resources in case the default keyset is changed.
615 this.loadAllResources_(); 601 this.loadAllResources_();
616 this.maybeCreateViews_(); 602 this.maybeCreateViews_();
617 }; 603 };
618 604
619 605
620 /** 606 /**
621 * Gets the data for spatial module. 607 * Gets the data for spatial module.
622 * 608 *
623 * @param {!content.SoftKey} key . 609 * @param {!i18n.input.chrome.inputview.elements.content.SoftKey} key .
624 * @param {number} x The x-offset of the touch point. 610 * @param {number} x The x-offset of the touch point.
625 * @param {number} y The y-offset of the touch point. 611 * @param {number} y The y-offset of the touch point.
626 * @return {!Object} . 612 * @return {!Object} .
627 * @private 613 * @private
628 */ 614 */
629 Controller.prototype.getSpatialData_ = function(key, x, y) { 615 Controller.prototype.getSpatialData_ = function(key, x, y) {
630 var items = []; 616 var items = [];
631 items.push([this.getKeyContent_(key), key.estimator.estimateInLogSpace(x, y) 617 items.push([this.getKeyContent_(key), key.estimator.estimateInLogSpace(x, y)
632 ]); 618 ]);
633 for (var i = 0; i < key.nearbyKeys.length; i++) { 619 for (var i = 0; i < key.nearbyKeys.length; i++) {
(...skipping 15 matching lines...) Expand all
649 return { 635 return {
650 'sources': sources, 636 'sources': sources,
651 'possibilities': possibilities 637 'possibilities': possibilities
652 }; 638 };
653 }; 639 };
654 640
655 641
656 /** 642 /**
657 * Gets the key content. 643 * Gets the key content.
658 * 644 *
659 * @param {!content.SoftKey} key . 645 * @param {!i18n.input.chrome.inputview.elements.content.SoftKey} key .
660 * @return {string} . 646 * @return {string} .
661 * @private 647 * @private
662 */ 648 */
663 Controller.prototype.getKeyContent_ = function(key) { 649 Controller.prototype.getKeyContent_ = function(key) {
664 if (key.type == i18n.input.chrome.inputview.elements.ElementType. 650 if (key.type == i18n.input.chrome.inputview.elements.ElementType.
665 CHARACTER_KEY) { 651 CHARACTER_KEY) {
666 key = /** @type {!content.CharacterKey} */ (key); 652 key = /** @type {!i18n.input.chrome.inputview.elements.content.
653 CharacterKey} */ (key);
667 return key.getActiveCharacter(); 654 return key.getActiveCharacter();
668 } 655 }
669 if (key.type == i18n.input.chrome.inputview.elements.ElementType. 656 if (key.type == i18n.input.chrome.inputview.elements.ElementType.
670 COMPACT_KEY) { 657 COMPACT_KEY) {
671 key = /** @type {!content.FunctionalKey} */ (key); 658 key = /** @type {!i18n.input.chrome.inputview.elements.content.
659 FunctionalKey} */ (key);
672 return key.text; 660 return key.text;
673 } 661 }
674 return ''; 662 return '';
675 }; 663 };
676 664
677 665
678 /** 666 /**
679 * Callback for pointer event. 667 * Callback for pointer event.
680 * 668 *
681 * @param {!i18n.input.chrome.inputview.events.PointerEvent} e . 669 * @param {!i18n.input.chrome.inputview.events.PointerEvent} e .
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
762 } 750 }
763 if (view.type == ElementType.BACKSPACE_KEY) { 751 if (view.type == ElementType.BACKSPACE_KEY) {
764 if (this.container_.swipeView.isVisible() || 752 if (this.container_.swipeView.isVisible() ||
765 this.container_.swipeView.isArmed()) { 753 this.container_.swipeView.isArmed()) {
766 this.stopBackspaceAutoRepeat_(); 754 this.stopBackspaceAutoRepeat_();
767 return; 755 return;
768 } 756 }
769 } 757 }
770 758
771 if (view.type == ElementType.CHARACTER_KEY) { 759 if (view.type == ElementType.CHARACTER_KEY) {
772 view = /** @type {!content.CharacterKey} */ (view); 760 view = /** @type {!i18n.input.chrome.inputview.elements.content.
761 CharacterKey} */ (view);
773 if (direction & i18n.input.chrome.inputview.SwipeDirection.UP || 762 if (direction & i18n.input.chrome.inputview.SwipeDirection.UP ||
774 direction & i18n.input.chrome.inputview.SwipeDirection.DOWN) { 763 direction & i18n.input.chrome.inputview.SwipeDirection.DOWN) {
775 var ch = view.getCharacterByGesture(!!(direction & 764 var ch = view.getCharacterByGesture(!!(direction &
776 i18n.input.chrome.inputview.SwipeDirection.UP)); 765 i18n.input.chrome.inputview.SwipeDirection.UP));
777 if (ch) { 766 if (ch) {
778 view.flickerredCharacter = ch; 767 view.flickerredCharacter = ch;
779 } 768 }
780 } 769 }
781 } 770 }
782 771
783 if (view.type == ElementType.COMPACT_KEY) { 772 if (view.type == ElementType.COMPACT_KEY) {
784 view = /** @type {!content.CompactKey} */ (view); 773
774 view = /** @type {!i18n.input.chrome.inputview.elements.content.
775 CompactKey} */ (view);
785 if ((direction & i18n.input.chrome.inputview.SwipeDirection.UP) && 776 if ((direction & i18n.input.chrome.inputview.SwipeDirection.UP) &&
786 view.hintText) { 777 view.hintText) {
787 view.flickerredCharacter = view.hintText; 778 view.flickerredCharacter = view.hintText;
788 } 779 }
789 } 780 }
790 }; 781 };
791 782
792 783
793 /** 784 /**
794 * Execute a command. 785 * Execute a command.
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
851 this.container_.gestureCanvasView.startStroke(e); 842 this.container_.gestureCanvasView.startStroke(e);
852 } 843 }
853 844
854 // Listen for DOUBLE_CLICK as well to capture secondary taps on the spacebar. 845 // Listen for DOUBLE_CLICK as well to capture secondary taps on the spacebar.
855 if (e.type == EventType.POINTER_UP || e.type == EventType.DOUBLE_CLICK) { 846 if (e.type == EventType.POINTER_UP || e.type == EventType.DOUBLE_CLICK) {
856 this.recordStatsForClosing_( 847 this.recordStatsForClosing_(
857 'InputMethod.VirtualKeyboard.TapCount', 1, 4095, 4096); 848 'InputMethod.VirtualKeyboard.TapCount', 1, 4095, 4096);
858 } 849 }
859 850
860 if (e.type == EventType.SWIPE) { 851 if (e.type == EventType.SWIPE) {
861 e = /** @type {!i18n.input.chrome.inputview.events.SwipeEvent} */ (e); 852 e = /** @type {!i18n.input.chrome.inputview.events.SwipeEvent} */ (e);
862 this.handleSwipeAction_(view, e); 853 this.handleSwipeAction_(view, e);
863 } 854 }
864 switch (view.type) { 855 switch (view.type) {
865 case ElementType.BACK_BUTTON: 856 case ElementType.BACK_BUTTON:
866 case ElementType.BACK_TO_KEYBOARD: 857 case ElementType.BACK_TO_KEYBOARD:
867 if (e.type == EventType.POINTER_OUT || e.type == EventType.POINTER_UP) { 858 if (e.type == EventType.POINTER_OUT || e.type == EventType.POINTER_UP) {
868 view.setHighlighted(false); 859 view.setHighlighted(false);
869 } else if (e.type == EventType.POINTER_DOWN || 860 } else if (e.type == EventType.POINTER_DOWN ||
870 e.type == EventType.POINTER_OVER) { 861 e.type == EventType.POINTER_OVER) {
871 view.setHighlighted(true); 862 view.setHighlighted(true);
(...skipping 14 matching lines...) Expand all
886 return; 877 return;
887 case ElementType.SHRINK_CANDIDATES: 878 case ElementType.SHRINK_CANDIDATES:
888 if (e.type == EventType.POINTER_UP) { 879 if (e.type == EventType.POINTER_UP) {
889 this.showCandidates_(this.candidatesInfo_.source, 880 this.showCandidates_(this.candidatesInfo_.source,
890 this.candidatesInfo_.candidates, 881 this.candidatesInfo_.candidates,
891 Controller.CandidatesOperation.SHRINK); 882 Controller.CandidatesOperation.SHRINK);
892 this.soundController_.onKeyUp(view.type); 883 this.soundController_.onKeyUp(view.type);
893 } 884 }
894 return; 885 return;
895 case ElementType.CANDIDATE: 886 case ElementType.CANDIDATE:
896 view = /** @type {!Candidate} */ (view); 887 view = /** @type {!i18n.input.chrome.inputview.elements.content.
888 Candidate} */ (view);
897 if (e.type == EventType.POINTER_UP) { 889 if (e.type == EventType.POINTER_UP) {
898 if (view.candidateType == CandidateType.CANDIDATE) { 890 if (view.candidateType == CandidateType.CANDIDATE) {
899 this.adapter_.selectCandidate(view.candidate); 891 this.adapter_.selectCandidate(view.candidate);
900 } else if (view.candidateType == CandidateType.NUMBER) { 892 } else if (view.candidateType == CandidateType.NUMBER) {
901 this.adapter_.commitText(view.candidate[Name.CANDIDATE]); 893 this.adapter_.commitText(view.candidate[Name.CANDIDATE]);
902 } 894 }
903 this.container_.cleanStroke(); 895 this.container_.cleanStroke();
904 this.soundController_.onKeyUp(ElementType.CANDIDATE); 896 this.soundController_.onKeyUp(ElementType.CANDIDATE);
905 } 897 }
906 if (e.type == EventType.POINTER_OUT || e.type == EventType.POINTER_UP) { 898 if (e.type == EventType.POINTER_OUT || e.type == EventType.POINTER_UP) {
907 view.setHighlighted(false); 899 view.setHighlighted(false);
908 } else if (e.type == EventType.POINTER_DOWN || 900 } else if (e.type == EventType.POINTER_DOWN ||
909 e.type == EventType.POINTER_OVER) { 901 e.type == EventType.POINTER_OVER) {
910 view.setHighlighted(true); 902 view.setHighlighted(true);
911 } 903 }
912 return; 904 return;
913 905
914 case ElementType.ALTDATA_VIEW: 906 case ElementType.ALTDATA_VIEW:
915 view = /** @type {!content.AltDataView} */ (view); 907 view = /** @type {!i18n.input.chrome.inputview.elements.content.
908 AltDataView} */ (view);
916 if (e.type == EventType.POINTER_DOWN && 909 if (e.type == EventType.POINTER_DOWN &&
917 e.target == view.getCoverElement()) { 910 e.target == view.getCoverElement()) {
918 view.hide(); 911 view.hide();
919 } else if (e.type == EventType.POINTER_UP) { 912 } else if (e.type == EventType.POINTER_UP) {
920 var ch = view.getHighlightedCharacter(); 913 var ch = view.getHighlightedCharacter();
921 if (ch) { 914 if (ch) {
922 this.adapter_.sendKeyDownAndUpEvent(ch, view.triggeredBy.id, 915 this.adapter_.sendKeyDownAndUpEvent(ch, view.triggeredBy.id,
923 view.triggeredBy.keyCode, 916 view.triggeredBy.keyCode,
924 {'sources': [ch.toLowerCase()], 'possibilities': [1]}); 917 {'sources': [ch.toLowerCase()], 'possibilities': [1]});
925 } 918 }
926 view.hide(); 919 view.hide();
927 this.clearUnstickyState_(); 920 this.clearUnstickyState_();
928 this.soundController_.onKeyUp(view.type); 921 this.soundController_.onKeyUp(view.type);
929 } 922 }
930 return; 923 return;
931 924
932 case ElementType.MENU_ITEM: 925 case ElementType.MENU_ITEM:
933 view = /** @type {!content.MenuItem} */ (view); 926 view = /** @type {!i18n.input.chrome.inputview.elements.content.
927 MenuItem} */ (view);
934 if (e.type == EventType.CLICK) { 928 if (e.type == EventType.CLICK) {
935 this.executeCommand_.apply(this, view.getCommand()); 929 this.executeCommand_.apply(this, view.getCommand());
936 this.container_.menuView.hide(); 930 this.container_.menuView.hide();
937 this.soundController_.onKeyUp(view.type); 931 this.soundController_.onKeyUp(view.type);
938 this.resetAll_(); 932 this.resetAll_();
939 } 933 }
940 view.setHighlighted(e.type == EventType.POINTER_DOWN || 934 view.setHighlighted(e.type == EventType.POINTER_DOWN ||
941 e.type == EventType.POINTER_OVER); 935 e.type == EventType.POINTER_OVER);
942 // TODO: Add chrome vox support. 936 // TODO: Add chrome vox support.
943 return; 937 return;
944 938
945 case ElementType.MENU_VIEW: 939 case ElementType.MENU_VIEW:
946 view = /** @type {!MenuView} */ (view); 940 view = /** @type {!i18n.input.chrome.inputview.elements.content.
941 MenuView} */ (view);
947 942
948 if (e.type == EventType.POINTER_DOWN && 943 if (e.type == EventType.POINTER_DOWN &&
949 e.target == view.getCoverElement()) { 944 e.target == view.getCoverElement()) {
950 view.hide(); 945 view.hide();
951 } 946 }
952 return; 947 return;
953 948
954 case ElementType.EMOJI_KEY: 949 case ElementType.EMOJI_KEY:
955 if (e.type == EventType.CLICK) { 950 if (e.type == EventType.CLICK) {
956 if (!this.container_.currentKeysetView.isDragging && view.text != '') { 951 if (!this.container_.currentKeysetView.isDragging && view.text != '') {
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
1036 // of the key down or up. 1031 // of the key down or up.
1037 if (e.type == EventType.POINTER_OVER || e.type == EventType.POINTER_DOWN || 1032 if (e.type == EventType.POINTER_OVER || e.type == EventType.POINTER_DOWN ||
1038 e.type == EventType.DOUBLE_CLICK) { 1033 e.type == EventType.DOUBLE_CLICK) {
1039 view.setHighlighted(true); 1034 view.setHighlighted(true);
1040 } else if (e.type == EventType.POINTER_OUT || 1035 } else if (e.type == EventType.POINTER_OUT ||
1041 e.type == EventType.POINTER_UP || 1036 e.type == EventType.POINTER_UP ||
1042 e.type == EventType.DOUBLE_CLICK_END) { 1037 e.type == EventType.DOUBLE_CLICK_END) {
1043 view.setHighlighted(false); 1038 view.setHighlighted(false);
1044 } 1039 }
1045 } 1040 }
1046 this.handlePointerEventForSoftKey_( 1041 view = /** @type {!i18n.input.chrome.inputview.elements.content.
1047 /** @type {!content.SoftKey} */ (view), e); 1042 SoftKey} */ (view);
1043 this.handlePointerEventForSoftKey_(view, e);
1048 this.updateContextModifierState_(); 1044 this.updateContextModifierState_();
1049 }; 1045 };
1050 1046
1051 1047
1052 /** 1048 /**
1053 * Handles softkey of the pointer action. 1049 * Handles softkey of the pointer action.
1054 * 1050 *
1055 * @param {!content.SoftKey} softKey . 1051 * @param {!i18n.input.chrome.inputview.elements.content.SoftKey} softKey .
1056 * @param {!i18n.input.chrome.inputview.events.PointerEvent} e . 1052 * @param {!i18n.input.chrome.inputview.events.PointerEvent} e .
1057 * @private 1053 * @private
1058 */ 1054 */
1059 Controller.prototype.handlePointerEventForSoftKey_ = function(softKey, e) { 1055 Controller.prototype.handlePointerEventForSoftKey_ = function(softKey, e) {
1060 var key; 1056 var key;
1061 switch (softKey.type) { 1057 switch (softKey.type) {
1062 case ElementType.CANDIDATES_PAGE_UP: 1058 case ElementType.CANDIDATES_PAGE_UP:
1063 if (e.type == EventType.POINTER_UP) { 1059 if (e.type == EventType.POINTER_UP) {
1064 this.container_.expandedCandidateView.pageUp(); 1060 this.container_.expandedCandidateView.pageUp();
1065 } 1061 }
1066 break; 1062 break;
1067 case ElementType.CANDIDATES_PAGE_DOWN: 1063 case ElementType.CANDIDATES_PAGE_DOWN:
1068 if (e.type == EventType.POINTER_UP) { 1064 if (e.type == EventType.POINTER_UP) {
1069 this.container_.expandedCandidateView.pageDown(); 1065 this.container_.expandedCandidateView.pageDown();
1070 } 1066 }
1071 break; 1067 break;
1072 case ElementType.CHARACTER_KEY: 1068 case ElementType.CHARACTER_KEY:
1073 key = /** @type {!content.CharacterKey} */ (softKey); 1069 key = /** @type {!i18n.input.chrome.inputview.elements.content.
1070 CharacterKey} */ (softKey);
1074 if (e.type == EventType.LONG_PRESS) { 1071 if (e.type == EventType.LONG_PRESS) {
1075 this.container_.altDataView.show( 1072 this.container_.altDataView.show(
1076 key, goog.i18n.bidi.isRtlLanguage(this.languageCode_)); 1073 key, goog.i18n.bidi.isRtlLanguage(this.languageCode_));
1077 } else if (e.type == EventType.POINTER_UP) { 1074 } else if (e.type == EventType.POINTER_UP) {
1078 this.model_.stateManager.triggerChording(); 1075 this.model_.stateManager.triggerChording();
1079 var ch = key.getActiveCharacter(); 1076 var ch = key.getActiveCharacter();
1080 this.adapter_.sendKeyDownAndUpEvent(ch, key.id, key.keyCode, 1077 this.adapter_.sendKeyDownAndUpEvent(ch, key.id, key.keyCode,
1081 this.getSpatialData_(key, e.x, e.y)); 1078 this.getSpatialData_(key, e.x, e.y));
1082 this.clearUnstickyState_(); 1079 this.clearUnstickyState_();
1083 key.flickerredCharacter = ''; 1080 key.flickerredCharacter = '';
1084 } 1081 }
1085 break; 1082 break;
1086 1083
1087 case ElementType.MODIFIER_KEY: 1084 case ElementType.MODIFIER_KEY:
1088 key = /** @type {!content.ModifierKey} */ (softKey); 1085 key = /** @type {!i18n.input.chrome.inputview.elements.content.
1086 ModifierKey} */(softKey);
1089 var isStateEnabled = this.model_.stateManager.hasState(key.toState); 1087 var isStateEnabled = this.model_.stateManager.hasState(key.toState);
1090 var isChording = this.model_.stateManager.isChording(key.toState); 1088 var isChording = this.model_.stateManager.isChording(key.toState);
1091 if (e.type == EventType.POINTER_DOWN) { 1089 if (e.type == EventType.POINTER_DOWN) {
1092 this.changeState_(key.toState, !isStateEnabled, true, false); 1090 this.changeState_(key.toState, !isStateEnabled, true, false);
1093 this.model_.stateManager.setKeyDown(key.toState, true); 1091 this.model_.stateManager.setKeyDown(key.toState, true);
1094 } else if (e.type == EventType.POINTER_UP || e.type == EventType. 1092 } else if (e.type == EventType.POINTER_UP || e.type == EventType.
1095 POINTER_OUT) { 1093 POINTER_OUT) {
1096 if (isChording) { 1094 if (isChording) {
1097 this.changeState_(key.toState, false, false); 1095 this.changeState_(key.toState, false, false);
1098 } else if (key.toState == StateType.CAPSLOCK) { 1096 } else if (key.toState == StateType.CAPSLOCK) {
1099 this.changeState_(key.toState, isStateEnabled, true, true); 1097 this.changeState_(key.toState, isStateEnabled, true, true);
1100 } else if (this.model_.stateManager.isKeyDown(key.toState)) { 1098 } else if (this.model_.stateManager.isKeyDown(key.toState)) {
1101 this.changeState_(key.toState, isStateEnabled, false); 1099 this.changeState_(key.toState, isStateEnabled, false);
1102 } 1100 }
1103 this.model_.stateManager.setKeyDown(key.toState, false); 1101 this.model_.stateManager.setKeyDown(key.toState, false);
1104 } else if (e.type == EventType.DOUBLE_CLICK) { 1102 } else if (e.type == EventType.DOUBLE_CLICK) {
1105 this.changeState_(key.toState, isStateEnabled, true, true); 1103 this.changeState_(key.toState, isStateEnabled, true, true);
1106 } else if (e.type == EventType.LONG_PRESS) { 1104 } else if (e.type == EventType.LONG_PRESS) {
1107 if (!isChording) { 1105 if (!isChording) {
1108 this.changeState_(key.toState, true, true, true); 1106 this.changeState_(key.toState, true, true, true);
1109 this.model_.stateManager.setKeyDown(key.toState, false); 1107 this.model_.stateManager.setKeyDown(key.toState, false);
1110 } 1108 }
1111 } 1109 }
1112 break; 1110 break;
1113 1111
1114 case ElementType.BACKSPACE_KEY: 1112 case ElementType.BACKSPACE_KEY:
1115 key = /** @type {!content.FunctionalKey} */ (softKey); 1113 key = /** @type {!i18n.input.chrome.inputview.elements.content.
1114 FunctionalKey} */(softKey);
1116 if (e.type == EventType.POINTER_DOWN) { 1115 if (e.type == EventType.POINTER_DOWN) {
1117 this.backspaceTick_(); 1116 this.backspaceTick_();
1118 } else if (e.type == EventType.POINTER_UP || e.type == EventType. 1117 } else if (e.type == EventType.POINTER_UP || e.type == EventType.
1119 POINTER_OUT) { 1118 POINTER_OUT) {
1120 if (!this.container_.swipeView.isVisible()) { 1119 if (!this.container_.swipeView.isVisible()) {
1121 this.stopBackspaceAutoRepeat_(); 1120 this.stopBackspaceAutoRepeat_();
1122 } 1121 }
1123 } 1122 }
1124 break; 1123 break;
1125 1124
1126 case ElementType.TAB_KEY: 1125 case ElementType.TAB_KEY:
1127 key = /** @type {!content.FunctionalKey} */ (softKey); 1126 key = /** @type {!i18n.input.chrome.inputview.elements.content.
1127 FunctionalKey} */ (softKey);
1128 if (e.type == EventType.POINTER_DOWN) { 1128 if (e.type == EventType.POINTER_DOWN) {
1129 this.adapter_.sendKeyDownEvent('\u0009', KeyCodes.TAB); 1129 this.adapter_.sendKeyDownEvent('\u0009', KeyCodes.TAB);
1130 } else if (e.type == EventType.POINTER_UP) { 1130 } else if (e.type == EventType.POINTER_UP) {
1131 this.adapter_.sendKeyUpEvent('\u0009', KeyCodes.TAB); 1131 this.adapter_.sendKeyUpEvent('\u0009', KeyCodes.TAB);
1132 } 1132 }
1133 break; 1133 break;
1134 1134
1135 case ElementType.ENTER_KEY: 1135 case ElementType.ENTER_KEY:
1136 key = /** @type {!content.FunctionalKey} */ (softKey); 1136 key = /** @type {!i18n.input.chrome.inputview.elements.content.
1137 FunctionalKey} */ (softKey);
1137 if (e.type == EventType.POINTER_UP) { 1138 if (e.type == EventType.POINTER_UP) {
1138 this.adapter_.sendKeyDownAndUpEvent('\u000D', KeyCodes.ENTER); 1139 this.adapter_.sendKeyDownAndUpEvent('\u000D', KeyCodes.ENTER);
1139 } 1140 }
1140 break; 1141 break;
1141 1142
1142 case ElementType.ARROW_UP: 1143 case ElementType.ARROW_UP:
1143 if (e.type == EventType.POINTER_DOWN) { 1144 if (e.type == EventType.POINTER_DOWN) {
1144 this.adapter_.sendKeyDownEvent('', KeyCodes.ARROW_UP); 1145 this.adapter_.sendKeyDownEvent('', KeyCodes.ARROW_UP);
1145 } else if (e.type == EventType.POINTER_UP) { 1146 } else if (e.type == EventType.POINTER_UP) {
1146 this.adapter_.sendKeyUpEvent('', KeyCodes.ARROW_UP); 1147 this.adapter_.sendKeyUpEvent('', KeyCodes.ARROW_UP);
(...skipping 18 matching lines...) Expand all
1165 1166
1166 case ElementType.ARROW_RIGHT: 1167 case ElementType.ARROW_RIGHT:
1167 if (e.type == EventType.POINTER_DOWN) { 1168 if (e.type == EventType.POINTER_DOWN) {
1168 this.adapter_.sendKeyDownEvent('', KeyCodes.ARROW_RIGHT); 1169 this.adapter_.sendKeyDownEvent('', KeyCodes.ARROW_RIGHT);
1169 } else if (e.type == EventType.POINTER_UP) { 1170 } else if (e.type == EventType.POINTER_UP) {
1170 this.adapter_.sendKeyUpEvent('', KeyCodes.ARROW_RIGHT); 1171 this.adapter_.sendKeyUpEvent('', KeyCodes.ARROW_RIGHT);
1171 } 1172 }
1172 break; 1173 break;
1173 case ElementType.EN_SWITCHER: 1174 case ElementType.EN_SWITCHER:
1174 if (e.type == EventType.POINTER_UP) { 1175 if (e.type == EventType.POINTER_UP) {
1175 key = /** @type {!content.EnSwitcherKey} */ (softKey); 1176 key = /** @type {!i18n.input.chrome.inputview.elements.content.
1177 EnSwitcherKey} */ (softKey);
1176 this.adapter_.toggleLanguageState(this.model_.stateManager.isEnMode); 1178 this.adapter_.toggleLanguageState(this.model_.stateManager.isEnMode);
1177 this.model_.stateManager.isEnMode = !this.model_.stateManager.isEnMode; 1179 this.model_.stateManager.isEnMode = !this.model_.stateManager.isEnMode;
1178 key.update(); 1180 key.update();
1179 } 1181 }
1180 break; 1182 break;
1181 case ElementType.SPACE_KEY: 1183 case ElementType.SPACE_KEY:
1182 key = /** @type {!content.SpaceKey} */ (softKey); 1184 key = /** @type {!i18n.input.chrome.inputview.elements.content.
1185 SpaceKey} */ (softKey);
1183 var doubleSpacePeriod = this.model_.settings.doubleSpacePeriod && 1186 var doubleSpacePeriod = this.model_.settings.doubleSpacePeriod &&
1184 this.currentKeyset_ != Controller.HANDWRITING_VIEW_CODE_ && 1187 this.currentKeyset_ != Controller.HANDWRITING_VIEW_CODE_ &&
1185 this.currentKeyset_ != Controller.EMOJI_VIEW_CODE_; 1188 this.currentKeyset_ != Controller.EMOJI_VIEW_CODE_;
1186 if (e.type == EventType.POINTER_UP || (!doubleSpacePeriod && e.type == 1189 if (e.type == EventType.POINTER_UP || (!doubleSpacePeriod && e.type ==
1187 EventType.DOUBLE_CLICK_END)) { 1190 EventType.DOUBLE_CLICK_END)) {
1188 this.adapter_.sendKeyDownAndUpEvent(key.getCharacter(), 1191 this.adapter_.sendKeyDownAndUpEvent(key.getCharacter(),
1189 KeyCodes.SPACE); 1192 KeyCodes.SPACE);
1190 this.clearUnstickyState_(); 1193 this.clearUnstickyState_();
1191 } else if (e.type == EventType.DOUBLE_CLICK && doubleSpacePeriod) { 1194 } else if (e.type == EventType.DOUBLE_CLICK && doubleSpacePeriod) {
1192 this.adapter_.doubleClickOnSpaceKey(); 1195 this.adapter_.doubleClickOnSpaceKey();
1193 } 1196 }
1194 break; 1197 break;
1195 1198
1196 case ElementType.SWITCHER_KEY: 1199 case ElementType.SWITCHER_KEY:
1197 key = /** @type {!content.SwitcherKey} */ (softKey); 1200 key = /** @type {!i18n.input.chrome.inputview.elements.content.
1201 SwitcherKey} */ (softKey);
1198 if (e.type == EventType.POINTER_UP) { 1202 if (e.type == EventType.POINTER_UP) {
1199 this.recordStatsForClosing_( 1203 this.recordStatsForClosing_(
1200 'InputMethod.VirtualKeyboard.LayoutSwitch', 1, 25, 25); 1204 'InputMethod.VirtualKeyboard.LayoutSwitch', 1, 25, 25);
1201 if (this.isSubKeyset_(key.toKeyset, this.currentKeyset_)) { 1205 if (this.isSubKeyset_(key.toKeyset, this.currentKeyset_)) {
1202 this.model_.stateManager.reset(); 1206 this.model_.stateManager.reset();
1203 this.container_.update(); 1207 this.container_.update();
1204 this.updateContextModifierState_(); 1208 this.updateContextModifierState_();
1205 this.container_.menuView.hide(); 1209 this.container_.menuView.hide();
1206 } else { 1210 } else {
1207 this.resetAll_(); 1211 this.resetAll_();
1208 } 1212 }
1209 // Switch to the specific keyboard. 1213 // Switch to the specific keyboard.
1210 this.switchToKeyset(key.toKeyset); 1214 this.switchToKeyset(key.toKeyset);
1211 if (key.record) { 1215 if (key.record) {
1212 this.model_.settings.savePreference( 1216 this.model_.settings.savePreference(
1213 util.getConfigName(key.toKeyset), 1217 util.getConfigName(key.toKeyset),
1214 key.toKeyset); 1218 key.toKeyset);
1215 } 1219 }
1216 } 1220 }
1217 break; 1221 break;
1218 1222
1219 case ElementType.COMPACT_KEY: 1223 case ElementType.COMPACT_KEY:
1220 key = /** @type {!content.CompactKey} */ (softKey); 1224 key = /** @type {!i18n.input.chrome.inputview.elements.content.
1225 CompactKey} */(softKey);
1221 if (e.type == EventType.LONG_PRESS) { 1226 if (e.type == EventType.LONG_PRESS) {
1222 this.container_.altDataView.show( 1227 this.container_.altDataView.show(
1223 key, goog.i18n.bidi.isRtlLanguage(this.languageCode_)); 1228 key, goog.i18n.bidi.isRtlLanguage(this.languageCode_));
1224 } else if (e.type == EventType.POINTER_UP) { 1229 } else if (e.type == EventType.POINTER_UP) {
1225 this.model_.stateManager.triggerChording(); 1230 this.model_.stateManager.triggerChording();
1226 var ch = key.getActiveCharacter(); 1231 var ch = key.getActiveCharacter();
1227 if (ch.length == 1) { 1232 if (ch.length == 1) {
1228 this.adapter_.sendKeyDownAndUpEvent(key.getActiveCharacter(), '', 0, 1233 this.adapter_.sendKeyDownAndUpEvent(key.getActiveCharacter(), '', 0,
1229 this.getSpatialData_(key, e.x, e.y)); 1234 this.getSpatialData_(key, e.x, e.y));
1230 } else if (ch.length > 1) { 1235 } else if (ch.length > 1) {
(...skipping 11 matching lines...) Expand all
1242 var defaultKeyset = this.getActiveKeyset_(); 1247 var defaultKeyset = this.getActiveKeyset_();
1243 if (e.type == EventType.POINTER_UP) { 1248 if (e.type == EventType.POINTER_UP) {
1244 this.adapter_.hideKeyboard(); 1249 this.adapter_.hideKeyboard();
1245 if (this.currentKeyset_ != defaultKeyset) { 1250 if (this.currentKeyset_ != defaultKeyset) {
1246 this.switchToKeyset(defaultKeyset); 1251 this.switchToKeyset(defaultKeyset);
1247 } 1252 }
1248 } 1253 }
1249 break; 1254 break;
1250 1255
1251 case ElementType.MENU_KEY: 1256 case ElementType.MENU_KEY:
1252 key = /** @type {!content.MenuKey} */ (softKey); 1257 key = /** @type {!i18n.input.chrome.inputview.elements.content.
1258 MenuKey} */ (softKey);
1253 if (e.type == EventType.POINTER_DOWN) { 1259 if (e.type == EventType.POINTER_DOWN) {
1254 var isCompact = this.currentKeyset_.indexOf('compact') != -1; 1260 var isCompact = this.currentKeyset_.indexOf('compact') != -1;
1255 // Gets the default full keyboard instead of default keyset because 1261 // Gets the default full keyboard instead of default keyset because
1256 // the default keyset can be a compact keyset which would cause problem 1262 // the default keyset can be a compact keyset which would cause problem
1257 // in MenuView.show(). 1263 // in MenuView.show().
1258 var defaultFullKeyset = this.initialKeyset_.split(/\./)[0]; 1264 var defaultFullKeyset = this.initialKeyset_.split(/\./)[0];
1259 var enableCompact = !this.adapter_.isA11yMode && goog.array.contains( 1265 var enableCompact = !this.adapter_.isA11yMode && goog.array.contains(
1260 util.KEYSETS_HAVE_COMPACT, defaultFullKeyset); 1266 util.KEYSETS_HAVE_COMPACT, defaultFullKeyset);
1261 if (defaultFullKeyset == 'zhuyin' && 1267 if (defaultFullKeyset == 'zhuyin' &&
1262 !this.adapter_.features.isEnabled(FeatureName.EXPERIMENTAL) || 1268 !this.adapter_.features.isEnabled(FeatureName.EXPERIMENTAL) ||
1263 this.languageCode_ == 'ko') { 1269 this.languageCode_ == 'ko') {
1264 // Hides 'switch to compact' for zhuyin when not in experimental env. 1270 // Hides 'switch to compact' for zhuyin when not in experimental env.
1265 enableCompact = false; 1271 enableCompact = false;
1266 } 1272 }
1267 var self = this;
1268 var hasHwt = !this.adapter_.isPasswordBox() && 1273 var hasHwt = !this.adapter_.isPasswordBox() &&
1269 !Controller.DISABLE_HWT && goog.object.contains( 1274 !Controller.DISABLE_HWT && goog.object.contains(
1270 InputToolCode, this.getHwtInputToolCode_()); 1275 InputToolCode, this.getHwtInputToolCode_());
1271 var hasEmoji = !this.adapter_.isPasswordBox(); 1276 var hasEmoji = !this.adapter_.isPasswordBox();
1272 var enableSettings = this.shouldEnableSettings() && 1277 var enableSettings = this.shouldEnableSettings() &&
1273 !!window.inputview && !!inputview.openSettings; 1278 !!window.inputview && !!inputview.openSettings;
1274 this.adapter_.getInputMethods(function(inputMethods) { 1279 this.adapter_.getInputMethods(function(inputMethods) {
1275 this.container_.menuView.show(key, defaultFullKeyset, isCompact, 1280 this.container_.menuView.show(key, defaultFullKeyset, isCompact,
1276 enableCompact, this.currentInputMethod_, inputMethods, hasHwt, 1281 enableCompact, this.currentInputMethod_, inputMethods, hasHwt,
1277 enableSettings, hasEmoji); 1282 enableSettings, hasEmoji);
1278 }.bind(this)); 1283 }.bind(this));
1279 } 1284 }
1280 break; 1285 break;
1281 1286
1282 case ElementType.GLOBE_KEY: 1287 case ElementType.GLOBE_KEY:
1283 if (e.type == EventType.POINTER_UP) { 1288 if (e.type == EventType.POINTER_UP) {
1284 this.adapter_.clearModifierStates(); 1289 this.adapter_.clearModifierStates();
1285 this.adapter_.setModifierState( 1290 this.adapter_.setModifierState(
1286 i18n.input.chrome.inputview.StateType.CTRL, true); 1291 i18n.input.chrome.inputview.StateType.CTRL, true);
1287 this.adapter_.sendKeyDownAndUpEvent(' ', KeyCodes.SPACE, 0x20); 1292 this.adapter_.sendKeyDownAndUpEvent(' ', KeyCodes.SPACE, 0x20);
1288 this.adapter_.setModifierState( 1293 this.adapter_.setModifierState(
1289 i18n.input.chrome.inputview.StateType.CTRL, false); 1294 i18n.input.chrome.inputview.StateType.CTRL, false);
1290 } 1295 }
1291 break; 1296 break;
1292 case ElementType.IME_SWITCH: 1297 case ElementType.IME_SWITCH:
1293 key = /** @type {!content.FunctionalKey} */ (softKey); 1298 key = /** @type {!i18n.input.chrome.inputview.elements.content.
1299 FunctionalKey} */ (softKey);
1294 this.adapter_.sendKeyDownAndUpEvent('', key.id); 1300 this.adapter_.sendKeyDownAndUpEvent('', key.id);
1295 break; 1301 break;
1296 } 1302 }
1297 // Play key sound on pointer up or double click. 1303 // Play key sound on pointer up or double click.
1298 if (e.type == EventType.POINTER_UP || e.type == EventType.DOUBLE_CLICK) 1304 if (e.type == EventType.POINTER_UP || e.type == EventType.DOUBLE_CLICK)
1299 this.soundController_.onKeyUp(softKey.type); 1305 this.soundController_.onKeyUp(softKey.type);
1300 }; 1306 };
1301 1307
1302 1308
1303 /** 1309 /**
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
1383 * reset modifier state, etc. 1389 * reset modifier state, etc.
1384 * 1390 *
1385 * @private 1391 * @private
1386 */ 1392 */
1387 Controller.prototype.resetAll_ = function() { 1393 Controller.prototype.resetAll_ = function() {
1388 this.clearCandidates_(); 1394 this.clearCandidates_();
1389 this.container_.cleanStroke(); 1395 this.container_.cleanStroke();
1390 this.model_.stateManager.reset(); 1396 this.model_.stateManager.reset();
1391 this.container_.update(); 1397 this.container_.update();
1392 this.updateContextModifierState_(); 1398 this.updateContextModifierState_();
1393 this.deadKey_ = '';
1394 this.resize(); 1399 this.resize();
1395 this.container_.expandedCandidateView.close(); 1400 this.container_.expandedCandidateView.close();
1396 this.container_.menuView.hide(); 1401 this.container_.menuView.hide();
1397 this.container_.swipeView.reset(); 1402 this.container_.swipeView.reset();
1398 this.container_.altDataView.hide(); 1403 this.container_.altDataView.hide();
1399 }; 1404 };
1400 1405
1401 1406
1402 /** 1407 /**
1403 * Returns whether the toolbar should be shown. 1408 * Returns whether the toolbar should be shown.
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
1447 }; 1452 };
1448 1453
1449 1454
1450 /** 1455 /**
1451 * Callback for Context blurs. 1456 * Callback for Context blurs.
1452 * 1457 *
1453 * @private 1458 * @private
1454 */ 1459 */
1455 Controller.prototype.onContextBlur_ = function() { 1460 Controller.prototype.onContextBlur_ = function() {
1456 this.container_.cleanStroke(); 1461 this.container_.cleanStroke();
1457 this.deadKey_ = '';
1458 this.container_.menuView.hide(); 1462 this.container_.menuView.hide();
1459 }; 1463 };
1460 1464
1461 1465
1462 /** 1466 /**
1463 * Backspace key is down. 1467 * Backspace key is down.
1464 * 1468 *
1465 * @private 1469 * @private
1466 */ 1470 */
1467 Controller.prototype.backspaceDown_ = function() { 1471 Controller.prototype.backspaceDown_ = function() {
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
1725 * Switch to a specific keyboard. 1729 * Switch to a specific keyboard.
1726 * 1730 *
1727 * @param {string} keyset The keyset name. 1731 * @param {string} keyset The keyset name.
1728 */ 1732 */
1729 Controller.prototype.switchToKeyset = function(keyset) { 1733 Controller.prototype.switchToKeyset = function(keyset) {
1730 if (!this.isSettingReady || this.adapter_.isSwitching()) { 1734 if (!this.isSettingReady || this.adapter_.isSwitching()) {
1731 return; 1735 return;
1732 } 1736 }
1733 1737
1734 var contextType = this.adapter_.contextType; 1738 var contextType = this.adapter_.contextType;
1735 var lastKeysetView = this.container_.currentKeysetView;
1736 var ret = this.container_.switchToKeyset(this.getRemappedKeyset_(keyset), 1739 var ret = this.container_.switchToKeyset(this.getRemappedKeyset_(keyset),
1737 this.title_, this.adapter_.isPasswordBox(), this.adapter_.isA11yMode, 1740 this.title_, this.adapter_.isPasswordBox(), this.adapter_.isA11yMode,
1738 keyset, this.contextTypeToLastKeysetMap_[contextType] || 1741 keyset, this.contextTypeToLastKeysetMap_[contextType] ||
1739 this.getActiveKeyset_(), this.languageCode_); 1742 this.getActiveKeyset_(), this.languageCode_);
1740 1743
1741 if (ret) { 1744 if (ret) {
1742 if (!this.isSubKeyset_(this.currentKeyset_, keyset) && 1745 if (!this.isSubKeyset_(this.currentKeyset_, keyset) &&
1743 keyset != Controller.EMOJI_VIEW_CODE_) { 1746 keyset != Controller.EMOJI_VIEW_CODE_) {
1744 // If it is the sub keyset switching, or emoji, don't record it. 1747 // If it is the sub keyset switching, or emoji, don't record it.
1745 // Update the keyset of current context type. 1748 // Update the keyset of current context type.
(...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after
2113 toKeyset = this.currentKeyset_.replace('compact', 'en.compact'); 2116 toKeyset = this.currentKeyset_.replace('compact', 'en.compact');
2114 } 2117 }
2115 } 2118 }
2116 if (toKeyset) { 2119 if (toKeyset) {
2117 this.resetAll_(); 2120 this.resetAll_();
2118 this.switchToKeyset(toKeyset); 2121 this.switchToKeyset(toKeyset);
2119 } 2122 }
2120 } 2123 }
2121 }; 2124 };
2122 }); // goog.scope 2125 }); // goog.scope
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698