Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(170)

Side by Side Diff: third_party/WebKit/Source/core/paint/DeprecatedPaintLayerScrollableArea.cpp

Issue 1365853003: LayoutBox::scrollRectToVisible doesn't respect overflow:hidden property. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed typos Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 621 matching lines...) Expand 10 before | Expand all | Expand 10 after
632 void DeprecatedPaintLayerScrollableArea::computeScrollDimensions() 632 void DeprecatedPaintLayerScrollableArea::computeScrollDimensions()
633 { 633 {
634 m_overflowRect = box().layoutOverflowRect(); 634 m_overflowRect = box().layoutOverflowRect();
635 box().flipForWritingMode(m_overflowRect); 635 box().flipForWritingMode(m_overflowRect);
636 636
637 int scrollableLeftOverflow = m_overflowRect.x() - box().borderLeft() - (box( ).style()->shouldPlaceBlockDirectionScrollbarOnLogicalLeft() ? box().verticalScr ollbarWidth() : 0); 637 int scrollableLeftOverflow = m_overflowRect.x() - box().borderLeft() - (box( ).style()->shouldPlaceBlockDirectionScrollbarOnLogicalLeft() ? box().verticalScr ollbarWidth() : 0);
638 int scrollableTopOverflow = m_overflowRect.y() - box().borderTop(); 638 int scrollableTopOverflow = m_overflowRect.y() - box().borderTop();
639 setScrollOrigin(IntPoint(-scrollableLeftOverflow, -scrollableTopOverflow)); 639 setScrollOrigin(IntPoint(-scrollableLeftOverflow, -scrollableTopOverflow));
640 } 640 }
641 641
642 void DeprecatedPaintLayerScrollableArea::scrollToPosition(const DoublePoint& scr ollPosition, ScrollOffsetClamping clamp, ScrollBehavior scrollBehavior) 642 void DeprecatedPaintLayerScrollableArea::scrollToPosition(const DoublePoint& scr ollPosition, ScrollOffsetClamping clamp, ScrollBehavior scrollBehavior, ScrollTy pe scrollType)
643 { 643 {
644 cancelProgrammaticScrollAnimation(); 644 cancelProgrammaticScrollAnimation();
645 645
646 DoublePoint newScrollPosition = clamp == ScrollOffsetClamped ? clampScrollPo sition(scrollPosition) : scrollPosition; 646 DoublePoint newScrollPosition = clamp == ScrollOffsetClamped ? clampScrollPo sition(scrollPosition) : scrollPosition;
647 if (newScrollPosition != scrollPositionDouble()) 647 if (newScrollPosition != scrollPositionDouble())
648 ScrollableArea::setScrollPosition(newScrollPosition, ProgrammaticScroll, scrollBehavior); 648 ScrollableArea::setScrollPosition(newScrollPosition, scrollType, scrollB ehavior);
649 } 649 }
650 650
651 void DeprecatedPaintLayerScrollableArea::updateScrollDimensions(DoubleSize& scro llOffset, bool& autoHorizontalScrollBarChanged, bool& autoVerticalScrollBarChang ed) 651 void DeprecatedPaintLayerScrollableArea::updateScrollDimensions(DoubleSize& scro llOffset, bool& autoHorizontalScrollBarChanged, bool& autoVerticalScrollBarChang ed)
652 { 652 {
653 ASSERT(box().hasOverflowClip()); 653 ASSERT(box().hasOverflowClip());
654 654
655 if (needsScrollbarReconstruction()) { 655 if (needsScrollbarReconstruction()) {
656 if (m_hBar) 656 if (m_hBar)
657 destroyScrollbar(HorizontalScrollbar); 657 destroyScrollbar(HorizontalScrollbar);
658 if (m_vBar) 658 if (m_vBar)
(...skipping 711 matching lines...) Expand 10 before | Expand all | Expand 10 after
1370 LayoutUnit baseHeight = box().size().height() - (isBoxSizingBorder ? Lay outUnit() : box().borderAndPaddingHeight()); 1370 LayoutUnit baseHeight = box().size().height() - (isBoxSizingBorder ? Lay outUnit() : box().borderAndPaddingHeight());
1371 baseHeight = baseHeight / zoomFactor; 1371 baseHeight = baseHeight / zoomFactor;
1372 element->setInlineStyleProperty(CSSPropertyHeight, roundToInt(baseHeight + difference.height()), CSSPrimitiveValue::UnitType::Pixels); 1372 element->setInlineStyleProperty(CSSPropertyHeight, roundToInt(baseHeight + difference.height()), CSSPrimitiveValue::UnitType::Pixels);
1373 } 1373 }
1374 1374
1375 document.updateLayout(); 1375 document.updateLayout();
1376 1376
1377 // FIXME (Radar 4118564): We should also autoscroll the window as necessary to keep the point under the cursor in view. 1377 // FIXME (Radar 4118564): We should also autoscroll the window as necessary to keep the point under the cursor in view.
1378 } 1378 }
1379 1379
1380 LayoutRect DeprecatedPaintLayerScrollableArea::scrollIntoView(const LayoutRect& rect, const ScrollAlignment& alignX, const ScrollAlignment& alignY) 1380 LayoutRect DeprecatedPaintLayerScrollableArea::scrollIntoView(const LayoutRect& rect, const ScrollAlignment& alignX, const ScrollAlignment& alignY, ScrollType s crollType)
1381 { 1381 {
1382 LayoutRect localExposeRect(box().absoluteToLocalQuad(FloatQuad(FloatRect(rec t)), UseTransforms).boundingBox()); 1382 LayoutRect localExposeRect(box().absoluteToLocalQuad(FloatQuad(FloatRect(rec t)), UseTransforms).boundingBox());
1383 localExposeRect.move(-box().borderLeft(), -box().borderTop()); 1383 localExposeRect.move(-box().borderLeft(), -box().borderTop());
1384 LayoutRect layerBounds(0, 0, box().clientWidth(), box().clientHeight()); 1384 LayoutRect layerBounds(0, 0, box().clientWidth(), box().clientHeight());
1385 LayoutRect r = ScrollAlignment::getRectToExpose(layerBounds, localExposeRect , alignX, alignY); 1385 LayoutRect r = ScrollAlignment::getRectToExpose(layerBounds, localExposeRect , alignX, alignY);
1386 1386
1387 DoublePoint clampedScrollPosition = clampScrollPosition(scrollPositionDouble () + roundedIntSize(r.location())); 1387 DoublePoint clampedScrollPosition = clampScrollPosition(scrollPositionDouble () + roundedIntSize(r.location()));
1388 if (clampedScrollPosition == scrollPositionDouble()) 1388 if (clampedScrollPosition == scrollPositionDouble())
1389 return rect; 1389 return rect;
1390 1390
1391 DoubleSize oldScrollOffset = adjustedScrollOffset(); 1391 DoubleSize oldScrollOffset = adjustedScrollOffset();
1392 scrollToPosition(clampedScrollPosition); 1392 scrollToPosition(clampedScrollPosition, ScrollOffsetUnclamped, ScrollBehavio rInstant, scrollType);
1393 DoubleSize scrollOffsetDifference = adjustedScrollOffset() - oldScrollOffset ; 1393 DoubleSize scrollOffsetDifference = adjustedScrollOffset() - oldScrollOffset ;
1394 localExposeRect.move(-LayoutSize(scrollOffsetDifference)); 1394 localExposeRect.move(-LayoutSize(scrollOffsetDifference));
1395 return LayoutRect(box().localToAbsoluteQuad(FloatQuad(FloatRect(localExposeR ect)), UseTransforms).boundingBox()); 1395 return LayoutRect(box().localToAbsoluteQuad(FloatQuad(FloatRect(localExposeR ect)), UseTransforms).boundingBox());
1396 } 1396 }
1397 1397
1398 void DeprecatedPaintLayerScrollableArea::updateScrollableAreaSet(bool hasOverflo w) 1398 void DeprecatedPaintLayerScrollableArea::updateScrollableAreaSet(bool hasOverflo w)
1399 { 1399 {
1400 LocalFrame* frame = box().frame(); 1400 LocalFrame* frame = box().frame();
1401 if (!frame) 1401 if (!frame)
1402 return; 1402 return;
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
1484 return false; 1484 return false;
1485 1485
1486 LocalFrame* frame = box().frame(); 1486 LocalFrame* frame = box().frame();
1487 if (!frame || !frame->isMainFrame() || !frame->settings()) 1487 if (!frame || !frame->isMainFrame() || !frame->settings())
1488 return false; 1488 return false;
1489 1489
1490 return frame->settings()->viewportMetaEnabled(); 1490 return frame->settings()->viewportMetaEnabled();
1491 } 1491 }
1492 1492
1493 } // namespace blink 1493 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698