OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 /** | 5 /** |
6 * @fileoverview A JavaScript class for walking lines consisting of one or more | 6 * @fileoverview A JavaScript class for walking lines consisting of one or more |
7 * clickable nodes. | 7 * clickable nodes. |
8 */ | 8 */ |
9 | 9 |
10 | 10 |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
146 if (this.wantsOwnLine_(lSel.end.node) || | 146 if (this.wantsOwnLine_(lSel.end.node) || |
147 this.wantsOwnLine_(rSel.start.node)) { | 147 this.wantsOwnLine_(rSel.start.node)) { |
148 return true; | 148 return true; |
149 } | 149 } |
150 var lRect = lSel.getRange().getBoundingClientRect(); | 150 var lRect = lSel.getRange().getBoundingClientRect(); |
151 var rRect = rSel.getRange().getBoundingClientRect(); | 151 var rRect = rSel.getRange().getBoundingClientRect(); |
152 | 152 |
153 // Some ranges from the browser give us 0-sized rects (such as in the case of | 153 // Some ranges from the browser give us 0-sized rects (such as in the case of |
154 // select's). Detect these cases and use a more reliable method (take the | 154 // select's). Detect these cases and use a more reliable method (take the |
155 // bounding rect of the actual element rather than the range). | 155 // bounding rect of the actual element rather than the range). |
156 if (lRect.width == 0 && | 156 if (lRect.width == 0 && lRect.height == 0 && |
157 lRect.height == 0 && | |
158 lSel.end.node.nodeType == Node.ELEMENT_NODE) { | 157 lSel.end.node.nodeType == Node.ELEMENT_NODE) { |
159 lRect = lSel.end.node.getBoundingClientRect(); | 158 lRect = lSel.end.node.getBoundingClientRect(); |
160 } | 159 } |
161 | 160 |
162 if (rRect.width == 0 && | 161 if (rRect.width == 0 && rRect.height == 0 && |
163 rRect.height == 0 && | |
164 rSel.start.node.nodeType == Node.ELEMENT_NODE) { | 162 rSel.start.node.nodeType == Node.ELEMENT_NODE) { |
165 rRect = rSel.start.node.getBoundingClientRect(); | 163 rRect = rSel.start.node.getBoundingClientRect(); |
166 } | 164 } |
167 return lRect.bottom != rRect.bottom; | 165 return lRect.bottom != rRect.bottom; |
168 }; | 166 }; |
169 | 167 |
170 | 168 |
171 /** | 169 /** |
172 * Determines if node should force a line break. | 170 * Determines if node should force a line break. |
173 * This is used for elements with unusual semantics, such as multi-line | 171 * This is used for elements with unusual semantics, such as multi-line |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
239 if (sel && cur.absEquals(sel)) { | 237 if (sel && cur.absEquals(sel)) { |
240 if (valueSelectionSpan) { | 238 if (valueSelectionSpan) { |
241 braille.startIndex = nodeStart + item.getSpanStart(valueSelectionSpan); | 239 braille.startIndex = nodeStart + item.getSpanStart(valueSelectionSpan); |
242 braille.endIndex = nodeStart + item.getSpanEnd(valueSelectionSpan); | 240 braille.endIndex = nodeStart + item.getSpanEnd(valueSelectionSpan); |
243 } else { | 241 } else { |
244 braille.startIndex = nodeStart; | 242 braille.startIndex = nodeStart; |
245 braille.endIndex = nodeStart + 1; | 243 braille.endIndex = nodeStart + 1; |
246 } | 244 } |
247 } | 245 } |
248 }; | 246 }; |
OLD | NEW |