OLD | NEW |
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 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
82 | 82 |
83 /** | 83 /** |
84 * Event handler for previous mousedown or touchstart target. | 84 * Event handler for previous mousedown or touchstart target. |
85 * | 85 * |
86 * @private {i18n.input.chrome.inputview.handler.PointerActionBundle} | 86 * @private {i18n.input.chrome.inputview.handler.PointerActionBundle} |
87 */ | 87 */ |
88 PointerHandler.prototype.previousPointerActionBundle_ = null; | 88 PointerHandler.prototype.previousPointerActionBundle_ = null; |
89 | 89 |
90 | 90 |
91 /** | 91 /** |
| 92 * Pointer action bundle for mouse down. |
| 93 * This is used in mouse up handler because mouse up event may have different |
| 94 * target than the mouse down event. |
| 95 * |
| 96 * @private {i18n.input.chrome.inputview.handler.PointerActionBundle} |
| 97 */ |
| 98 PointerHandler.prototype.pointerActionBundleForMouseDown_ = null; |
| 99 |
| 100 |
| 101 /** |
92 * Creates a new pointer handler. | 102 * Creates a new pointer handler. |
93 * | 103 * |
94 * @param {!Node} target . | 104 * @param {!Node} target . |
95 * @return {!i18n.input.chrome.inputview.handler.PointerActionBundle} . | 105 * @return {!i18n.input.chrome.inputview.handler.PointerActionBundle} . |
96 * @private | 106 * @private |
97 */ | 107 */ |
98 PointerHandler.prototype.createPointerActionBundle_ = function(target) { | 108 PointerHandler.prototype.createPointerActionBundle_ = function(target) { |
99 var uid = goog.getUid(target); | 109 var uid = goog.getUid(target); |
100 if (!this.pointerActionBundles_[uid]) { | 110 if (!this.pointerActionBundles_[uid]) { |
101 this.pointerActionBundles_[uid] = new i18n.input.chrome.inputview.handler. | 111 this.pointerActionBundles_[uid] = new i18n.input.chrome.inputview.handler. |
(...skipping 13 matching lines...) Expand all Loading... |
115 var pointerActionBundle = this.createPointerActionBundle_( | 125 var pointerActionBundle = this.createPointerActionBundle_( |
116 /** @type {!Node} */ (e.target)); | 126 /** @type {!Node} */ (e.target)); |
117 if (this.previousPointerActionBundle_ && | 127 if (this.previousPointerActionBundle_ && |
118 this.previousPointerActionBundle_ != pointerActionBundle) { | 128 this.previousPointerActionBundle_ != pointerActionBundle) { |
119 this.previousPointerActionBundle_.cancelDoubleClick(); | 129 this.previousPointerActionBundle_.cancelDoubleClick(); |
120 } | 130 } |
121 this.previousPointerActionBundle_ = pointerActionBundle; | 131 this.previousPointerActionBundle_ = pointerActionBundle; |
122 pointerActionBundle.handlePointerDown(e); | 132 pointerActionBundle.handlePointerDown(e); |
123 if (e.type == goog.events.EventType.MOUSEDOWN) { | 133 if (e.type == goog.events.EventType.MOUSEDOWN) { |
124 this.mouseDownTick_ = new Date(); | 134 this.mouseDownTick_ = new Date(); |
| 135 this.pointerActionBundleForMouseDown_ = pointerActionBundle; |
125 } | 136 } |
126 }; | 137 }; |
127 | 138 |
128 | 139 |
129 /** | 140 /** |
130 * Callback for pointer out. | 141 * Callback for pointer out. |
131 * | 142 * |
132 * @param {!goog.events.BrowserEvent} e The event. | 143 * @param {!goog.events.BrowserEvent} e The event. |
133 * @private | 144 * @private |
134 */ | 145 */ |
135 PointerHandler.prototype.onPointerUp_ = function(e) { | 146 PointerHandler.prototype.onPointerUp_ = function(e) { |
136 if (e.type == goog.events.EventType.MOUSEUP) { | 147 if (e.type == goog.events.EventType.MOUSEUP) { |
137 // If mouseup happens too fast after mousedown, it may be a tap action on | 148 // If mouseup happens too fast after mousedown, it may be a tap action on |
138 // touchpad, so delay the pointer up action so user can see the visual | 149 // touchpad, so delay the pointer up action so user can see the visual |
139 // flash. | 150 // flash. |
140 if (this.mouseDownTick_ && new Date() - this.mouseDownTick_ < 10) { | 151 if (this.mouseDownTick_ && new Date() - this.mouseDownTick_ < 10) { |
141 goog.Timer.callOnce(this.onPointerUp_.bind(this, e), 50); | 152 goog.Timer.callOnce(this.onPointerUp_.bind(this, e), 50); |
142 return; | 153 return; |
143 } | 154 } |
| 155 if (this.pointerActionBundleForMouseDown_) { |
| 156 this.pointerActionBundleForMouseDown_.handlePointerUp(e); |
| 157 this.pointerActionBundleForMouseDown_ = null; |
| 158 return; |
| 159 } |
144 } | 160 } |
145 var uid = goog.getUid(e.target); | 161 var uid = goog.getUid(e.target); |
146 var pointerActionBundle = this.pointerActionBundles_[uid]; | 162 var pointerActionBundle = this.pointerActionBundles_[uid]; |
147 if (pointerActionBundle) { | 163 if (pointerActionBundle) { |
148 pointerActionBundle.handlePointerUp(e); | 164 pointerActionBundle.handlePointerUp(e); |
149 } | 165 } |
150 }; | 166 }; |
151 | 167 |
152 | 168 |
153 /** | 169 /** |
(...skipping 21 matching lines...) Expand all Loading... |
175 PointerHandler.prototype.disposeInternal = function() { | 191 PointerHandler.prototype.disposeInternal = function() { |
176 for (var bundle in this.pointerActionBundles_) { | 192 for (var bundle in this.pointerActionBundles_) { |
177 goog.dispose(bundle); | 193 goog.dispose(bundle); |
178 } | 194 } |
179 goog.dispose(this.eventHandler_); | 195 goog.dispose(this.eventHandler_); |
180 | 196 |
181 goog.base(this, 'disposeInternal'); | 197 goog.base(this, 'disposeInternal'); |
182 }; | 198 }; |
183 | 199 |
184 }); // goog.scope | 200 }); // goog.scope |
OLD | NEW |