| Index: third_party/google_input_tools/src/chrome/os/inputview/elements/content/swipeview.js
|
| diff --git a/third_party/google_input_tools/src/chrome/os/inputview/elements/content/swipeview.js b/third_party/google_input_tools/src/chrome/os/inputview/elements/content/swipeview.js
|
| index 069dc7ef342777ea9e01002573a3ddeee8404f5b..91ba8c7901c8430691a281b5dbd9b8f2a6f48361 100644
|
| --- a/third_party/google_input_tools/src/chrome/os/inputview/elements/content/swipeview.js
|
| +++ b/third_party/google_input_tools/src/chrome/os/inputview/elements/content/swipeview.js
|
| @@ -13,12 +13,8 @@
|
| //
|
| goog.provide('i18n.input.chrome.inputview.elements.content.SwipeView');
|
|
|
| -goog.require('goog.array');
|
| -goog.require('goog.dom');
|
| goog.require('goog.dom.TagName');
|
| goog.require('goog.dom.classlist');
|
| -goog.require('goog.events.EventType');
|
| -goog.require('goog.math.Coordinate');
|
| goog.require('goog.style');
|
| goog.require('i18n.input.chrome.inputview.Accents');
|
| goog.require('i18n.input.chrome.inputview.Css');
|
| @@ -31,7 +27,6 @@ goog.require('i18n.input.chrome.inputview.handler.PointerHandler');
|
| goog.require('i18n.input.chrome.inputview.util');
|
| goog.require('i18n.input.chrome.message.ContextType');
|
|
|
| -
|
| goog.scope(function() {
|
| var ContextType = i18n.input.chrome.message.ContextType;
|
| var Css = i18n.input.chrome.inputview.Css;
|
| @@ -42,6 +37,7 @@ var content = i18n.input.chrome.inputview.elements.content;
|
| var util = i18n.input.chrome.inputview.util;
|
|
|
|
|
| +
|
| /**
|
| * The view for alt data.
|
| *
|
| @@ -62,7 +58,6 @@ i18n.input.chrome.inputview.elements.content.SwipeView = function(
|
| */
|
| this.adapter_ = adapter;
|
|
|
| -
|
| /**
|
| * The swipe elements.
|
| *
|
| @@ -71,13 +66,6 @@ i18n.input.chrome.inputview.elements.content.SwipeView = function(
|
| this.trackElements_ = [];
|
|
|
| /**
|
| - * The window that shows the swipe field.
|
| - *
|
| - * @private {Object}
|
| - */
|
| - this.trackWindow_ = null;
|
| -
|
| - /**
|
| * The text before the current focus.
|
| *
|
| * @private {string}
|
| @@ -108,8 +96,7 @@ i18n.input.chrome.inputview.elements.content.SwipeView = function(
|
| /**
|
| * The pointer handler.
|
| *
|
| - * @type {!i18n.input.chrome.inputview.handler.PointerHandler}
|
| - * @private
|
| + * @private {!i18n.input.chrome.inputview.handler.PointerHandler}
|
| */
|
| this.pointerHandler_ = new i18n.input.chrome.inputview.handler.
|
| PointerHandler();
|
| @@ -123,8 +110,8 @@ var SwipeView = i18n.input.chrome.inputview.elements.content.SwipeView;
|
| /**
|
| * The number of swipe elements.
|
| *
|
| - * @type {number}
|
| - * @private
|
| + * @private {number}
|
| + * @const
|
| */
|
| SwipeView.LENGTH_ = 7;
|
|
|
| @@ -133,8 +120,8 @@ SwipeView.LENGTH_ = 7;
|
| * Index of highlighted accent. Use this index to represent no highlighted
|
| * accent.
|
| *
|
| - * @type {number}
|
| - * @private
|
| + * @private {number}
|
| + * @const
|
| */
|
| SwipeView.INVALIDINDEX_ = -1;
|
|
|
| @@ -143,19 +130,45 @@ SwipeView.INVALIDINDEX_ = -1;
|
| * The distance between finger to track view which will cancel the track
|
| * view.
|
| *
|
| - * @type {number}
|
| - * @private
|
| + * @private {number}
|
| + * @const
|
| */
|
| SwipeView.FINGER_DISTANCE_TO_CANCEL_SWIPE_ = 20;
|
|
|
|
|
| /**
|
| + * The width of a regular track segment.
|
| + *
|
| + * @private {number}
|
| + * @const
|
| + */
|
| +SwipeView.SEGMENT_WIDTH_ = 70;
|
| +
|
| +
|
| +/**
|
| + * The width of a large track segment
|
| + *
|
| + * @private {number}
|
| + * @const
|
| + */
|
| +SwipeView.LARGE_SEGMENT_WIDTH_ = 100;
|
| +
|
| +
|
| +/**
|
| + * The maximum surrounding text length that's provided.
|
| + *
|
| + * @private {number}
|
| + * @const
|
| + */
|
| +SwipeView.MAX_SURROUNDING_TEXT_LENGTH_ = 100;
|
| +
|
| +
|
| +/**
|
| * The cover element.
|
| * Note: The reason we use a separate cover element instead of the view is
|
| * because of the opacity. We can not reassign the opacity in child element.
|
| *
|
| - * @type {!Element}
|
| - * @private
|
| + * @private {!Element}
|
| */
|
| SwipeView.prototype.coverElement_;
|
|
|
| @@ -163,8 +176,7 @@ SwipeView.prototype.coverElement_;
|
| /**
|
| * The index of the alternative element which is highlighted.
|
| *
|
| - * @type {number}
|
| - * @private
|
| + * @private {number}
|
| */
|
| SwipeView.prototype.highlightIndex_ = SwipeView.INVALIDINDEX_;
|
|
|
| @@ -180,8 +192,7 @@ SwipeView.prototype.triggeredBy;
|
| /**
|
| * Whether finger movement is being tracked.
|
| *
|
| - * @type {boolean}
|
| - * @private
|
| + * @private {boolean}
|
| */
|
| SwipeView.prototype.tracking_ = false;
|
|
|
| @@ -189,8 +200,7 @@ SwipeView.prototype.tracking_ = false;
|
| /**
|
| * Whether to deploy the tracker on swipe events.
|
| *
|
| - * @type {boolean}
|
| - * @private
|
| + * @private {boolean}
|
| */
|
| SwipeView.prototype.armed_ = false;
|
|
|
| @@ -240,14 +250,14 @@ SwipeView.prototype.onSurroundingTextChanged_ = function(e) {
|
| this.deletedWords_.push(lastDelete.slice(1));
|
| }
|
| }
|
| - } else if (e.text.length == 100 || oldText.length == 100) {
|
| + } else if (e.text.length == SwipeView.MAX_SURROUNDING_TEXT_LENGTH_ ||
|
| + oldText.length == SwipeView.MAX_SURROUNDING_TEXT_LENGTH_) {
|
| // Check if a word was deleted from oldText.
|
| - var candidate = oldText.trim().split(' ').pop();
|
| - if (util.isPossibleDelete(oldText, text, candidate)) {
|
| - var location = oldText.lastIndexOf(candidate);
|
| - var intersectingText = oldText.slice(0, location);
|
| - diff = oldText.slice(location);
|
| - }
|
| + var candidate = oldText.trim().split(' ').pop();
|
| + if (util.isPossibleDelete(oldText, text, candidate)) {
|
| + var location = oldText.lastIndexOf(candidate);
|
| + diff = oldText.slice(location);
|
| + }
|
| } else {
|
| diff = oldText.substring(text.length);
|
| }
|
| @@ -285,8 +295,9 @@ SwipeView.prototype.handleSwipeAction_ = function(e) {
|
| // Swiped right, cancel the deletion.
|
| if (direction & i18n.input.chrome.inputview.SwipeDirection.RIGHT) {
|
| word = this.deletedWords_.pop();
|
| - if (word)
|
| - this.adapter_.commitText(word);
|
| + if (word) {
|
| + this.adapter_.commitText(word);
|
| + }
|
| }
|
| }
|
| return;
|
| @@ -297,7 +308,7 @@ SwipeView.prototype.handleSwipeAction_ = function(e) {
|
| '\u0008', KeyCodes.BACKSPACE, undefined, undefined, {
|
| ctrl: true,
|
| shift: false
|
| - });
|
| + });
|
| } else if (direction & i18n.input.chrome.inputview.SwipeDirection.RIGHT) {
|
| var word = this.deletedWords_.pop();
|
| if (word)
|
| @@ -341,14 +352,14 @@ SwipeView.prototype.handleSwipeAction_ = function(e) {
|
| // Do not move carat at all, as this will either have no effect or cause
|
| // us to splice the word.
|
| if (!selectWord) {
|
| - return;
|
| + return;
|
| }
|
| }
|
| this.adapter_.sendKeyDownAndUpEvent(
|
| '', code, undefined, undefined, {
|
| - ctrl: selectWord,
|
| - shift: selectWord
|
| - });
|
| + ctrl: selectWord,
|
| + shift: selectWord
|
| + });
|
| return;
|
| }
|
| return;
|
| @@ -422,6 +433,7 @@ SwipeView.prototype.handlePointerAction_ = function(e) {
|
| }
|
| };
|
|
|
| +
|
| /** @override */
|
| SwipeView.prototype.createDom = function() {
|
| goog.base(this, 'createDom');
|
| @@ -442,17 +454,17 @@ SwipeView.prototype.createDom = function() {
|
| SwipeView.prototype.enterDocument = function() {
|
| goog.base(this, 'enterDocument');
|
| this.getHandler().
|
| - listen(this.adapter_,
|
| - i18n.input.chrome.inputview.events.EventType.
|
| - SURROUNDING_TEXT_CHANGED,
|
| - this.onSurroundingTextChanged_).
|
| - listen(this.pointerHandler_, [
|
| - EventType.SWIPE], this.handleSwipeAction_).
|
| - listen(this.pointerHandler_, [
|
| - EventType.LONG_PRESS,
|
| - EventType.POINTER_UP,
|
| - EventType.POINTER_DOWN,
|
| - EventType.POINTER_OUT], this.handlePointerAction_);
|
| + listen(this.adapter_,
|
| + i18n.input.chrome.inputview.events.EventType.
|
| + SURROUNDING_TEXT_CHANGED,
|
| + this.onSurroundingTextChanged_).
|
| + listen(this.pointerHandler_, [
|
| + EventType.SWIPE], this.handleSwipeAction_).
|
| + listen(this.pointerHandler_, [
|
| + EventType.LONG_PRESS,
|
| + EventType.POINTER_UP,
|
| + EventType.POINTER_DOWN,
|
| + EventType.POINTER_OUT], this.handlePointerAction_);
|
| goog.style.setElementShown(this.getElement(), false);
|
| };
|
|
|
| @@ -582,14 +594,14 @@ SwipeView.prototype.showDeletionTrack = function(key) {
|
| var coordinate = goog.style.getClientPosition(key.getElement());
|
| if (key.type == ElementType.BACKSPACE_KEY) {
|
| this.showDeletionTrack_(
|
| - coordinate.x + key.availableWidth,
|
| - coordinate.y,
|
| - 70,
|
| - key.availableHeight,
|
| - key.availableWidth,
|
| - 100,
|
| - undefined,
|
| - Css.BACKSPACE_ICON);
|
| + coordinate.x + key.availableWidth,
|
| + coordinate.y,
|
| + SwipeView.SEGMENT_WIDTH_,
|
| + key.availableHeight,
|
| + key.availableWidth,
|
| + SwipeView.LARGE_SEGMENT_WIDTH_,
|
| + undefined,
|
| + Css.BACKSPACE_ICON);
|
| }
|
| };
|
|
|
| @@ -602,13 +614,15 @@ SwipeView.prototype.showDeletionTrack = function(key) {
|
| */
|
| SwipeView.prototype.showSelectionTrack = function(x, y) {
|
| var ltr = x <= (screen.width / 2);
|
| -
|
| + // Center track on finger but force containment.
|
| + var width = Math.max(y - (SwipeView.SEGMENT_WIDTH_ / 2),
|
| + SwipeView.SEGMENT_WIDTH_ / 2);
|
| this.showSelectionTrack_(
|
| - ltr ? 0 : screen.width,
|
| - Math.max(y - 35, 35), // Center track on finger press but force containment.
|
| - 70,
|
| - 70,
|
| - x > (screen.width / 2) ? '<' : '>');
|
| + ltr ? 0 : screen.width,
|
| + width,
|
| + SwipeView.SEGMENT_WIDTH_,
|
| + SwipeView.SEGMENT_WIDTH_,
|
| + x > (screen.width / 2) ? '<' : '>');
|
| };
|
|
|
|
|
|
|