[Webkit-unassigned] [Bug 71488] [CSSRegions]Add support for background-color in region styling
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Fri Nov 4 09:31:07 PDT 2011
https://bugs.webkit.org/show_bug.cgi?id=71488
Dave Hyatt <hyatt at apple.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Attachment #113529|review?, commit-queue? |review-, commit-queue-
Flag| |
--- Comment #2 from Dave Hyatt <hyatt at apple.com> 2011-11-04 09:31:07 PST ---
(From update of attachment 113529)
View in context: https://bugs.webkit.org/attachment.cgi?id=113529&action=review
> Source/WebCore/rendering/RenderBoxRegionInfo.cpp:59
> + // FIXME: assume for now that a box with region styling always has box decorations.
> + (const_cast<RenderBox*>(box))->setHasBoxDecorations(true);
You should be able to set this accurately. Do the same checks that were done for the real style.
> Source/WebCore/rendering/RenderBoxRegionInfo.h:56
> + RenderStyle* regionStyle() const { return m_regionStyle.get(); }
> + void setRegionStyle(PassRefPtr<RenderStyle>);
> + void computeStyleInRegion(const RenderBox*, RenderRegion*);
I think this should just be in RenderFlowThread in a separate map rather than part of RenderBoxRegionInfo.h. It has to work for all RenderObjects, so that's my mistake suggesting to put it here.
> Source/WebCore/rendering/RenderFlowThread.cpp:751
> + view()->setCurrentRenderRegion(startRegion);
Let's just remove this for now. I don't think it's the right place to be setting the current render region, and it's not relevant to getting background color working, so you can revisit this in a future patch.
> Source/WebCore/rendering/RenderFlowThread.cpp:769
> + view()->setCurrentRenderRegion(startRegion);
Same. Remove for now.
> Source/WebCore/rendering/RenderLayer.cpp:2548
> + renderer()->view()->setCurrentRenderRegion(region);
Who clears this when you're finished? It seems like this should be more like a stack... where you push the region and then pop back to the old one when finished. A little helper class might be good for this. I suspect this might be a problem with the current flow thread stuff in RenderView as well...
It seems like you could eliminate all of the RenderRegion* arguments I added to RenderLayer by just using this current region instead. Then you could set this in RenderRegion's painting and hit testing instead.
> Source/WebCore/rendering/RenderObject.cpp:1696
> + if (view() && view()->currentRenderRegion() && view()->currentRenderRegion()->hasCustomRegionStyle() && isBox() && !isAnonymous()) {
Check inRenderFlowThread(). That is a really fast check you can do right up front. I would also bias towards the common case first so:
if (!inRenderFlowThread() || ....)
return m_style.get();
// Now run your code.
--
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
More information about the webkit-unassigned
mailing list