Bug 87553

Summary: Incomplete repaint on twitter.com when replying to a tweet
Product: WebKit Reporter: Simon Fraser (smfr) <simon.fraser>
Component: Layout and RenderingAssignee: Simon Fraser (smfr) <simon.fraser>
Status: RESOLVED FIXED    
Severity: Normal CC: enne, eric, simon.fraser, thorton, webkit-bug-importer, webkit.review.bot
Priority: P2 Keywords: InRadar
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
Patch dino: review+

Simon Fraser (smfr)
Reported 2012-05-25 17:36:19 PDT
There's a bad repaint bug when replying to an individual tweet on Twitter.com: 1. Log in to twitter 2. Load an individual tweet, such as https://twitter.com/CityofSunnyvale/status/206160290834944000 3. Hit the Reply link 4. Hit one character in the reply box The box mostly disappears. As you type, bits of the screen update.
Attachments
Patch (8.80 KB, patch)
2012-05-29 13:21 PDT, Simon Fraser (smfr)
dino: review+
Simon Fraser (smfr)
Comment 1 2012-05-25 17:36:31 PDT
Simon Fraser (smfr)
Comment 2 2012-05-25 17:37:52 PDT
Fix is something like: diff --git a/Source/WebCore/rendering/RenderLayerBacking.cpp b/Source/WebCore/rendering/RenderLayerBacking.cpp index 1085eab..90a4d88 100644 --- a/Source/WebCore/rendering/RenderLayerBacking.cpp +++ b/Source/WebCore/rendering/RenderLayerBacking.cpp @@ -1121,6 +1121,19 @@ void RenderLayerBacking::setRequiresOwnBackingStore(bool flag) // cached clip rects, so when it changes we have to clear clip rects on descendants. m_owningLayer->clearClipRectsIncludingDescendants(PaintingClipRects); m_requiresOwnBackingStore = flag; + + // Find our painting ancestor and repaint it + RenderLayer* repaintAncestor = m_owningLayer->enclosingCompositingLayerForRepaint(); + if (repaintAncestor) { + ASSERT(repaintAncestor->backing()); + LayoutRect compBounds = compositedBounds(); + + LayoutPoint offset; + m_owningLayer->convertToLayerCoords(repaintAncestor, offset); + compBounds.moveBy(offset); + + repaintAncestor->setBackingNeedsRepaintInRect(compBounds); + } } void RenderLayerBacking::setContentsNeedDisplay() but this code could be shared with RenderLayerCompositor::layerWillBeRemoved
Simon Fraser (smfr)
Comment 3 2012-05-29 13:21:56 PDT
Simon Fraser (smfr)
Comment 4 2012-05-29 13:49:32 PDT
Note You need to log in before you can comment on or make changes to this bug.