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

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

Issue 2392443009: reflow comments in core/paint (Closed)
Patch Set: 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "core/paint/PaintInvalidationCapableScrollableArea.h" 5 #include "core/paint/PaintInvalidationCapableScrollableArea.h"
6 6
7 #include "core/frame/Settings.h" 7 #include "core/frame/Settings.h"
8 #include "core/html/HTMLFrameOwnerElement.h" 8 #include "core/html/HTMLFrameOwnerElement.h"
9 #include "core/layout/LayoutBox.h" 9 #include "core/layout/LayoutBox.h"
10 #include "core/layout/LayoutScrollbar.h" 10 #include "core/layout/LayoutScrollbar.h"
(...skipping 16 matching lines...) Expand all
27 scrollbar, PaintInvalidationScroll); 27 scrollbar, PaintInvalidationScroll);
28 28
29 ScrollableArea::willRemoveScrollbar(scrollbar, orientation); 29 ScrollableArea::willRemoveScrollbar(scrollbar, orientation);
30 } 30 }
31 31
32 static LayoutRect scrollControlPaintInvalidationRect( 32 static LayoutRect scrollControlPaintInvalidationRect(
33 const IntRect& scrollControlRect, 33 const IntRect& scrollControlRect,
34 const LayoutBox& box, 34 const LayoutBox& box,
35 const PaintInvalidatorContext& context) { 35 const PaintInvalidatorContext& context) {
36 LayoutRect paintInvalidationRect(scrollControlRect); 36 LayoutRect paintInvalidationRect(scrollControlRect);
37 // No need to apply any paint offset. Scroll controls paint in a different tra nsform space than their contained box 37 // No need to apply any paint offset. Scroll controls paint in a different
38 // (the scrollbarPaintOffset transform node). 38 // transform space than their contained box (the scrollbarPaintOffset
39 // transform node).
39 if (!paintInvalidationRect.isEmpty() && 40 if (!paintInvalidationRect.isEmpty() &&
40 !RuntimeEnabledFeatures::slimmingPaintV2Enabled()) 41 !RuntimeEnabledFeatures::slimmingPaintV2Enabled())
41 context.mapLocalRectToPaintInvalidationBacking(box, paintInvalidationRect); 42 context.mapLocalRectToPaintInvalidationBacking(box, paintInvalidationRect);
42 return paintInvalidationRect; 43 return paintInvalidationRect;
43 } 44 }
44 45
45 // Returns true if the scroll control is invalidated. 46 // Returns true if the scroll control is invalidated.
46 static bool invalidatePaintOfScrollControlIfNeeded( 47 static bool invalidatePaintOfScrollControlIfNeeded(
47 const LayoutRect& newPaintInvalidationRect, 48 const LayoutRect& newPaintInvalidationRect,
48 const LayoutRect& previousPaintInvalidationRect, 49 const LayoutRect& previousPaintInvalidationRect,
(...skipping 19 matching lines...) Expand all
68 static void invalidatePaintOfScrollbarIfNeeded( 69 static void invalidatePaintOfScrollbarIfNeeded(
69 Scrollbar* scrollbar, 70 Scrollbar* scrollbar,
70 GraphicsLayer* graphicsLayer, 71 GraphicsLayer* graphicsLayer,
71 bool& previouslyWasOverlay, 72 bool& previouslyWasOverlay,
72 LayoutRect& previousPaintInvalidationRect, 73 LayoutRect& previousPaintInvalidationRect,
73 bool needsPaintInvalidationArg, 74 bool needsPaintInvalidationArg,
74 LayoutBox& box, 75 LayoutBox& box,
75 const PaintInvalidatorContext& context) { 76 const PaintInvalidatorContext& context) {
76 bool isOverlay = scrollbar && scrollbar->isOverlayScrollbar(); 77 bool isOverlay = scrollbar && scrollbar->isOverlayScrollbar();
77 78
78 // Calculate paint invalidation rect of the scrollbar, except overlay composit ed scrollbars because we invalidate the graphics layer only. 79 // Calculate paint invalidation rect of the scrollbar, except overlay
80 // composited scrollbars because we invalidate the graphics layer only.
79 LayoutRect newPaintInvalidationRect; 81 LayoutRect newPaintInvalidationRect;
80 if (scrollbar && !(graphicsLayer && isOverlay)) 82 if (scrollbar && !(graphicsLayer && isOverlay))
81 newPaintInvalidationRect = scrollControlPaintInvalidationRect( 83 newPaintInvalidationRect = scrollControlPaintInvalidationRect(
82 scrollbar->frameRect(), box, context); 84 scrollbar->frameRect(), box, context);
83 85
84 bool needsPaintInvalidation = needsPaintInvalidationArg; 86 bool needsPaintInvalidation = needsPaintInvalidationArg;
85 if (needsPaintInvalidation && graphicsLayer) { 87 if (needsPaintInvalidation && graphicsLayer) {
86 // If the scrollbar needs paint invalidation but didn't change location/size or the scrollbar is an 88 // If the scrollbar needs paint invalidation but didn't change location/size
87 // overlay scrollbar (paint invalidation rect is empty), invalidating the gr aphics layer is enough 89 // or the scrollbar is an overlay scrollbar (paint invalidation rect is
88 // (which has been done in ScrollableArea::setScrollbarNeedsPaintInvalidatio n()). 90 // empty), invalidating the graphics layer is enough (which has been done in
89 // Otherwise invalidatePaintOfScrollControlIfNeeded() below will invalidate the old and new location 91 // ScrollableArea::setScrollbarNeedsPaintInvalidation()).
90 // of the scrollbar on the box's paint invalidation container to ensure newl y expanded/shrunk areas 92 // Otherwise invalidatePaintOfScrollControlIfNeeded() below will invalidate
91 // of the box to be invalidated. 93 // the old and new location of the scrollbar on the box's paint invalidation
94 // container to ensure newly expanded/shrunk areas of the box to be
95 // invalidated.
92 needsPaintInvalidation = false; 96 needsPaintInvalidation = false;
93 DCHECK(!graphicsLayer->drawsContent() || 97 DCHECK(!graphicsLayer->drawsContent() ||
94 graphicsLayer->getPaintController().cacheIsEmpty()); 98 graphicsLayer->getPaintController().cacheIsEmpty());
95 } 99 }
96 100
97 // Invalidate the box's display item client if the box's padding box size is a ffected by change of the 101 // Invalidate the box's display item client if the box's padding box size is
98 // non-overlay scrollbar width. We detect change of paint invalidation rect si ze instead of change of 102 // affected by change of the non-overlay scrollbar width. We detect change of
99 // scrollbar width change, which may have some false-positives (e.g. the scrol lbar changed length but 103 // paint invalidation rect size instead of change of scrollbar width change,
100 // not width) but won't invalidate more than expected because in the false-pos itive case the box must 104 // which may have some false-positives (e.g. the scrollbar changed length but
101 // have changed size and have been invalidated. 105 // not width) but won't invalidate more than expected because in the
106 // false-positive case the box must have changed size and have been
107 // invalidated.
102 const LayoutBoxModelObject& paintInvalidationContainer = 108 const LayoutBoxModelObject& paintInvalidationContainer =
103 *context.paintInvalidationContainer; 109 *context.paintInvalidationContainer;
104 LayoutSize newScrollbarUsedSpaceInBox; 110 LayoutSize newScrollbarUsedSpaceInBox;
105 if (!isOverlay) 111 if (!isOverlay)
106 newScrollbarUsedSpaceInBox = newPaintInvalidationRect.size(); 112 newScrollbarUsedSpaceInBox = newPaintInvalidationRect.size();
107 LayoutSize previousScrollbarUsedSpaceInBox; 113 LayoutSize previousScrollbarUsedSpaceInBox;
108 if (!previouslyWasOverlay) 114 if (!previouslyWasOverlay)
109 previousScrollbarUsedSpaceInBox = previousPaintInvalidationRect.size(); 115 previousScrollbarUsedSpaceInBox = previousPaintInvalidationRect.size();
110 if (newScrollbarUsedSpaceInBox != previousScrollbarUsedSpaceInBox) { 116 if (newScrollbarUsedSpaceInBox != previousScrollbarUsedSpaceInBox) {
111 context.paintingLayer->setNeedsRepaint(); 117 context.paintingLayer->setNeedsRepaint();
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
192 fullBounds.unite(m_scrollCornerAndResizerPreviousPaintInvalidationRect); 198 fullBounds.unite(m_scrollCornerAndResizerPreviousPaintInvalidationRect);
193 return fullBounds; 199 return fullBounds;
194 } 200 }
195 201
196 void PaintInvalidationCapableScrollableArea:: 202 void PaintInvalidationCapableScrollableArea::
197 scrollControlWasSetNeedsPaintInvalidation() { 203 scrollControlWasSetNeedsPaintInvalidation() {
198 layoutBox()->setMayNeedPaintInvalidation(); 204 layoutBox()->setMayNeedPaintInvalidation();
199 } 205 }
200 206
201 } // namespace blink 207 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698