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

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

Issue 2382103006: Use scrollbar thickness to set layout (Closed)
Patch Set: Updated Layout Test Expectations Created 4 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
« no previous file with comments | « third_party/WebKit/LayoutTests/TestExpectations ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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@gmail.com> 9 * Christian Biesinger <cbiesinger@gmail.com>
10 * Randall Jesup <rjesup@wgate.com> 10 * Randall Jesup <rjesup@wgate.com>
(...skipping 472 matching lines...) Expand 10 before | Expand all | Expand 10 after
483 return -scrollOrigin() + (contentSize - visibleSize); 483 return -scrollOrigin() + (contentSize - visibleSize);
484 } 484 }
485 485
486 IntRect PaintLayerScrollableArea::visibleContentRect( 486 IntRect PaintLayerScrollableArea::visibleContentRect(
487 IncludeScrollbarsInRect scrollbarInclusion) const { 487 IncludeScrollbarsInRect scrollbarInclusion) const {
488 int verticalScrollbarWidth = 0; 488 int verticalScrollbarWidth = 0;
489 int horizontalScrollbarHeight = 0; 489 int horizontalScrollbarHeight = 0;
490 if (scrollbarInclusion == IncludeScrollbars) { 490 if (scrollbarInclusion == IncludeScrollbars) {
491 verticalScrollbarWidth = 491 verticalScrollbarWidth =
492 (verticalScrollbar() && !verticalScrollbar()->isOverlayScrollbar()) 492 (verticalScrollbar() && !verticalScrollbar()->isOverlayScrollbar())
493 ? verticalScrollbar()->width() 493 ? verticalScrollbar()->scrollbarThickness()
494 : 0; 494 : 0;
495 horizontalScrollbarHeight = 495 horizontalScrollbarHeight =
496 (horizontalScrollbar() && !horizontalScrollbar()->isOverlayScrollbar()) 496 (horizontalScrollbar() && !horizontalScrollbar()->isOverlayScrollbar())
497 ? horizontalScrollbar()->height() 497 ? horizontalScrollbar()->scrollbarThickness()
498 : 0; 498 : 0;
499 } 499 }
500 500
501 return IntRect( 501 return IntRect(
502 IntPoint(scrollXOffset(), scrollYOffset()), 502 IntPoint(scrollXOffset(), scrollYOffset()),
503 IntSize(max(0, layer()->size().width() - verticalScrollbarWidth), 503 IntSize(max(0, layer()->size().width() - verticalScrollbarWidth),
504 max(0, layer()->size().height() - horizontalScrollbarHeight))); 504 max(0, layer()->size().height() - horizontalScrollbarHeight)));
505 } 505 }
506 506
507 int PaintLayerScrollableArea::visibleHeight() const { 507 int PaintLayerScrollableArea::visibleHeight() const {
(...skipping 487 matching lines...) Expand 10 before | Expand all | Expand 10 after
995 995
996 IntRect PaintLayerScrollableArea::rectForHorizontalScrollbar( 996 IntRect PaintLayerScrollableArea::rectForHorizontalScrollbar(
997 const IntRect& borderBoxRect) const { 997 const IntRect& borderBoxRect) const {
998 if (!hasHorizontalScrollbar()) 998 if (!hasHorizontalScrollbar())
999 return IntRect(); 999 return IntRect();
1000 1000
1001 const IntRect& scrollCorner = scrollCornerRect(); 1001 const IntRect& scrollCorner = scrollCornerRect();
1002 1002
1003 return IntRect(horizontalScrollbarStart(borderBoxRect.x()), 1003 return IntRect(horizontalScrollbarStart(borderBoxRect.x()),
1004 borderBoxRect.maxY() - box().borderBottom() - 1004 borderBoxRect.maxY() - box().borderBottom() -
1005 horizontalScrollbar()->height(), 1005 horizontalScrollbar()->scrollbarThickness(),
1006 borderBoxRect.width() - 1006 borderBoxRect.width() -
1007 (box().borderLeft() + box().borderRight()) - 1007 (box().borderLeft() + box().borderRight()) -
1008 scrollCorner.width(), 1008 scrollCorner.width(),
1009 horizontalScrollbar()->scrollbarThickness()); 1009 horizontalScrollbar()->scrollbarThickness());
1010 } 1010 }
1011 1011
1012 IntRect PaintLayerScrollableArea::rectForVerticalScrollbar( 1012 IntRect PaintLayerScrollableArea::rectForVerticalScrollbar(
1013 const IntRect& borderBoxRect) const { 1013 const IntRect& borderBoxRect) const {
1014 if (!hasVerticalScrollbar()) 1014 if (!hasVerticalScrollbar())
1015 return IntRect(); 1015 return IntRect();
1016 1016
1017 const IntRect& scrollCorner = scrollCornerRect(); 1017 const IntRect& scrollCorner = scrollCornerRect();
1018 1018
1019 return IntRect( 1019 return IntRect(
1020 verticalScrollbarStart(borderBoxRect.x(), borderBoxRect.maxX()), 1020 verticalScrollbarStart(borderBoxRect.x(), borderBoxRect.maxX()),
1021 borderBoxRect.y() + box().borderTop(), 1021 borderBoxRect.y() + box().borderTop(),
1022 verticalScrollbar()->scrollbarThickness(), 1022 verticalScrollbar()->scrollbarThickness(),
1023 borderBoxRect.height() - (box().borderTop() + box().borderBottom()) - 1023 borderBoxRect.height() - (box().borderTop() + box().borderBottom()) -
1024 scrollCorner.height()); 1024 scrollCorner.height());
1025 } 1025 }
1026 1026
1027 int PaintLayerScrollableArea::verticalScrollbarStart(int minX, int maxX) const { 1027 int PaintLayerScrollableArea::verticalScrollbarStart(int minX, int maxX) const {
1028 if (box().shouldPlaceBlockDirectionScrollbarOnLogicalLeft()) 1028 if (box().shouldPlaceBlockDirectionScrollbarOnLogicalLeft())
1029 return minX + box().borderLeft(); 1029 return minX + box().borderLeft();
1030 return maxX - box().borderRight() - verticalScrollbar()->width(); 1030 return maxX - box().borderRight() - verticalScrollbar()->scrollbarThickness();
1031 } 1031 }
1032 1032
1033 int PaintLayerScrollableArea::horizontalScrollbarStart(int minX) const { 1033 int PaintLayerScrollableArea::horizontalScrollbarStart(int minX) const {
1034 int x = minX + box().borderLeft(); 1034 int x = minX + box().borderLeft();
1035 if (box().shouldPlaceBlockDirectionScrollbarOnLogicalLeft()) 1035 if (box().shouldPlaceBlockDirectionScrollbarOnLogicalLeft())
1036 x += hasVerticalScrollbar() 1036 x += hasVerticalScrollbar()
1037 ? verticalScrollbar()->width() 1037 ? verticalScrollbar()->scrollbarThickness()
1038 : resizerCornerRect(box().pixelSnappedBorderBoxRect(), 1038 : resizerCornerRect(box().pixelSnappedBorderBoxRect(),
1039 ResizerForPointer) 1039 ResizerForPointer)
1040 .width(); 1040 .width();
1041 return x; 1041 return x;
1042 } 1042 }
1043 1043
1044 IntSize PaintLayerScrollableArea::scrollbarOffset( 1044 IntSize PaintLayerScrollableArea::scrollbarOffset(
1045 const Scrollbar& scrollbar) const { 1045 const Scrollbar& scrollbar) const {
1046 if (&scrollbar == verticalScrollbar()) 1046 if (&scrollbar == verticalScrollbar())
1047 return IntSize(verticalScrollbarStart(0, box().size().width().toInt()), 1047 return IntSize(verticalScrollbarStart(0, box().size().width().toInt()),
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
1184 } 1184 }
1185 1185
1186 int PaintLayerScrollableArea::verticalScrollbarWidth( 1186 int PaintLayerScrollableArea::verticalScrollbarWidth(
1187 OverlayScrollbarClipBehavior overlayScrollbarClipBehavior) const { 1187 OverlayScrollbarClipBehavior overlayScrollbarClipBehavior) const {
1188 if (!hasVerticalScrollbar()) 1188 if (!hasVerticalScrollbar())
1189 return 0; 1189 return 0;
1190 if (verticalScrollbar()->isOverlayScrollbar() && 1190 if (verticalScrollbar()->isOverlayScrollbar() &&
1191 (overlayScrollbarClipBehavior == IgnoreOverlayScrollbarSize || 1191 (overlayScrollbarClipBehavior == IgnoreOverlayScrollbarSize ||
1192 !verticalScrollbar()->shouldParticipateInHitTesting())) 1192 !verticalScrollbar()->shouldParticipateInHitTesting()))
1193 return 0; 1193 return 0;
1194 return verticalScrollbar()->width(); 1194 return verticalScrollbar()->scrollbarThickness();
1195 } 1195 }
1196 1196
1197 int PaintLayerScrollableArea::horizontalScrollbarHeight( 1197 int PaintLayerScrollableArea::horizontalScrollbarHeight(
1198 OverlayScrollbarClipBehavior overlayScrollbarClipBehavior) const { 1198 OverlayScrollbarClipBehavior overlayScrollbarClipBehavior) const {
1199 if (!hasHorizontalScrollbar()) 1199 if (!hasHorizontalScrollbar())
1200 return 0; 1200 return 0;
1201 if (horizontalScrollbar()->isOverlayScrollbar() && 1201 if (horizontalScrollbar()->isOverlayScrollbar() &&
1202 (overlayScrollbarClipBehavior == IgnoreOverlayScrollbarSize || 1202 (overlayScrollbarClipBehavior == IgnoreOverlayScrollbarSize ||
1203 !horizontalScrollbar()->shouldParticipateInHitTesting())) 1203 !horizontalScrollbar()->shouldParticipateInHitTesting()))
1204 return 0; 1204 return 0;
1205 return horizontalScrollbar()->height(); 1205 return horizontalScrollbar()->scrollbarThickness();
1206 } 1206 }
1207 1207
1208 void PaintLayerScrollableArea::positionOverflowControls() { 1208 void PaintLayerScrollableArea::positionOverflowControls() {
1209 if (!hasScrollbar() && !box().canResize()) 1209 if (!hasScrollbar() && !box().canResize())
1210 return; 1210 return;
1211 1211
1212 const IntRect borderBox = box().pixelSnappedBorderBoxRect(); 1212 const IntRect borderBox = box().pixelSnappedBorderBoxRect();
1213 if (Scrollbar* verticalScrollbar = this->verticalScrollbar()) 1213 if (Scrollbar* verticalScrollbar = this->verticalScrollbar())
1214 verticalScrollbar->setFrameRect(rectForVerticalScrollbar(borderBox)); 1214 verticalScrollbar->setFrameRect(rectForVerticalScrollbar(borderBox));
1215 1215
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
1267 if (box().style()->resize() != RESIZE_NONE) { 1267 if (box().style()->resize() != RESIZE_NONE) {
1268 resizeControlRect = 1268 resizeControlRect =
1269 resizerCornerRect(box().pixelSnappedBorderBoxRect(), ResizerForPointer); 1269 resizerCornerRect(box().pixelSnappedBorderBoxRect(), ResizerForPointer);
1270 if (resizeControlRect.contains(localPoint)) 1270 if (resizeControlRect.contains(localPoint))
1271 return true; 1271 return true;
1272 } 1272 }
1273 1273
1274 int resizeControlSize = max(resizeControlRect.height(), 0); 1274 int resizeControlSize = max(resizeControlRect.height(), 0);
1275 if (hasVerticalScrollbar() && 1275 if (hasVerticalScrollbar() &&
1276 verticalScrollbar()->shouldParticipateInHitTesting()) { 1276 verticalScrollbar()->shouldParticipateInHitTesting()) {
1277 LayoutRect vBarRect( 1277 LayoutRect vBarRect(verticalScrollbarStart(0, box().size().width().toInt()),
1278 verticalScrollbarStart(0, box().size().width().toInt()), 1278 box().borderTop(),
1279 box().borderTop(), verticalScrollbar()->width(), 1279 verticalScrollbar()->scrollbarThickness(),
1280 box().size().height().toInt() - 1280 box().size().height().toInt() -
1281 (box().borderTop() + box().borderBottom()) - 1281 (box().borderTop() + box().borderBottom()) -
1282 (hasHorizontalScrollbar() ? horizontalScrollbar()->height() 1282 (hasHorizontalScrollbar()
1283 : resizeControlSize)); 1283 ? horizontalScrollbar()->scrollbarThickness()
1284 : resizeControlSize));
1284 if (vBarRect.contains(localPoint)) { 1285 if (vBarRect.contains(localPoint)) {
1285 result.setScrollbar(verticalScrollbar()); 1286 result.setScrollbar(verticalScrollbar());
1286 return true; 1287 return true;
1287 } 1288 }
1288 } 1289 }
1289 1290
1290 resizeControlSize = max(resizeControlRect.width(), 0); 1291 resizeControlSize = max(resizeControlRect.width(), 0);
1291 if (hasHorizontalScrollbar() && 1292 if (hasHorizontalScrollbar() &&
1292 horizontalScrollbar()->shouldParticipateInHitTesting()) { 1293 horizontalScrollbar()->shouldParticipateInHitTesting()) {
1293 // TODO(crbug.com/638981): Are the conversions to int intentional? 1294 // TODO(crbug.com/638981): Are the conversions to int intentional?
1294 LayoutRect hBarRect( 1295 LayoutRect hBarRect(
1295 horizontalScrollbarStart(0), 1296 horizontalScrollbarStart(0),
1296 (box().size().height() - box().borderBottom() - 1297 (box().size().height() - box().borderBottom() -
1297 horizontalScrollbar()->height()) 1298 horizontalScrollbar()->scrollbarThickness())
1298 .toInt(), 1299 .toInt(),
1299 (box().size().width() - (box().borderLeft() + box().borderRight()) - 1300 (box().size().width() - (box().borderLeft() + box().borderRight()) -
1300 (hasVerticalScrollbar() ? verticalScrollbar()->width() 1301 (hasVerticalScrollbar() ? verticalScrollbar()->scrollbarThickness()
1301 : resizeControlSize)) 1302 : resizeControlSize))
1302 .toInt(), 1303 .toInt(),
1303 horizontalScrollbar()->height()); 1304 horizontalScrollbar()->scrollbarThickness());
1304 if (hBarRect.contains(localPoint)) { 1305 if (hBarRect.contains(localPoint)) {
1305 result.setScrollbar(horizontalScrollbar()); 1306 result.setScrollbar(horizontalScrollbar());
1306 return true; 1307 return true;
1307 } 1308 }
1308 } 1309 }
1309 1310
1310 // FIXME: We should hit test the m_scrollCorner and pass it back through the r esult. 1311 // FIXME: We should hit test the m_scrollCorner and pass it back through the r esult.
1311 1312
1312 return false; 1313 return false;
1313 } 1314 }
(...skipping 637 matching lines...) Expand 10 before | Expand all | Expand 10 after
1951 1952
1952 void PaintLayerScrollableArea::DelayScrollPositionClampScope:: 1953 void PaintLayerScrollableArea::DelayScrollPositionClampScope::
1953 clampScrollableAreas() { 1954 clampScrollableAreas() {
1954 for (auto& scrollableArea : *s_needsClamp) 1955 for (auto& scrollableArea : *s_needsClamp)
1955 scrollableArea->clampScrollPositionsAfterLayout(); 1956 scrollableArea->clampScrollPositionsAfterLayout();
1956 delete s_needsClamp; 1957 delete s_needsClamp;
1957 s_needsClamp = nullptr; 1958 s_needsClamp = nullptr;
1958 } 1959 }
1959 1960
1960 } // namespace blink 1961 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/LayoutTests/TestExpectations ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698