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 * @constructor | 6 * @constructor |
7 * @extends {WebInspector.HBox} | 7 * @extends {WebInspector.HBox} |
8 */ | 8 */ |
9 WebInspector.ElementsBreadcrumbs = function() | 9 WebInspector.ElementsBreadcrumbs = function() |
10 { | 10 { |
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
215 | 215 |
216 // Find the focused crumb index. | 216 // Find the focused crumb index. |
217 if (crumb === focusedCrumb) | 217 if (crumb === focusedCrumb) |
218 focusedIndex = i; | 218 focusedIndex = i; |
219 | 219 |
220 crumb.classList.remove("compact", "collapsed", "hidden"); | 220 crumb.classList.remove("compact", "collapsed", "hidden"); |
221 } | 221 } |
222 | 222 |
223 // Layout 1: Measure total and normal crumb sizes | 223 // Layout 1: Measure total and normal crumb sizes |
224 var contentElementWidth = this.contentElement.offsetWidth; | 224 var contentElementWidth = this.contentElement.offsetWidth; |
225 var margin = parseInt(window.getComputedStyle(/** @type {!Element} */(cr
umbs.firstChild)).marginLeft, 10) * 2; | |
226 var normalSizes = []; | 225 var normalSizes = []; |
227 for (var i = 0; i < crumbs.childNodes.length; ++i) { | 226 for (var i = 0; i < crumbs.childNodes.length; ++i) { |
228 var crumb = crumbs.childNodes[i]; | 227 var crumb = crumbs.childNodes[i]; |
229 normalSizes[i] = crumb.offsetWidth + margin; | 228 normalSizes[i] = crumb.offsetWidth; |
230 } | 229 } |
231 | 230 |
232 // Layout 2: Measure collapsed crumb sizes | 231 // Layout 2: Measure collapsed crumb sizes |
233 var compactSizes = []; | 232 var compactSizes = []; |
234 for (var i = 0; i < crumbs.childNodes.length; ++i) { | 233 for (var i = 0; i < crumbs.childNodes.length; ++i) { |
235 var crumb = crumbs.childNodes[i]; | 234 var crumb = crumbs.childNodes[i]; |
236 crumb.classList.add("compact"); | 235 crumb.classList.add("compact"); |
237 } | 236 } |
238 for (var i = 0; i < crumbs.childNodes.length; ++i) { | 237 for (var i = 0; i < crumbs.childNodes.length; ++i) { |
239 var crumb = crumbs.childNodes[i]; | 238 var crumb = crumbs.childNodes[i]; |
240 compactSizes[i] = crumb.offsetWidth + margin; | 239 compactSizes[i] = crumb.offsetWidth; |
241 } | 240 } |
242 | 241 |
243 // Layout 3: Measure collapsed crumb size | 242 // Layout 3: Measure collapsed crumb size |
244 crumbs.firstChild.classList.add("collapsed"); | 243 crumbs.firstChild.classList.add("collapsed"); |
245 var collapsedSize = crumbs.firstChild.offsetWidth + margin; | 244 var collapsedSize = crumbs.firstChild.offsetWidth; |
246 | 245 |
247 // Clean up. | 246 // Clean up. |
248 for (var i = 0; i < crumbs.childNodes.length; ++i) { | 247 for (var i = 0; i < crumbs.childNodes.length; ++i) { |
249 var crumb = crumbs.childNodes[i]; | 248 var crumb = crumbs.childNodes[i]; |
250 crumb.classList.remove("compact", "collapsed"); | 249 crumb.classList.remove("compact", "collapsed"); |
251 } | 250 } |
252 | 251 |
253 function crumbsAreSmallerThanContainer() | 252 function crumbsAreSmallerThanContainer() |
254 { | 253 { |
255 var totalSize = 0; | 254 var totalSize = 0; |
256 for (var i = 0; i < crumbs.childNodes.length; ++i) { | 255 for (var i = 0; i < crumbs.childNodes.length; ++i) { |
257 var crumb = crumbs.childNodes[i]; | 256 var crumb = crumbs.childNodes[i]; |
258 if (crumb.classList.contains("hidden")) | 257 if (crumb.classList.contains("hidden")) |
259 continue; | 258 continue; |
260 if (crumb.classList.contains("collapsed")) { | 259 if (crumb.classList.contains("collapsed")) { |
261 totalSize += collapsedSize; | 260 totalSize += collapsedSize; |
262 continue; | 261 continue; |
263 } | 262 } |
264 totalSize += crumb.classList.contains("compact") ? compactSizes[
i] : normalSizes[i]; | 263 totalSize += crumb.classList.contains("compact") ? compactSizes[
i] : normalSizes[i]; |
265 } | 264 } |
266 const rightPadding = 4; | 265 const rightPadding = 10; |
267 return totalSize + rightPadding < contentElementWidth; | 266 return totalSize + rightPadding < contentElementWidth; |
268 } | 267 } |
269 | 268 |
270 if (crumbsAreSmallerThanContainer()) | 269 if (crumbsAreSmallerThanContainer()) |
271 return; // No need to compact the crumbs, they all fit at full size. | 270 return; // No need to compact the crumbs, they all fit at full size. |
272 | 271 |
273 var BothSides = 0; | 272 var BothSides = 0; |
274 var AncestorSide = -1; | 273 var AncestorSide = -1; |
275 var ChildSide = 1; | 274 var ChildSide = 1; |
276 | 275 |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
428 compact(selectedCrumb); | 427 compact(selectedCrumb); |
429 if (crumbsAreSmallerThanContainer()) | 428 if (crumbsAreSmallerThanContainer()) |
430 return; | 429 return; |
431 | 430 |
432 // Collapse the selected crumb as a last resort. Pass true to prevent co
alescing. | 431 // Collapse the selected crumb as a last resort. Pass true to prevent co
alescing. |
433 collapse(selectedCrumb, true); | 432 collapse(selectedCrumb, true); |
434 }, | 433 }, |
435 | 434 |
436 __proto__: WebInspector.HBox.prototype | 435 __proto__: WebInspector.HBox.prototype |
437 } | 436 } |
OLD | NEW |