| OLD | NEW |
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 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 UI.GlassPane = class { | 5 UI.GlassPane = class { |
| 6 constructor() { | 6 constructor() { |
| 7 this._widget = new UI.Widget(true); | 7 this._widget = new UI.Widget(true); |
| 8 this._widget.markAsRoot(); | 8 this._widget.markAsRoot(); |
| 9 this.element = this._widget.element; | 9 this.element = this._widget.element; |
| 10 this.contentElement = this._widget.contentElement; | 10 this.contentElement = this._widget.contentElement; |
| (...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 227 } | 227 } |
| 228 } else { | 228 } else { |
| 229 height = Math.min(height, spaceBottom); | 229 height = Math.min(height, spaceBottom); |
| 230 } | 230 } |
| 231 this._arrowElement.setIconType('mediumicon-arrow-top'); | 231 this._arrowElement.setIconType('mediumicon-arrow-top'); |
| 232 this._arrowElement.classList.add('arrow-top'); | 232 this._arrowElement.classList.add('arrow-top'); |
| 233 arrowY = anchorBox.y + anchorBox.height + gutterSize; | 233 arrowY = anchorBox.y + anchorBox.height + gutterSize; |
| 234 } | 234 } |
| 235 | 235 |
| 236 positionX = Math.max(gutterSize, Math.min(anchorBox.x, containerWidth -
width - gutterSize)); | 236 positionX = Math.max(gutterSize, Math.min(anchorBox.x, containerWidth -
width - gutterSize)); |
| 237 if (this._showArrow && positionX - arrowSize >= gutterSize) |
| 238 positionX -= arrowSize; |
| 237 width = Math.min(width, containerWidth - positionX - gutterSize); | 239 width = Math.min(width, containerWidth - positionX - gutterSize); |
| 238 if (2 * arrowSize >= width) { | 240 if (2 * arrowSize >= width) { |
| 239 this._arrowElement.classList.add('arrow-none'); | 241 this._arrowElement.classList.add('arrow-none'); |
| 240 } else { | 242 } else { |
| 241 var arrowX = anchorBox.x + Math.min(50, Math.floor(anchorBox.width / 2
)); | 243 var arrowX = anchorBox.x + Math.min(50, Math.floor(anchorBox.width / 2
)); |
| 242 arrowX = Number.constrain(arrowX, positionX + arrowSize, positionX + w
idth - arrowSize); | 244 arrowX = Number.constrain(arrowX, positionX + arrowSize, positionX + w
idth - arrowSize); |
| 243 this._arrowElement.positionAt(arrowX, arrowY, container); | 245 this._arrowElement.positionAt(arrowX, arrowY, container); |
| 244 } | 246 } |
| 245 } else { | 247 } else { |
| 246 var left = anchorBox.x - 2 * gutterSize; | 248 var left = anchorBox.x - 2 * gutterSize; |
| (...skipping 30 matching lines...) Expand all Loading... |
| 277 } | 279 } |
| 278 } else { | 280 } else { |
| 279 width = Math.min(width, spaceRight); | 281 width = Math.min(width, spaceRight); |
| 280 } | 282 } |
| 281 this._arrowElement.setIconType('mediumicon-arrow-left'); | 283 this._arrowElement.setIconType('mediumicon-arrow-left'); |
| 282 this._arrowElement.classList.add('arrow-left'); | 284 this._arrowElement.classList.add('arrow-left'); |
| 283 arrowX = anchorBox.x + anchorBox.width + gutterSize; | 285 arrowX = anchorBox.x + anchorBox.width + gutterSize; |
| 284 } | 286 } |
| 285 | 287 |
| 286 positionY = Math.max(gutterSize, Math.min(anchorBox.y, containerHeight -
height - gutterSize)); | 288 positionY = Math.max(gutterSize, Math.min(anchorBox.y, containerHeight -
height - gutterSize)); |
| 289 if (this._showArrow && positionY - arrowSize >= gutterSize) |
| 290 positionY -= arrowSize; |
| 287 height = Math.min(height, containerHeight - positionY - gutterSize); | 291 height = Math.min(height, containerHeight - positionY - gutterSize); |
| 288 if (2 * arrowSize >= height) { | 292 if (2 * arrowSize >= height) { |
| 289 this._arrowElement.classList.add('arrow-none'); | 293 this._arrowElement.classList.add('arrow-none'); |
| 290 } else { | 294 } else { |
| 291 var arrowY = anchorBox.y + Math.min(50, Math.floor(anchorBox.height /
2)); | 295 var arrowY = anchorBox.y + Math.min(50, Math.floor(anchorBox.height /
2)); |
| 292 arrowY = Number.constrain(arrowY, positionY + arrowSize, positionY + h
eight - arrowSize); | 296 arrowY = Number.constrain(arrowY, positionY + arrowSize, positionY + h
eight - arrowSize); |
| 293 this._arrowElement.positionAt(arrowX, arrowY, container); | 297 this._arrowElement.positionAt(arrowX, arrowY, container); |
| 294 } | 298 } |
| 295 } | 299 } |
| 296 } else { | 300 } else { |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 369 SetExactSize: Symbol('SetExactSize'), | 373 SetExactSize: Symbol('SetExactSize'), |
| 370 SetMaxSize: Symbol('SetMaxSize'), | 374 SetMaxSize: Symbol('SetMaxSize'), |
| 371 SetExactWidthMaxHeight: Symbol('SetExactWidthMaxHeight'), | 375 SetExactWidthMaxHeight: Symbol('SetExactWidthMaxHeight'), |
| 372 MeasureContent: Symbol('MeasureContent') | 376 MeasureContent: Symbol('MeasureContent') |
| 373 }; | 377 }; |
| 374 | 378 |
| 375 /** @type {!Map<!Document, !Element>} */ | 379 /** @type {!Map<!Document, !Element>} */ |
| 376 UI.GlassPane._containers = new Map(); | 380 UI.GlassPane._containers = new Map(); |
| 377 /** @type {!Set<!UI.GlassPane>} */ | 381 /** @type {!Set<!UI.GlassPane>} */ |
| 378 UI.GlassPane._panes = new Set(); | 382 UI.GlassPane._panes = new Set(); |
| OLD | NEW |