Changeset 21363 in webkit


Ignore:
Timestamp:
May 10, 2007 3:14:21 AM (17 years ago)
Author:
hyatt
Message:

Fix for:

<rdar://problem/4778099> Links with nested continuations fail to
paint their outlines (11255)


http://bugs.webkit.org/show_bug.cgi?id=11255

Fix multiple bugs with outline painting of continuations to ensure that
all combos work (empty/full inline - block with/without margins -
empty/full inline).

Reviewed by mitz

fast/inline/continuation-outlines.html

  • rendering/RenderBlock.cpp: (WebCore::RenderBlock::paintObject):
  • rendering/RenderFlow.cpp: (WebCore::RenderFlow::addFocusRingRects):
Location:
trunk/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r21360 r21363  
     12007-05-10  David Hyatt  <hyatt@apple.com>
     2
     3        Fix for:
     4
     5        <rdar://problem/4778099> Links with nested continuations fail to
     6        paint their outlines (11255)
     7       
     8        http://bugs.webkit.org/show_bug.cgi?id=11255
     9
     10        Fix multiple bugs with outline painting of continuations to ensure that
     11        all combos work (empty/full inline - block with/without margins -
     12        empty/full inline).
     13
     14        Reviewed by mitz
     15
     16        fast/inline/continuation-outlines.html
     17
     18        * rendering/RenderBlock.cpp:
     19        (WebCore::RenderBlock::paintObject):
     20        * rendering/RenderFlow.cpp:
     21        (WebCore::RenderFlow::addFocusRingRects):
     22
    1232007-05-10  David Hyatt  <hyatt@apple.com>
    224
  • trunk/WebCore/rendering/RenderBlock.cpp

    r21360 r21363  
    15411541
    15421542    // 5. paint outline.
    1543     if (!inlineFlow && (paintPhase == PaintPhaseOutline || paintPhase == PaintPhaseSelfOutline)
    1544         && hasOutline() && style()->visibility() == VISIBLE)
    1545         RenderObject::paintOutline(paintInfo.context, tx, ty, width(), height(), style());
     1543    if (!inlineFlow && (paintPhase == PaintPhaseOutline || paintPhase == PaintPhaseSelfOutline) && style()->visibility() == VISIBLE) {
     1544        if (continuation() && continuation()->hasOutline()) {
     1545            RenderFlow* inlineFlow = static_cast<RenderFlow*>(continuation()->element()->renderer());
     1546            inlineFlow->paintOutline(paintInfo.context, tx - xPos() + inlineFlow->containingBlock()->xPos(),
     1547                                     ty - yPos() + inlineFlow->containingBlock()->yPos());
     1548        } else if (hasOutline())
     1549            RenderObject::paintOutline(paintInfo.context, tx, ty, width(), height(), style());
     1550    }
    15461551
    15471552    // 6. paint caret.
  • trunk/WebCore/rendering/RenderFlow.cpp

    r21183 r21363  
    672672void RenderFlow::addFocusRingRects(GraphicsContext* graphicsContext, int tx, int ty)
    673673{
    674     if (isRenderBlock())
    675        graphicsContext->addFocusRingRect(IntRect(tx, ty, width(), height()));
     674    if (isRenderBlock()) {
     675        // Continuations should include their margins in the outline rect.
     676        if (continuation())
     677            graphicsContext->addFocusRingRect(IntRect(tx, ty - collapsedMarginTop(), width(), height() + collapsedMarginTop() + collapsedMarginBottom()));
     678        else
     679            graphicsContext->addFocusRingRect(IntRect(tx, ty, width(), height()));
     680    }
    676681
    677682    if (!hasOverflowClip() && !hasControlClip()) {
     
    684689    }
    685690
    686     if (continuation())
    687         continuation()->addFocusRingRects(graphicsContext,
    688                                           tx - containingBlock()->xPos() + continuation()->xPos(),
    689                                           ty - containingBlock()->yPos() + continuation()->yPos());
     691    if (continuation()) {
     692        if (isInline())
     693            continuation()->addFocusRingRects(graphicsContext,
     694                                              tx - containingBlock()->xPos() + continuation()->xPos(),
     695                                              ty - containingBlock()->yPos() + continuation()->yPos());
     696        else
     697            continuation()->addFocusRingRects(graphicsContext,
     698                                              tx - xPos() + continuation()->containingBlock()->xPos(),
     699                                              ty - yPos() + continuation()->containingBlock()->yPos());
     700    }
    690701}
    691702
Note: See TracChangeset for help on using the changeset viewer.