| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 29 */ | 29 */ |
| 30 | 30 |
| 31 /** | 31 /** |
| 32 * @unrestricted | 32 * @unrestricted |
| 33 */ | 33 */ |
| 34 UI.OverviewGrid = class { | 34 PerfUI.OverviewGrid = class { |
| 35 /** | 35 /** |
| 36 * @param {string} prefix | 36 * @param {string} prefix |
| 37 */ | 37 */ |
| 38 constructor(prefix) { | 38 constructor(prefix) { |
| 39 this.element = createElement('div'); | 39 this.element = createElement('div'); |
| 40 this.element.id = prefix + '-overview-container'; | 40 this.element.id = prefix + '-overview-container'; |
| 41 | 41 |
| 42 this._grid = new UI.TimelineGrid(); | 42 this._grid = new PerfUI.TimelineGrid(); |
| 43 this._grid.element.id = prefix + '-overview-grid'; | 43 this._grid.element.id = prefix + '-overview-grid'; |
| 44 this._grid.setScrollTop(0); | 44 this._grid.setScrollTop(0); |
| 45 | 45 |
| 46 this.element.appendChild(this._grid.element); | 46 this.element.appendChild(this._grid.element); |
| 47 | 47 |
| 48 this._window = new UI.OverviewGrid.Window(this.element, this._grid.dividersL
abelBarElement); | 48 this._window = new PerfUI.OverviewGrid.Window(this.element, this._grid.divid
ersLabelBarElement); |
| 49 } | 49 } |
| 50 | 50 |
| 51 /** | 51 /** |
| 52 * @return {number} | 52 * @return {number} |
| 53 */ | 53 */ |
| 54 clientWidth() { | 54 clientWidth() { |
| 55 return this.element.clientWidth; | 55 return this.element.clientWidth; |
| 56 } | 56 } |
| 57 | 57 |
| 58 /** | 58 /** |
| 59 * @param {!UI.TimelineGrid.Calculator} calculator | 59 * @param {!PerfUI.TimelineGrid.Calculator} calculator |
| 60 */ | 60 */ |
| 61 updateDividers(calculator) { | 61 updateDividers(calculator) { |
| 62 this._grid.updateDividers(calculator); | 62 this._grid.updateDividers(calculator); |
| 63 } | 63 } |
| 64 | 64 |
| 65 /** | 65 /** |
| 66 * @param {!Array.<!Element>} dividers | 66 * @param {!Array.<!Element>} dividers |
| 67 */ | 67 */ |
| 68 addEventDividers(dividers) { | 68 addEventDividers(dividers) { |
| 69 this._grid.addEventDividers(dividers); | 69 this._grid.addEventDividers(dividers); |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 125 } | 125 } |
| 126 | 126 |
| 127 /** | 127 /** |
| 128 * @param {boolean} enabled | 128 * @param {boolean} enabled |
| 129 */ | 129 */ |
| 130 setResizeEnabled(enabled) { | 130 setResizeEnabled(enabled) { |
| 131 this._window.setEnabled(enabled); | 131 this._window.setEnabled(enabled); |
| 132 } | 132 } |
| 133 }; | 133 }; |
| 134 | 134 |
| 135 UI.OverviewGrid.MinSelectableSize = 14; | 135 PerfUI.OverviewGrid.MinSelectableSize = 14; |
| 136 | 136 |
| 137 UI.OverviewGrid.WindowScrollSpeedFactor = .3; | 137 PerfUI.OverviewGrid.WindowScrollSpeedFactor = .3; |
| 138 | 138 |
| 139 UI.OverviewGrid.ResizerOffset = 3.5; // half pixel because offset values are no
t rounded but ceiled | 139 PerfUI.OverviewGrid.ResizerOffset = 3.5; // half pixel because offset values ar
e not rounded but ceiled |
| 140 | 140 |
| 141 /** | 141 /** |
| 142 * @unrestricted | 142 * @unrestricted |
| 143 */ | 143 */ |
| 144 UI.OverviewGrid.Window = class extends Common.Object { | 144 PerfUI.OverviewGrid.Window = class extends Common.Object { |
| 145 /** | 145 /** |
| 146 * @param {!Element} parentElement | 146 * @param {!Element} parentElement |
| 147 * @param {!Element=} dividersLabelBarElement | 147 * @param {!Element=} dividersLabelBarElement |
| 148 */ | 148 */ |
| 149 constructor(parentElement, dividersLabelBarElement) { | 149 constructor(parentElement, dividersLabelBarElement) { |
| 150 super(); | 150 super(); |
| 151 this._parentElement = parentElement; | 151 this._parentElement = parentElement; |
| 152 | 152 |
| 153 UI.installDragHandle( | 153 UI.installDragHandle( |
| 154 this._parentElement, this._startWindowSelectorDragging.bind(this), this.
_windowSelectorDragging.bind(this), | 154 this._parentElement, this._startWindowSelectorDragging.bind(this), this.
_windowSelectorDragging.bind(this), |
| 155 this._endWindowSelectorDragging.bind(this), 'text', null); | 155 this._endWindowSelectorDragging.bind(this), 'text', null); |
| 156 if (dividersLabelBarElement) { | 156 if (dividersLabelBarElement) { |
| 157 UI.installDragHandle( | 157 UI.installDragHandle( |
| 158 dividersLabelBarElement, this._startWindowDragging.bind(this), this._w
indowDragging.bind(this), null, | 158 dividersLabelBarElement, this._startWindowDragging.bind(this), this._w
indowDragging.bind(this), null, |
| 159 '-webkit-grabbing', '-webkit-grab'); | 159 '-webkit-grabbing', '-webkit-grab'); |
| 160 } | 160 } |
| 161 | 161 |
| 162 this._parentElement.addEventListener('mousewheel', this._onMouseWheel.bind(t
his), true); | 162 this._parentElement.addEventListener('mousewheel', this._onMouseWheel.bind(t
his), true); |
| 163 this._parentElement.addEventListener('dblclick', this._resizeWindowMaximum.b
ind(this), true); | 163 this._parentElement.addEventListener('dblclick', this._resizeWindowMaximum.b
ind(this), true); |
| 164 UI.appendStyle(this._parentElement, 'ui_lazy/overviewGrid.css'); | 164 UI.appendStyle(this._parentElement, 'perf_ui/overviewGrid.css'); |
| 165 | 165 |
| 166 this._leftResizeElement = parentElement.createChild('div', 'overview-grid-wi
ndow-resizer'); | 166 this._leftResizeElement = parentElement.createChild('div', 'overview-grid-wi
ndow-resizer'); |
| 167 UI.installDragHandle( | 167 UI.installDragHandle( |
| 168 this._leftResizeElement, this._resizerElementStartDragging.bind(this), | 168 this._leftResizeElement, this._resizerElementStartDragging.bind(this), |
| 169 this._leftResizeElementDragging.bind(this), null, 'ew-resize'); | 169 this._leftResizeElementDragging.bind(this), null, 'ew-resize'); |
| 170 this._rightResizeElement = parentElement.createChild('div', 'overview-grid-w
indow-resizer'); | 170 this._rightResizeElement = parentElement.createChild('div', 'overview-grid-w
indow-resizer'); |
| 171 UI.installDragHandle( | 171 UI.installDragHandle( |
| 172 this._rightResizeElement, this._resizerElementStartDragging.bind(this), | 172 this._rightResizeElement, this._resizerElementStartDragging.bind(this), |
| 173 this._rightResizeElementDragging.bind(this), null, 'ew-resize'); | 173 this._rightResizeElementDragging.bind(this), null, 'ew-resize'); |
| 174 | 174 |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 227 | 227 |
| 228 /** | 228 /** |
| 229 * @param {!Event} event | 229 * @param {!Event} event |
| 230 * @return {boolean} | 230 * @return {boolean} |
| 231 */ | 231 */ |
| 232 _startWindowSelectorDragging(event) { | 232 _startWindowSelectorDragging(event) { |
| 233 if (!this._enabled) | 233 if (!this._enabled) |
| 234 return false; | 234 return false; |
| 235 this._offsetLeft = this._parentElement.totalOffsetLeft(); | 235 this._offsetLeft = this._parentElement.totalOffsetLeft(); |
| 236 var position = event.x - this._offsetLeft; | 236 var position = event.x - this._offsetLeft; |
| 237 this._overviewWindowSelector = new UI.OverviewGrid.WindowSelector(this._pare
ntElement, position); | 237 this._overviewWindowSelector = new PerfUI.OverviewGrid.WindowSelector(this._
parentElement, position); |
| 238 return true; | 238 return true; |
| 239 } | 239 } |
| 240 | 240 |
| 241 /** | 241 /** |
| 242 * @param {!Event} event | 242 * @param {!Event} event |
| 243 */ | 243 */ |
| 244 _windowSelectorDragging(event) { | 244 _windowSelectorDragging(event) { |
| 245 this._overviewWindowSelector._updatePosition(event.x - this._offsetLeft); | 245 this._overviewWindowSelector._updatePosition(event.x - this._offsetLeft); |
| 246 event.preventDefault(); | 246 event.preventDefault(); |
| 247 } | 247 } |
| 248 | 248 |
| 249 /** | 249 /** |
| 250 * @param {!Event} event | 250 * @param {!Event} event |
| 251 */ | 251 */ |
| 252 _endWindowSelectorDragging(event) { | 252 _endWindowSelectorDragging(event) { |
| 253 var window = this._overviewWindowSelector._close(event.x - this._offsetLeft)
; | 253 var window = this._overviewWindowSelector._close(event.x - this._offsetLeft)
; |
| 254 delete this._overviewWindowSelector; | 254 delete this._overviewWindowSelector; |
| 255 var clickThreshold = 3; | 255 var clickThreshold = 3; |
| 256 if (window.end - window.start < clickThreshold) { | 256 if (window.end - window.start < clickThreshold) { |
| 257 if (this._clickHandler && this._clickHandler.call(null, event)) | 257 if (this._clickHandler && this._clickHandler.call(null, event)) |
| 258 return; | 258 return; |
| 259 var middle = window.end; | 259 var middle = window.end; |
| 260 window.start = Math.max(0, middle - UI.OverviewGrid.MinSelectableSize / 2)
; | 260 window.start = Math.max(0, middle - PerfUI.OverviewGrid.MinSelectableSize
/ 2); |
| 261 window.end = Math.min(this._parentElement.clientWidth, middle + UI.Overvie
wGrid.MinSelectableSize / 2); | 261 window.end = Math.min(this._parentElement.clientWidth, middle + PerfUI.Ove
rviewGrid.MinSelectableSize / 2); |
| 262 } else if (window.end - window.start < UI.OverviewGrid.MinSelectableSize) { | 262 } else if (window.end - window.start < PerfUI.OverviewGrid.MinSelectableSize
) { |
| 263 if (this._parentElement.clientWidth - window.end > UI.OverviewGrid.MinSele
ctableSize) | 263 if (this._parentElement.clientWidth - window.end > PerfUI.OverviewGrid.Min
SelectableSize) |
| 264 window.end = window.start + UI.OverviewGrid.MinSelectableSize; | 264 window.end = window.start + PerfUI.OverviewGrid.MinSelectableSize; |
| 265 else | 265 else |
| 266 window.start = window.end - UI.OverviewGrid.MinSelectableSize; | 266 window.start = window.end - PerfUI.OverviewGrid.MinSelectableSize; |
| 267 } | 267 } |
| 268 this._setWindowPosition(window.start, window.end); | 268 this._setWindowPosition(window.start, window.end); |
| 269 } | 269 } |
| 270 | 270 |
| 271 /** | 271 /** |
| 272 * @param {!Event} event | 272 * @param {!Event} event |
| 273 * @return {boolean} | 273 * @return {boolean} |
| 274 */ | 274 */ |
| 275 _startWindowDragging(event) { | 275 _startWindowDragging(event) { |
| 276 this._dragStartPoint = event.pageX; | 276 this._dragStartPoint = event.pageX; |
| (...skipping 30 matching lines...) Expand all Loading... |
| 307 this._setWindowPosition(start, null); | 307 this._setWindowPosition(start, null); |
| 308 } | 308 } |
| 309 | 309 |
| 310 /** | 310 /** |
| 311 * @param {number} end | 311 * @param {number} end |
| 312 */ | 312 */ |
| 313 _resizeWindowRight(end) { | 313 _resizeWindowRight(end) { |
| 314 // Glue to edge. | 314 // Glue to edge. |
| 315 if (end > this._parentElement.clientWidth - 10) | 315 if (end > this._parentElement.clientWidth - 10) |
| 316 end = this._parentElement.clientWidth; | 316 end = this._parentElement.clientWidth; |
| 317 else if (end < this._leftResizeElement.offsetLeft + UI.OverviewGrid.MinSelec
tableSize) | 317 else if (end < this._leftResizeElement.offsetLeft + PerfUI.OverviewGrid.MinS
electableSize) |
| 318 end = this._leftResizeElement.offsetLeft + UI.OverviewGrid.MinSelectableSi
ze; | 318 end = this._leftResizeElement.offsetLeft + PerfUI.OverviewGrid.MinSelectab
leSize; |
| 319 this._setWindowPosition(null, end); | 319 this._setWindowPosition(null, end); |
| 320 } | 320 } |
| 321 | 321 |
| 322 _resizeWindowMaximum() { | 322 _resizeWindowMaximum() { |
| 323 this._setWindowPosition(0, this._parentElement.clientWidth); | 323 this._setWindowPosition(0, this._parentElement.clientWidth); |
| 324 } | 324 } |
| 325 | 325 |
| 326 /** | 326 /** |
| 327 * @param {number} windowLeft | 327 * @param {number} windowLeft |
| 328 * @param {number} windowRight | 328 * @param {number} windowRight |
| 329 */ | 329 */ |
| 330 _setWindow(windowLeft, windowRight) { | 330 _setWindow(windowLeft, windowRight) { |
| 331 this.windowLeft = windowLeft; | 331 this.windowLeft = windowLeft; |
| 332 this.windowRight = windowRight; | 332 this.windowRight = windowRight; |
| 333 this._updateCurtains(); | 333 this._updateCurtains(); |
| 334 this.dispatchEventToListeners(UI.OverviewGrid.Events.WindowChanged); | 334 this.dispatchEventToListeners(PerfUI.OverviewGrid.Events.WindowChanged); |
| 335 } | 335 } |
| 336 | 336 |
| 337 _updateCurtains() { | 337 _updateCurtains() { |
| 338 var left = this.windowLeft; | 338 var left = this.windowLeft; |
| 339 var right = this.windowRight; | 339 var right = this.windowRight; |
| 340 var width = right - left; | 340 var width = right - left; |
| 341 | 341 |
| 342 // We allow actual time window to be arbitrarily small but don't want the UI
window to be too small. | 342 // We allow actual time window to be arbitrarily small but don't want the UI
window to be too small. |
| 343 var widthInPixels = width * this._parentElement.clientWidth; | 343 var widthInPixels = width * this._parentElement.clientWidth; |
| 344 var minWidthInPixels = UI.OverviewGrid.MinSelectableSize / 2; | 344 var minWidthInPixels = PerfUI.OverviewGrid.MinSelectableSize / 2; |
| 345 if (widthInPixels < minWidthInPixels) { | 345 if (widthInPixels < minWidthInPixels) { |
| 346 var factor = minWidthInPixels / widthInPixels; | 346 var factor = minWidthInPixels / widthInPixels; |
| 347 left = ((this.windowRight + this.windowLeft) - width * factor) / 2; | 347 left = ((this.windowRight + this.windowLeft) - width * factor) / 2; |
| 348 right = ((this.windowRight + this.windowLeft) + width * factor) / 2; | 348 right = ((this.windowRight + this.windowLeft) + width * factor) / 2; |
| 349 } | 349 } |
| 350 this._leftResizeElement.style.left = (100 * left).toFixed(2) + '%'; | 350 this._leftResizeElement.style.left = (100 * left).toFixed(2) + '%'; |
| 351 this._rightResizeElement.style.left = (100 * right).toFixed(2) + '%'; | 351 this._rightResizeElement.style.left = (100 * right).toFixed(2) + '%'; |
| 352 | 352 |
| 353 this._leftCurtainElement.style.width = (100 * left).toFixed(2) + '%'; | 353 this._leftCurtainElement.style.width = (100 * left).toFixed(2) + '%'; |
| 354 this._rightCurtainElement.style.width = (100 * (1 - right)).toFixed(2) + '%'
; | 354 this._rightCurtainElement.style.width = (100 * (1 - right)).toFixed(2) + '%'
; |
| (...skipping 17 matching lines...) Expand all Loading... |
| 372 if (!this._enabled) | 372 if (!this._enabled) |
| 373 return; | 373 return; |
| 374 if (typeof event.wheelDeltaY === 'number' && event.wheelDeltaY) { | 374 if (typeof event.wheelDeltaY === 'number' && event.wheelDeltaY) { |
| 375 const zoomFactor = 1.1; | 375 const zoomFactor = 1.1; |
| 376 const mouseWheelZoomSpeed = 1 / 120; | 376 const mouseWheelZoomSpeed = 1 / 120; |
| 377 | 377 |
| 378 var reference = event.offsetX / event.target.clientWidth; | 378 var reference = event.offsetX / event.target.clientWidth; |
| 379 this._zoom(Math.pow(zoomFactor, -event.wheelDeltaY * mouseWheelZoomSpeed),
reference); | 379 this._zoom(Math.pow(zoomFactor, -event.wheelDeltaY * mouseWheelZoomSpeed),
reference); |
| 380 } | 380 } |
| 381 if (typeof event.wheelDeltaX === 'number' && event.wheelDeltaX) { | 381 if (typeof event.wheelDeltaX === 'number' && event.wheelDeltaX) { |
| 382 var offset = Math.round(event.wheelDeltaX * UI.OverviewGrid.WindowScrollSp
eedFactor); | 382 var offset = Math.round(event.wheelDeltaX * PerfUI.OverviewGrid.WindowScro
llSpeedFactor); |
| 383 var windowLeft = this._leftResizeElement.offsetLeft + UI.OverviewGrid.Resi
zerOffset; | 383 var windowLeft = this._leftResizeElement.offsetLeft + PerfUI.OverviewGrid.
ResizerOffset; |
| 384 var windowRight = this._rightResizeElement.offsetLeft + UI.OverviewGrid.Re
sizerOffset; | 384 var windowRight = this._rightResizeElement.offsetLeft + PerfUI.OverviewGri
d.ResizerOffset; |
| 385 | 385 |
| 386 if (windowLeft - offset < 0) | 386 if (windowLeft - offset < 0) |
| 387 offset = windowLeft; | 387 offset = windowLeft; |
| 388 | 388 |
| 389 if (windowRight - offset > this._parentElement.clientWidth) | 389 if (windowRight - offset > this._parentElement.clientWidth) |
| 390 offset = windowRight - this._parentElement.clientWidth; | 390 offset = windowRight - this._parentElement.clientWidth; |
| 391 | 391 |
| 392 this._setWindowPosition(windowLeft - offset, windowRight - offset); | 392 this._setWindowPosition(windowLeft - offset, windowRight - offset); |
| 393 | 393 |
| 394 event.preventDefault(); | 394 event.preventDefault(); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 411 left = reference + (left - reference) * factor; | 411 left = reference + (left - reference) * factor; |
| 412 left = Number.constrain(left, 0, 1 - newWindowSize); | 412 left = Number.constrain(left, 0, 1 - newWindowSize); |
| 413 | 413 |
| 414 right = reference + (right - reference) * factor; | 414 right = reference + (right - reference) * factor; |
| 415 right = Number.constrain(right, newWindowSize, 1); | 415 right = Number.constrain(right, newWindowSize, 1); |
| 416 this._setWindow(left, right); | 416 this._setWindow(left, right); |
| 417 } | 417 } |
| 418 }; | 418 }; |
| 419 | 419 |
| 420 /** @enum {symbol} */ | 420 /** @enum {symbol} */ |
| 421 UI.OverviewGrid.Events = { | 421 PerfUI.OverviewGrid.Events = { |
| 422 WindowChanged: Symbol('WindowChanged') | 422 WindowChanged: Symbol('WindowChanged') |
| 423 }; | 423 }; |
| 424 | 424 |
| 425 /** | 425 /** |
| 426 * @unrestricted | 426 * @unrestricted |
| 427 */ | 427 */ |
| 428 UI.OverviewGrid.WindowSelector = class { | 428 PerfUI.OverviewGrid.WindowSelector = class { |
| 429 constructor(parent, position) { | 429 constructor(parent, position) { |
| 430 this._startPosition = position; | 430 this._startPosition = position; |
| 431 this._width = parent.offsetWidth; | 431 this._width = parent.offsetWidth; |
| 432 this._windowSelector = createElement('div'); | 432 this._windowSelector = createElement('div'); |
| 433 this._windowSelector.className = 'overview-grid-window-selector'; | 433 this._windowSelector.className = 'overview-grid-window-selector'; |
| 434 this._windowSelector.style.left = this._startPosition + 'px'; | 434 this._windowSelector.style.left = this._startPosition + 'px'; |
| 435 this._windowSelector.style.right = this._width - this._startPosition + 'px'; | 435 this._windowSelector.style.right = this._width - this._startPosition + 'px'; |
| 436 parent.appendChild(this._windowSelector); | 436 parent.appendChild(this._windowSelector); |
| 437 } | 437 } |
| 438 | 438 |
| 439 _close(position) { | 439 _close(position) { |
| 440 position = Math.max(0, Math.min(position, this._width)); | 440 position = Math.max(0, Math.min(position, this._width)); |
| 441 this._windowSelector.remove(); | 441 this._windowSelector.remove(); |
| 442 return this._startPosition < position ? {start: this._startPosition, end: po
sition} : | 442 return this._startPosition < position ? {start: this._startPosition, end: po
sition} : |
| 443 {start: position, end: this._startPo
sition}; | 443 {start: position, end: this._startPo
sition}; |
| 444 } | 444 } |
| 445 | 445 |
| 446 _updatePosition(position) { | 446 _updatePosition(position) { |
| 447 position = Math.max(0, Math.min(position, this._width)); | 447 position = Math.max(0, Math.min(position, this._width)); |
| 448 if (position < this._startPosition) { | 448 if (position < this._startPosition) { |
| 449 this._windowSelector.style.left = position + 'px'; | 449 this._windowSelector.style.left = position + 'px'; |
| 450 this._windowSelector.style.right = this._width - this._startPosition + 'px
'; | 450 this._windowSelector.style.right = this._width - this._startPosition + 'px
'; |
| 451 } else { | 451 } else { |
| 452 this._windowSelector.style.left = this._startPosition + 'px'; | 452 this._windowSelector.style.left = this._startPosition + 'px'; |
| 453 this._windowSelector.style.right = this._width - position + 'px'; | 453 this._windowSelector.style.right = this._width - position + 'px'; |
| 454 } | 454 } |
| 455 } | 455 } |
| 456 }; | 456 }; |
| OLD | NEW |