Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2012 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 * 1. Redistributions of source code must retain the above copyright | 8 * 1. 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 * | 10 * |
| (...skipping 368 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 379 this._showMode = showMode; | 379 this._showMode = showMode; |
| 380 this._saveShowModeToSettings(); | 380 this._saveShowModeToSettings(); |
| 381 this._updateShowHideSidebarButton(); | 381 this._updateShowHideSidebarButton(); |
| 382 this.dispatchEventToListeners(WebInspector.SplitView.Events.ShowModeChan ged, showMode); | 382 this.dispatchEventToListeners(WebInspector.SplitView.Events.ShowModeChan ged, showMode); |
| 383 this.invalidateMinimumSize(); | 383 this.invalidateMinimumSize(); |
| 384 }, | 384 }, |
| 385 | 385 |
| 386 /** | 386 /** |
| 387 * @param {number} size | 387 * @param {number} size |
| 388 * @param {boolean} animate | 388 * @param {boolean} animate |
| 389 * @param {boolean=} userAction | |
| 389 */ | 390 */ |
| 390 _innerSetSidebarSize: function(size, animate) | 391 _innerSetSidebarSize: function(size, animate, userAction) |
| 391 { | 392 { |
| 392 if (this._showMode !== WebInspector.SplitView.ShowMode.Both || !this.isS howing()) | 393 if (this._showMode !== WebInspector.SplitView.ShowMode.Both || !this.isS howing()) |
| 393 return; | 394 return; |
| 394 | 395 |
| 395 size = this._applyConstraints(size); | 396 size = this._applyConstraints(size, userAction); |
| 396 if (this._sidebarSize === size) | 397 if (this._sidebarSize === size) |
| 397 return; | 398 return; |
| 398 | 399 |
| 399 this._removeAllLayoutProperties(); | 400 this._removeAllLayoutProperties(); |
| 400 | 401 |
| 401 var sizeValue = (size / WebInspector.zoomManager.zoomFactor()) + "px"; | 402 var sizeValue = (size / WebInspector.zoomManager.zoomFactor()) + "px"; |
| 402 this.sidebarElement().style.flexBasis = sizeValue; | 403 this.sidebarElement().style.flexBasis = sizeValue; |
| 403 | 404 |
| 404 if (!this._resizerElementSize) | 405 if (!this._resizerElementSize) |
| 405 this._resizerElementSize = this._isVertical ? this._resizerElement.o ffsetWidth : this._resizerElement.offsetHeight; | 406 this._resizerElementSize = this._isVertical ? this._resizerElement.o ffsetWidth : this._resizerElement.offsetHeight; |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 510 delete this._animationFrameHandle; | 511 delete this._animationFrameHandle; |
| 511 } | 512 } |
| 512 if (this._animationCallback) { | 513 if (this._animationCallback) { |
| 513 this._animationCallback(); | 514 this._animationCallback(); |
| 514 delete this._animationCallback; | 515 delete this._animationCallback; |
| 515 } | 516 } |
| 516 }, | 517 }, |
| 517 | 518 |
| 518 /** | 519 /** |
| 519 * @param {number} sidebarSize | 520 * @param {number} sidebarSize |
| 521 * @param {boolean=} userAction | |
| 520 * @return {number} | 522 * @return {number} |
| 521 */ | 523 */ |
| 522 _applyConstraints: function(sidebarSize) | 524 _applyConstraints: function(sidebarSize, userAction) |
| 523 { | 525 { |
| 524 var totalSize = this.totalSize(); | 526 var totalSize = this.totalSize(); |
| 525 | 527 |
| 526 var size = this._sidebarView.minimumSize(); | 528 var size = this._sidebarView.minimumSize(); |
| 527 var from = this.isVertical() ? size.width : size.height; | 529 var minSidebarSize = this.isVertical() ? size.width : size.height; |
| 528 if (!from) | 530 if (!minSidebarSize) |
| 529 from = WebInspector.SplitView.MinPadding; | 531 minSidebarSize = WebInspector.SplitView.MinPadding; |
| 532 | |
| 533 var preferredSidebarSize = this.isVertical() ? size.preferredWidth : siz e.preferredHeight; | |
| 534 if (!preferredSidebarSize) | |
| 535 preferredSidebarSize = WebInspector.SplitView.MinPadding; | |
| 536 // Allow sidebar to be less than preferred by explicit user action. | |
| 537 if (sidebarSize < preferredSidebarSize) | |
| 538 preferredSidebarSize = Math.max(sidebarSize, minSidebarSize); | |
| 530 | 539 |
| 531 size = this._mainView.minimumSize(); | 540 size = this._mainView.minimumSize(); |
| 532 var minMainSize = this.isVertical() ? size.width : size.height; | 541 var minMainSize = this.isVertical() ? size.width : size.height; |
| 533 if (!minMainSize) | 542 if (!minMainSize) |
| 534 minMainSize = WebInspector.SplitView.MinPadding; | 543 minMainSize = WebInspector.SplitView.MinPadding; |
| 535 | 544 |
| 536 var to = totalSize - minMainSize; | 545 var preferredMainSize = this.isVertical() ? size.preferredWidth : size.p referredHeight; |
| 537 if (from <= to) | 546 if (!preferredMainSize) |
| 538 return Number.constrain(sidebarSize, from, to); | 547 preferredMainSize = WebInspector.SplitView.MinPadding; |
| 548 var savedMainSize = this.isVertical() ? this._savedVerticalMainSize : th is._savedHorizontalMainSize; | |
| 549 if (typeof savedMainSize !== "undefined") | |
| 550 preferredMainSize = Math.min(preferredMainSize, savedMainSize); | |
| 551 if (userAction) | |
| 552 preferredMainSize = minMainSize; | |
| 539 | 553 |
| 540 // If we don't have enough space (which is a very rare case), prioritize main view. | 554 // Enough space for preferred. |
| 541 return Math.max(0, to); | 555 var totalPreferred = preferredMainSize + preferredSidebarSize; |
| 556 if (totalPreferred <= totalSize) | |
| 557 return Number.constrain(sidebarSize, preferredSidebarSize, totalSize - preferredMainSize); | |
| 558 | |
| 559 // Enough space for minimum. | |
| 560 if (totalPreferred > 0 && minMainSize + minSidebarSize <= totalSize) { | |
|
vsevik
2014/03/28 16:13:26
How can totalPreferred > 0 be wrong?
dgozman
2014/03/28 18:05:02
Done.
| |
| 561 var delta = totalPreferred - totalSize; | |
| 562 var sidebarDelta = delta * preferredSidebarSize / totalPreferred; | |
| 563 sidebarSize = preferredSidebarSize - sidebarDelta; | |
| 564 return Number.constrain(sidebarSize, minSidebarSize, totalSize - min MainSize); | |
| 565 } | |
| 566 | |
| 567 // Not enough space even for minimum sizes. | |
| 568 return Math.max(0, totalSize - minMainSize); | |
| 542 }, | 569 }, |
| 543 | 570 |
| 544 wasShown: function() | 571 wasShown: function() |
| 545 { | 572 { |
| 546 this._forceUpdateLayout(); | 573 this._forceUpdateLayout(); |
| 547 WebInspector.zoomManager.addEventListener(WebInspector.ZoomManager.Event s.ZoomChanged, this._onZoomChanged, this); | 574 WebInspector.zoomManager.addEventListener(WebInspector.ZoomManager.Event s.ZoomChanged, this._onZoomChanged, this); |
| 548 }, | 575 }, |
| 549 | 576 |
| 550 willHide: function() | 577 willHide: function() |
| 551 { | 578 { |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 568 calculateMinimumSize: function() | 595 calculateMinimumSize: function() |
| 569 { | 596 { |
| 570 if (this._showMode === WebInspector.SplitView.ShowMode.OnlyMain) | 597 if (this._showMode === WebInspector.SplitView.ShowMode.OnlyMain) |
| 571 return this._mainView.minimumSize(); | 598 return this._mainView.minimumSize(); |
| 572 if (this._showMode === WebInspector.SplitView.ShowMode.OnlySidebar) | 599 if (this._showMode === WebInspector.SplitView.ShowMode.OnlySidebar) |
| 573 return this._sidebarView.minimumSize(); | 600 return this._sidebarView.minimumSize(); |
| 574 | 601 |
| 575 var mainSize = this._mainView.minimumSize(); | 602 var mainSize = this._mainView.minimumSize(); |
| 576 var sidebarSize = this._sidebarView.minimumSize(); | 603 var sidebarSize = this._sidebarView.minimumSize(); |
| 577 var min = WebInspector.SplitView.MinPadding; | 604 var min = WebInspector.SplitView.MinPadding; |
| 578 if (this._isVertical) | 605 if (this._isVertical) { |
| 579 return new Size((mainSize.width || min) + (sidebarSize.width || min) , Math.max(mainSize.height, sidebarSize.height)); | 606 mainSize = mainSize.widthToMax(new Size(min, 0)); |
| 580 else | 607 sidebarSize = sidebarSize.widthToMax(new Size(min, 0)); |
| 581 return new Size(Math.max(mainSize.width, sidebarSize.width), (mainSi ze.height || min) + (sidebarSize.height || min)); | 608 return mainSize.addWidth(sidebarSize).heightToMax(sidebarSize); |
| 609 } else { | |
| 610 mainSize = mainSize.heightToMax(new Size(0, min)); | |
| 611 sidebarSize = sidebarSize.heightToMax(new Size(0, min)); | |
| 612 return mainSize.widthToMax(sidebarSize).addHeight(sidebarSize); | |
| 613 } | |
| 582 }, | 614 }, |
| 583 | 615 |
| 584 /** | 616 /** |
| 585 * @param {!MouseEvent} event | 617 * @param {!MouseEvent} event |
| 586 * @return {boolean} | 618 * @return {boolean} |
| 587 */ | 619 */ |
| 588 _startResizerDragging: function(event) | 620 _startResizerDragging: function(event) |
| 589 { | 621 { |
| 590 if (!this._resizable) | 622 if (!this._resizable) |
| 591 return false; | 623 return false; |
| 592 | 624 |
| 593 var dipEventPosition = (this._isVertical ? event.pageX : event.pageY) * WebInspector.zoomManager.zoomFactor(); | 625 var dipEventPosition = (this._isVertical ? event.pageX : event.pageY) * WebInspector.zoomManager.zoomFactor(); |
| 594 this._dragOffset = (this._secondIsSidebar ? this.totalSize() - this._sid ebarSize : this._sidebarSize) - dipEventPosition; | 626 this._dragOffset = (this._secondIsSidebar ? this.totalSize() - this._sid ebarSize : this._sidebarSize) - dipEventPosition; |
| 595 return true; | 627 return true; |
| 596 }, | 628 }, |
| 597 | 629 |
| 598 /** | 630 /** |
| 599 * @param {!MouseEvent} event | 631 * @param {!MouseEvent} event |
| 600 */ | 632 */ |
| 601 _resizerDragging: function(event) | 633 _resizerDragging: function(event) |
| 602 { | 634 { |
| 603 var dipEventPosition = (this._isVertical ? event.pageX : event.pageY) * WebInspector.zoomManager.zoomFactor(); | 635 var dipEventPosition = (this._isVertical ? event.pageX : event.pageY) * WebInspector.zoomManager.zoomFactor(); |
| 604 var newOffset = dipEventPosition + this._dragOffset; | 636 var newOffset = dipEventPosition + this._dragOffset; |
| 605 var newSize = (this._secondIsSidebar ? this.totalSize() - newOffset : ne wOffset); | 637 var newSize = (this._secondIsSidebar ? this.totalSize() - newOffset : ne wOffset); |
| 606 var constrainedSize = this._applyConstraints(newSize); | 638 var constrainedSize = this._applyConstraints(newSize, true); |
| 607 this._savedSidebarSize = constrainedSize; | 639 this._savedSidebarSize = constrainedSize; |
| 608 this._saveSetting(); | 640 this._saveSetting(); |
| 609 this._innerSetSidebarSize(constrainedSize, false); | 641 this._innerSetSidebarSize(constrainedSize, false, true); |
| 642 if (this.isVertical()) | |
| 643 this._savedVerticalMainSize = this.totalSize() - this._sidebarSize; | |
| 644 else | |
| 645 this._savedHorizontalMainSize = this.totalSize() - this._sidebarSize ; | |
| 610 event.preventDefault(); | 646 event.preventDefault(); |
| 611 }, | 647 }, |
| 612 | 648 |
| 613 /** | 649 /** |
| 614 * @param {!MouseEvent} event | 650 * @param {!MouseEvent} event |
| 615 */ | 651 */ |
| 616 _endResizerDragging: function(event) | 652 _endResizerDragging: function(event) |
| 617 { | 653 { |
| 618 delete this._dragOffset; | 654 delete this._dragOffset; |
| 619 }, | 655 }, |
| (...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 825 this._showHideSidebarButton.state = sidebarHidden ? "show" : "hide"; | 861 this._showHideSidebarButton.state = sidebarHidden ? "show" : "hide"; |
| 826 this._showHideSidebarButton.element.classList.toggle("top-sidebar-show-h ide-button", !this.isVertical() && !this.isSidebarSecond()); | 862 this._showHideSidebarButton.element.classList.toggle("top-sidebar-show-h ide-button", !this.isVertical() && !this.isSidebarSecond()); |
| 827 this._showHideSidebarButton.element.classList.toggle("right-sidebar-show -hide-button", this.isVertical() && this.isSidebarSecond()); | 863 this._showHideSidebarButton.element.classList.toggle("right-sidebar-show -hide-button", this.isVertical() && this.isSidebarSecond()); |
| 828 this._showHideSidebarButton.element.classList.toggle("bottom-sidebar-sho w-hide-button", !this.isVertical() && this.isSidebarSecond()); | 864 this._showHideSidebarButton.element.classList.toggle("bottom-sidebar-sho w-hide-button", !this.isVertical() && this.isSidebarSecond()); |
| 829 this._showHideSidebarButton.element.classList.toggle("left-sidebar-show- hide-button", this.isVertical() && !this.isSidebarSecond()); | 865 this._showHideSidebarButton.element.classList.toggle("left-sidebar-show- hide-button", this.isVertical() && !this.isSidebarSecond()); |
| 830 this._showHideSidebarButton.title = sidebarHidden ? WebInspector.UIStrin g("Show %s", this._showHideSidebarButtonTitle) : WebInspector.UIString("Hide %s" , this._showHideSidebarButtonTitle); | 866 this._showHideSidebarButton.title = sidebarHidden ? WebInspector.UIStrin g("Show %s", this._showHideSidebarButtonTitle) : WebInspector.UIString("Hide %s" , this._showHideSidebarButtonTitle); |
| 831 }, | 867 }, |
| 832 | 868 |
| 833 __proto__: WebInspector.View.prototype | 869 __proto__: WebInspector.View.prototype |
| 834 } | 870 } |
| OLD | NEW |