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

Unified Diff: Source/core/rendering/compositing/CompositedLayerMapping.cpp

Issue 303253004: Allow proper highlighting on universal overflow scroll. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 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 side-by-side diff with in-line comments
Download patch
Index: Source/core/rendering/compositing/CompositedLayerMapping.cpp
diff --git a/Source/core/rendering/compositing/CompositedLayerMapping.cpp b/Source/core/rendering/compositing/CompositedLayerMapping.cpp
index 3f3eeb5bc620195b3bcd7e04d5f38dbf2058e7f6..a00b8dc0649adc7f2167d35fcb253deb51677518 100644
--- a/Source/core/rendering/compositing/CompositedLayerMapping.cpp
+++ b/Source/core/rendering/compositing/CompositedLayerMapping.cpp
@@ -176,6 +176,7 @@ CompositedLayerMapping::CompositedLayerMapping(RenderLayer& layer)
, m_backgroundLayerPaintsFixedRootBackground(false)
, m_needToUpdateGraphicsLayer(false)
, m_needToUpdateGraphicsLayerOfAllDecendants(false)
+ , m_scrollingContentsAreEmpty(false)
{
if (layer.isRootLayer() && renderer()->frame()->isMainFrame())
m_isMainFrameRenderViewLayer = true;
@@ -1051,6 +1052,20 @@ void CompositedLayerMapping::updateContentsRect()
m_graphicsLayer->setContentsRect(pixelSnappedIntRect(contentsBox()));
}
+void CompositedLayerMapping::updateScrollingContentsForSelectionGaps(const IntRect& blockSelectionGapsBounds)
+{
+ if (!m_scrollingContentsAreEmpty || !m_scrollingContentsLayer)
+ return;
+
+ if (blockSelectionGapsBounds.isEmpty()) {
+ m_scrollingContentsLayer->setDrawsContent(false);
+ return;
+ }
+
+ m_scrollingContentsLayer->setDrawsContent(true);
+ m_scrollingContentsLayer->setContentsRect(IntRect());
Ian Vollick 2014/06/03 17:11:47 It's weird that you can pass the empty rect. Can y
hartmanng 2014/06/04 15:32:32 It turns out that the contents rect isn't being us
hartmanng 2014/06/05 15:59:37 Done (in patch set 7).
+}
+
void CompositedLayerMapping::updateDrawsContent()
{
if (m_scrollingLayer) {
@@ -1062,7 +1077,13 @@ void CompositedLayerMapping::updateDrawsContent()
m_graphicsLayer->setDrawsContent(hasNonScrollingPaintedContent);
bool hasScrollingPaintedContent = m_owningLayer.hasVisibleContent() && (renderer()->hasBackground() || paintsChildren());
- m_scrollingContentsLayer->setDrawsContent(hasScrollingPaintedContent);
+ m_scrollingContentsAreEmpty = !hasScrollingPaintedContent;
+
+ IntRect gapRect = owningLayer().blockSelectionGapsBounds();
+ bool shouldDrawContent = !m_scrollingContentsAreEmpty || !gapRect.isEmpty();
+ m_scrollingContentsLayer->setDrawsContent(shouldDrawContent);
+ if (shouldDrawContent && m_scrollingContentsAreEmpty)
+ m_scrollingContentsLayer->setContentsRect(IntRect());
return;
}

Powered by Google App Engine
This is Rietveld 408576698