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

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

Issue 2900513002: Move CalculateScrollbarModes from FrameView to LayoutView. (Closed)
Patch Set: Created 3 years, 7 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 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights
3 * reserved. 3 * reserved.
4 * 4 *
5 * Portions are Copyright (C) 1998 Netscape Communications Corporation. 5 * Portions are Copyright (C) 1998 Netscape Communications Corporation.
6 * 6 *
7 * Other contributors: 7 * Other contributors:
8 * Robert O'Callahan <roc+@cs.cmu.edu> 8 * Robert O'Callahan <roc+@cs.cmu.edu>
9 * David Baron <dbaron@fas.harvard.edu> 9 * David Baron <dbaron@fas.harvard.edu>
10 * Christian Biesinger <cbiesinger@gmail.com> 10 * Christian Biesinger <cbiesinger@gmail.com>
(...skipping 647 matching lines...) Expand 10 before | Expand all | Expand 10 after
658 if (FrameView* frame_view = frame->View()) 658 if (FrameView* frame_view = frame->View())
659 frame_view->RemoveAnimatingScrollableArea(this); 659 frame_view->RemoveAnimatingScrollableArea(this);
660 } 660 }
661 } 661 }
662 662
663 bool PaintLayerScrollableArea::UserInputScrollable( 663 bool PaintLayerScrollableArea::UserInputScrollable(
664 ScrollbarOrientation orientation) const { 664 ScrollbarOrientation orientation) const {
665 if (Box().IsIntrinsicallyScrollable(orientation)) 665 if (Box().IsIntrinsicallyScrollable(orientation))
666 return true; 666 return true;
667 667
668 if (Box().IsLayoutView()) { 668 if (Box().IsLayoutView()) {
szager1 2017/05/22 18:29:35 General observation: we should probably work towar
skobes 2017/05/22 19:15:10 Agreed. Scrollability is a big mess right now wit
669 if (LocalFrame* frame = Box().GetFrame()) { 669 ScrollbarMode h_mode;
670 if (FrameView* frame_view = frame->View()) { 670 ScrollbarMode v_mode;
671 ScrollbarMode h_mode; 671 ToLayoutView(Box()).CalculateScrollbarModes(h_mode, v_mode);
672 ScrollbarMode v_mode; 672 if (orientation == kHorizontalScrollbar && h_mode == kScrollbarAlwaysOff)
673 frame_view->CalculateScrollbarModes(h_mode, v_mode); 673 return false;
674 if (orientation == kHorizontalScrollbar && 674 if (orientation == kVerticalScrollbar && v_mode == kScrollbarAlwaysOff)
675 h_mode == kScrollbarAlwaysOff) 675 return false;
676 return false;
677 if (orientation == kVerticalScrollbar && v_mode == kScrollbarAlwaysOff)
678 return false;
679 }
680 }
681 } 676 }
682 677
683 EOverflow overflow_style = (orientation == kHorizontalScrollbar) 678 EOverflow overflow_style = (orientation == kHorizontalScrollbar)
684 ? Box().Style()->OverflowX() 679 ? Box().Style()->OverflowX()
685 : Box().Style()->OverflowY(); 680 : Box().Style()->OverflowY();
686 return (overflow_style == EOverflow::kScroll || 681 return (overflow_style == EOverflow::kScroll ||
687 overflow_style == EOverflow::kAuto || 682 overflow_style == EOverflow::kAuto ||
688 overflow_style == EOverflow::kOverlay); 683 overflow_style == EOverflow::kOverlay);
689 } 684 }
690 685
(...skipping 593 matching lines...) Expand 10 before | Expand all | Expand 10 after
1284 Box().IsRooted() && this->HasVerticalOverflow() && 1279 Box().IsRooted() && this->HasVerticalOverflow() &&
1285 Box().PixelSnappedClientWidth() + Box().VerticalScrollbarWidth() > 0; 1280 Box().PixelSnappedClientWidth() + Box().VerticalScrollbarWidth() > 0;
1286 } 1281 }
1287 1282
1288 // Look for the scrollbarModes and reset the needs Horizontal & vertical 1283 // Look for the scrollbarModes and reset the needs Horizontal & vertical
1289 // Scrollbar values based on scrollbarModes, as during force style change 1284 // Scrollbar values based on scrollbarModes, as during force style change
1290 // StyleResolver::styleForDocument returns documentStyle with no overflow 1285 // StyleResolver::styleForDocument returns documentStyle with no overflow
1291 // values, due to which we are destroying the scrollbars that were already 1286 // values, due to which we are destroying the scrollbars that were already
1292 // present. 1287 // present.
1293 if (Box().IsLayoutView()) { 1288 if (Box().IsLayoutView()) {
1294 if (LocalFrame* frame = Box().GetFrame()) { 1289 ScrollbarMode h_mode;
1295 if (FrameView* frame_view = frame->View()) { 1290 ScrollbarMode v_mode;
1296 ScrollbarMode h_mode; 1291 ToLayoutView(Box()).CalculateScrollbarModes(h_mode, v_mode);
1297 ScrollbarMode v_mode; 1292 if (h_mode == kScrollbarAlwaysOn)
1298 frame_view->CalculateScrollbarModes(h_mode, v_mode); 1293 needs_horizontal_scrollbar = true;
1299 if (h_mode == kScrollbarAlwaysOn) 1294 else if (h_mode == kScrollbarAlwaysOff)
1300 needs_horizontal_scrollbar = true; 1295 needs_horizontal_scrollbar = false;
1301 else if (h_mode == kScrollbarAlwaysOff) 1296 if (v_mode == kScrollbarAlwaysOn)
1302 needs_horizontal_scrollbar = false; 1297 needs_vertical_scrollbar = true;
1303 if (v_mode == kScrollbarAlwaysOn) 1298 else if (v_mode == kScrollbarAlwaysOff)
1304 needs_vertical_scrollbar = true; 1299 needs_vertical_scrollbar = false;
1305 else if (v_mode == kScrollbarAlwaysOff)
1306 needs_vertical_scrollbar = false;
1307 }
1308 }
1309 } 1300 }
1310 } 1301 }
1311 1302
1312 bool PaintLayerScrollableArea::SetHasHorizontalScrollbar(bool has_scrollbar) { 1303 bool PaintLayerScrollableArea::SetHasHorizontalScrollbar(bool has_scrollbar) {
1313 if (FreezeScrollbarsScope::ScrollbarsAreFrozen()) 1304 if (FreezeScrollbarsScope::ScrollbarsAreFrozen())
1314 return false; 1305 return false;
1315 1306
1316 if (has_scrollbar == HasHorizontalScrollbar()) 1307 if (has_scrollbar == HasHorizontalScrollbar())
1317 return false; 1308 return false;
1318 1309
(...skipping 454 matching lines...) Expand 10 before | Expand all | Expand 10 after
1773 1764
1774 FrameView* frame_view = frame->View(); 1765 FrameView* frame_view = frame->View();
1775 if (!frame_view) 1766 if (!frame_view)
1776 return; 1767 return;
1777 1768
1778 bool is_visible_to_hit_test = Box().Style()->VisibleToHitTesting(); 1769 bool is_visible_to_hit_test = Box().Style()->VisibleToHitTesting();
1779 bool did_scroll_overflow = scrolls_overflow_; 1770 bool did_scroll_overflow = scrolls_overflow_;
1780 if (Box().IsLayoutView()) { 1771 if (Box().IsLayoutView()) {
1781 ScrollbarMode h_mode; 1772 ScrollbarMode h_mode;
1782 ScrollbarMode v_mode; 1773 ScrollbarMode v_mode;
1783 frame_view->CalculateScrollbarModes(h_mode, v_mode); 1774 ToLayoutView(Box()).CalculateScrollbarModes(h_mode, v_mode);
1784 if (h_mode == kScrollbarAlwaysOff && v_mode == kScrollbarAlwaysOff) 1775 if (h_mode == kScrollbarAlwaysOff && v_mode == kScrollbarAlwaysOff)
1785 has_overflow = false; 1776 has_overflow = false;
1786 } 1777 }
1787 scrolls_overflow_ = has_overflow && is_visible_to_hit_test; 1778 scrolls_overflow_ = has_overflow && is_visible_to_hit_test;
1788 if (did_scroll_overflow == ScrollsOverflow()) 1779 if (did_scroll_overflow == ScrollsOverflow())
1789 return; 1780 return;
1790 1781
1791 if (RuntimeEnabledFeatures::slimmingPaintInvalidationEnabled()) { 1782 if (RuntimeEnabledFeatures::slimmingPaintInvalidationEnabled()) {
1792 // The scroll and scroll offset properties depend on |scrollsOverflow| (see: 1783 // The scroll and scroll offset properties depend on |scrollsOverflow| (see:
1793 // PaintPropertyTreeBuilder::updateScrollAndScrollTranslation). 1784 // PaintPropertyTreeBuilder::updateScrollAndScrollTranslation).
(...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after
2194 2185
2195 void PaintLayerScrollableArea::DelayScrollOffsetClampScope:: 2186 void PaintLayerScrollableArea::DelayScrollOffsetClampScope::
2196 ClampScrollableAreas() { 2187 ClampScrollableAreas() {
2197 for (auto& scrollable_area : *needs_clamp_) 2188 for (auto& scrollable_area : *needs_clamp_)
2198 scrollable_area->ClampScrollOffsetAfterOverflowChange(); 2189 scrollable_area->ClampScrollOffsetAfterOverflowChange();
2199 delete needs_clamp_; 2190 delete needs_clamp_;
2200 needs_clamp_ = nullptr; 2191 needs_clamp_ = nullptr;
2201 } 2192 }
2202 2193
2203 } // namespace blink 2194 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698