Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved. | 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Portions are Copyright (C) 1998 Netscape Communications Corporation. | 4 * Portions are Copyright (C) 1998 Netscape Communications Corporation. |
| 5 * | 5 * |
| 6 * Other contributors: | 6 * Other contributors: |
| 7 * Robert O'Callahan <roc+@cs.cmu.edu> | 7 * Robert O'Callahan <roc+@cs.cmu.edu> |
| 8 * David Baron <dbaron@fas.harvard.edu> | 8 * David Baron <dbaron@fas.harvard.edu> |
| 9 * Christian Biesinger <cbiesinger@web.de> | 9 * Christian Biesinger <cbiesinger@web.de> |
| 10 * Randall Jesup <rjesup@wgate.com> | 10 * Randall Jesup <rjesup@wgate.com> |
| (...skipping 698 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 709 // RenderView shouldn't provide scrollbars on its own. | 709 // RenderView shouldn't provide scrollbars on its own. |
| 710 if (m_box->isRenderView()) | 710 if (m_box->isRenderView()) |
| 711 return; | 711 return; |
| 712 | 712 |
| 713 if (!m_scrollDimensionsDirty) | 713 if (!m_scrollDimensionsDirty) |
| 714 updateScrollableAreaSet(hasScrollableHorizontalOverflow() || hasScrollab leVerticalOverflow()); | 714 updateScrollableAreaSet(hasScrollableHorizontalOverflow() || hasScrollab leVerticalOverflow()); |
| 715 | 715 |
| 716 EOverflow overflowX = m_box->style()->overflowX(); | 716 EOverflow overflowX = m_box->style()->overflowX(); |
| 717 EOverflow overflowY = m_box->style()->overflowY(); | 717 EOverflow overflowY = m_box->style()->overflowY(); |
| 718 | 718 |
| 719 Node* node = m_box->node(); | |
| 720 if (node && node->isElementNode()) { | |
| 721 Element* element = toElement(node); | |
| 722 LayoutUnit minimumWidth = valueForLength(m_box->style()->logicalMinWidth (), m_box->logicalWidth()); | |
| 723 LayoutUnit minimumHeight = valueForLength(m_box->style()->logicalMinHeig ht(), m_box->logicalHeight()); | |
| 724 if (minimumWidth == 0) | |
| 725 minimumWidth = LayoutUnit(15); | |
| 726 if (minimumHeight == 0) | |
| 727 minimumHeight = LayoutUnit(15); | |
|
Julien - ping for review
2014/04/21 17:46:46
I don't think we should only check for 0. We shoul
harpreet.sk
2014/04/24 15:28:27
Now added a check doing a max between the internal
| |
| 728 element->setMinimumSizeForResizing(LayoutSize(minimumWidth, minimumHeigh t)); | |
|
Julien - ping for review
2014/04/21 17:46:46
The fact that we do a round-trip through the DOM i
harpreet.sk
2014/04/22 13:56:36
The classes deriving from ScrollableArea other tha
Julien - ping for review
2014/04/22 22:35:12
Your analysis is fine by me.
| |
| 729 } | |
| 730 | |
| 719 // To avoid doing a relayout in updateScrollbarsAfterLayout, we try to keep any automatic scrollbar that was already present. | 731 // To avoid doing a relayout in updateScrollbarsAfterLayout, we try to keep any automatic scrollbar that was already present. |
| 720 bool needsHorizontalScrollbar = (hasHorizontalScrollbar() && overflowDefines AutomaticScrollbar(overflowX)) || overflowRequiresScrollbar(overflowX); | 732 bool needsHorizontalScrollbar = (hasHorizontalScrollbar() && overflowDefines AutomaticScrollbar(overflowX)) || overflowRequiresScrollbar(overflowX); |
| 721 bool needsVerticalScrollbar = (hasVerticalScrollbar() && overflowDefinesAuto maticScrollbar(overflowY)) || overflowRequiresScrollbar(overflowY); | 733 bool needsVerticalScrollbar = (hasVerticalScrollbar() && overflowDefinesAuto maticScrollbar(overflowY)) || overflowRequiresScrollbar(overflowY); |
| 722 setHasHorizontalScrollbar(needsHorizontalScrollbar); | 734 setHasHorizontalScrollbar(needsHorizontalScrollbar); |
| 723 setHasVerticalScrollbar(needsVerticalScrollbar); | 735 setHasVerticalScrollbar(needsVerticalScrollbar); |
| 724 | 736 |
| 725 // With overflow: scroll, scrollbars are always visible but may be disabled. | 737 // With overflow: scroll, scrollbars are always visible but may be disabled. |
| 726 // When switching to another value, we need to re-enable them (see bug 11985 ). | 738 // When switching to another value, we need to re-enable them (see bug 11985 ). |
| 727 if (needsHorizontalScrollbar && oldStyle && oldStyle->overflowX() == OSCROLL && overflowX != OSCROLL) { | 739 if (needsHorizontalScrollbar && oldStyle && oldStyle->overflowX() == OSCROLL && overflowX != OSCROLL) { |
| 728 ASSERT(hasHorizontalScrollbar()); | 740 ASSERT(hasHorizontalScrollbar()); |
| (...skipping 622 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1351 ASSERT_NOT_REACHED(); | 1363 ASSERT_NOT_REACHED(); |
| 1352 } | 1364 } |
| 1353 | 1365 |
| 1354 float zoomFactor = m_box->style()->effectiveZoom(); | 1366 float zoomFactor = m_box->style()->effectiveZoom(); |
| 1355 | 1367 |
| 1356 LayoutSize newOffset = offsetFromResizeCorner(document.view()->windowToConte nts(pos)); | 1368 LayoutSize newOffset = offsetFromResizeCorner(document.view()->windowToConte nts(pos)); |
| 1357 newOffset.setWidth(newOffset.width() / zoomFactor); | 1369 newOffset.setWidth(newOffset.width() / zoomFactor); |
| 1358 newOffset.setHeight(newOffset.height() / zoomFactor); | 1370 newOffset.setHeight(newOffset.height() / zoomFactor); |
| 1359 | 1371 |
| 1360 LayoutSize currentSize = LayoutSize(m_box->width() / zoomFactor, m_box->heig ht() / zoomFactor); | 1372 LayoutSize currentSize = LayoutSize(m_box->width() / zoomFactor, m_box->heig ht() / zoomFactor); |
| 1361 LayoutSize minimumSize = element->minimumSizeForResizing().shrunkTo(currentS ize); | 1373 LayoutSize minimumSize = element->minimumSizeForResizing(); |
|
Julien - ping for review
2014/04/21 17:46:46
Don't we need the shrunkTo call ias zoomFactor can
harpreet.sk
2014/04/24 15:28:27
We do not need shrunkTo() as over here m_box->widt
| |
| 1362 element->setMinimumSizeForResizing(minimumSize); | |
| 1363 | 1374 |
| 1364 LayoutSize adjustedOldOffset = LayoutSize(oldOffset.width() / zoomFactor, ol dOffset.height() / zoomFactor); | 1375 LayoutSize adjustedOldOffset = LayoutSize(oldOffset.width() / zoomFactor, ol dOffset.height() / zoomFactor); |
| 1365 if (m_box->style()->shouldPlaceBlockDirectionScrollbarOnLogicalLeft()) { | 1376 if (m_box->style()->shouldPlaceBlockDirectionScrollbarOnLogicalLeft()) { |
| 1366 newOffset.setWidth(-newOffset.width()); | 1377 newOffset.setWidth(-newOffset.width()); |
| 1367 adjustedOldOffset.setWidth(-adjustedOldOffset.width()); | 1378 adjustedOldOffset.setWidth(-adjustedOldOffset.width()); |
| 1368 } | 1379 } |
| 1369 | 1380 |
| 1370 LayoutSize difference = (currentSize + newOffset - adjustedOldOffset).expand edTo(minimumSize) - currentSize; | 1381 LayoutSize difference = (currentSize + newOffset - adjustedOldOffset).expand edTo(minimumSize) - currentSize; |
| 1371 | 1382 |
| 1372 bool isBoxSizingBorder = m_box->style()->boxSizing() == BORDER_BOX; | 1383 bool isBoxSizingBorder = m_box->style()->boxSizing() == BORDER_BOX; |
| (...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1528 void RenderLayerScrollableArea::setForceNeedsCompositedScrolling(ForceNeedsCompo sitedScrollingMode mode) | 1539 void RenderLayerScrollableArea::setForceNeedsCompositedScrolling(ForceNeedsCompo sitedScrollingMode mode) |
| 1529 { | 1540 { |
| 1530 if (m_forceNeedsCompositedScrolling == mode) | 1541 if (m_forceNeedsCompositedScrolling == mode) |
| 1531 return; | 1542 return; |
| 1532 | 1543 |
| 1533 m_forceNeedsCompositedScrolling = mode; | 1544 m_forceNeedsCompositedScrolling = mode; |
| 1534 layer()->didUpdateNeedsCompositedScrolling(); | 1545 layer()->didUpdateNeedsCompositedScrolling(); |
| 1535 } | 1546 } |
| 1536 | 1547 |
| 1537 } // Namespace WebCore | 1548 } // Namespace WebCore |
| OLD | NEW |