| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2  * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 
| 3  *           (C) 1999 Antti Koivisto (koivisto@kde.org) | 3  *           (C) 1999 Antti Koivisto (koivisto@kde.org) | 
| 4  *           (C) 2007 David Smith (catfish.man@gmail.com) | 4  *           (C) 2007 David Smith (catfish.man@gmail.com) | 
| 5  * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc.
       All rights reserved. | 5  * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc.
       All rights reserved. | 
| 6  * Copyright (C) Research In Motion Limited 2010. All rights reserved. | 6  * Copyright (C) Research In Motion Limited 2010. All rights reserved. | 
| 7  * | 7  * | 
| 8  * This library is free software; you can redistribute it and/or | 8  * This library is free software; you can redistribute it and/or | 
| 9  * modify it under the terms of the GNU Library General Public | 9  * modify it under the terms of the GNU Library General Public | 
| 10  * License as published by the Free Software Foundation; either | 10  * License as published by the Free Software Foundation; either | 
| (...skipping 2925 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2936         } | 2936         } | 
| 2937     } | 2937     } | 
| 2938 } | 2938 } | 
| 2939 | 2939 | 
| 2940 void RenderBlock::paint(PaintInfo& paintInfo, const LayoutPoint& paintOffset) | 2940 void RenderBlock::paint(PaintInfo& paintInfo, const LayoutPoint& paintOffset) | 
| 2941 { | 2941 { | 
| 2942     ANNOTATE_GRAPHICS_CONTEXT(paintInfo, this); | 2942     ANNOTATE_GRAPHICS_CONTEXT(paintInfo, this); | 
| 2943 | 2943 | 
| 2944     LayoutPoint adjustedPaintOffset = paintOffset + location(); | 2944     LayoutPoint adjustedPaintOffset = paintOffset + location(); | 
| 2945 | 2945 | 
| 2946     PaintPhase phase = paintInfo.phase; | 2946     PaintPhase phase = paintInfo.getPhase(); | 
| 2947 | 2947 | 
| 2948     // Check if we need to do anything at all. | 2948     // Check if we need to do anything at all. | 
| 2949     // FIXME: Could eliminate the isRoot() check if we fix background painting s
      o that the RenderView | 2949     // FIXME: Could eliminate the isRoot() check if we fix background painting s
      o that the RenderView | 
| 2950     // paints the root's background. | 2950     // paints the root's background. | 
| 2951     if (!isRoot()) { | 2951     if (!isRoot()) { | 
| 2952         LayoutRect overflowBox = overflowRectForPaintRejection(); | 2952         LayoutRect overflowBox = overflowRectForPaintRejection(); | 
| 2953         flipForWritingMode(overflowBox); | 2953         flipForWritingMode(overflowBox); | 
| 2954         overflowBox.inflate(maximalOutlineSize(paintInfo.phase)); | 2954         overflowBox.inflate(maximalOutlineSize(paintInfo.getPhase())); | 
| 2955         overflowBox.moveBy(adjustedPaintOffset); | 2955         overflowBox.moveBy(adjustedPaintOffset); | 
| 2956         if (!overflowBox.intersects(paintInfo.rect)) | 2956         if (!overflowBox.intersects(paintInfo.getRect())) | 
| 2957             return; | 2957             return; | 
| 2958     } | 2958     } | 
| 2959 | 2959 | 
| 2960     bool pushedClip = pushContentsClip(paintInfo, adjustedPaintOffset); | 2960     bool pushedClip = pushContentsClip(paintInfo, adjustedPaintOffset); | 
| 2961     paintObject(paintInfo, adjustedPaintOffset); | 2961     paintObject(paintInfo, adjustedPaintOffset); | 
| 2962     if (pushedClip) | 2962     if (pushedClip) | 
| 2963         popContentsClip(paintInfo, phase, adjustedPaintOffset); | 2963         popContentsClip(paintInfo, phase, adjustedPaintOffset); | 
| 2964 | 2964 | 
| 2965     // Our scrollbar widgets paint exactly when we tell them to, so that they wo
      rk properly with | 2965     // Our scrollbar widgets paint exactly when we tell them to, so that they wo
      rk properly with | 
| 2966     // z-index.  We paint after we painted the background/border, so that the sc
      rollbars will | 2966     // z-index.  We paint after we painted the background/border, so that the sc
      rollbars will | 
| 2967     // sit above the background/border. | 2967     // sit above the background/border. | 
| 2968     if (hasOverflowClip() && style()->visibility() == VISIBLE && (phase == Paint
      PhaseBlockBackground || phase == PaintPhaseChildBlockBackground) && paintInfo.sh
      ouldPaintWithinRoot(this) && !paintInfo.paintRootBackgroundOnly()) | 2968     if (hasOverflowClip() && style()->visibility() == VISIBLE && (phase == Paint
      PhaseBlockBackground || phase == PaintPhaseChildBlockBackground) && paintInfo.sh
      ouldPaintWithinRoot(this) && !paintInfo.paintRootBackgroundOnly()) | 
| 2969         layer()->paintOverflowControls(paintInfo.context, roundedIntPoint(adjust
      edPaintOffset), paintInfo.rect); | 2969         layer()->paintOverflowControls(paintInfo.getContext(), roundedIntPoint(a
      djustedPaintOffset), paintInfo.getRect()); | 
| 2970 } | 2970 } | 
| 2971 | 2971 | 
| 2972 void RenderBlock::paintColumnRules(PaintInfo& paintInfo, const LayoutPoint& pain
      tOffset) | 2972 void RenderBlock::paintColumnRules(PaintInfo& paintInfo, const LayoutPoint& pain
      tOffset) | 
| 2973 { | 2973 { | 
| 2974     if (paintInfo.context->paintingDisabled()) | 2974     if (paintInfo.getContext()->paintingDisabled()) | 
| 2975         return; | 2975         return; | 
| 2976 | 2976 | 
| 2977     const Color& ruleColor = resolveColor(CSSPropertyWebkitColumnRuleColor); | 2977     const Color& ruleColor = resolveColor(CSSPropertyWebkitColumnRuleColor); | 
| 2978     bool ruleTransparent = style()->columnRuleIsTransparent(); | 2978     bool ruleTransparent = style()->columnRuleIsTransparent(); | 
| 2979     EBorderStyle ruleStyle = style()->columnRuleStyle(); | 2979     EBorderStyle ruleStyle = style()->columnRuleStyle(); | 
| 2980     LayoutUnit ruleThickness = style()->columnRuleWidth(); | 2980     LayoutUnit ruleThickness = style()->columnRuleWidth(); | 
| 2981     LayoutUnit colGap = columnGap(); | 2981     LayoutUnit colGap = columnGap(); | 
| 2982     bool renderRule = ruleStyle > BHIDDEN && !ruleTransparent; | 2982     bool renderRule = ruleStyle > BHIDDEN && !ruleTransparent; | 
| 2983     if (!renderRule) | 2983     if (!renderRule) | 
| 2984         return; | 2984         return; | 
| 2985 | 2985 | 
| 2986     ColumnInfo* colInfo = columnInfo(); | 2986     ColumnInfo* colInfo = columnInfo(); | 
| 2987     unsigned colCount = columnCount(colInfo); | 2987     unsigned colCount = columnCount(colInfo); | 
| 2988 | 2988 | 
| 2989     bool antialias = shouldAntialiasLines(paintInfo.context); | 2989     bool antialias = shouldAntialiasLines(paintInfo.getContext()); | 
| 2990 | 2990 | 
| 2991     if (colInfo->progressionAxis() == ColumnInfo::InlineAxis) { | 2991     if (colInfo->progressionAxis() == ColumnInfo::InlineAxis) { | 
| 2992         bool leftToRight = style()->isLeftToRightDirection() ^ colInfo->progress
      ionIsReversed(); | 2992         bool leftToRight = style()->isLeftToRightDirection() ^ colInfo->progress
      ionIsReversed(); | 
| 2993         LayoutUnit currLogicalLeftOffset = leftToRight ? LayoutUnit() : contentL
      ogicalWidth(); | 2993         LayoutUnit currLogicalLeftOffset = leftToRight ? LayoutUnit() : contentL
      ogicalWidth(); | 
| 2994         LayoutUnit ruleAdd = logicalLeftOffsetForContent(); | 2994         LayoutUnit ruleAdd = logicalLeftOffsetForContent(); | 
| 2995         LayoutUnit ruleLogicalLeft = leftToRight ? LayoutUnit() : contentLogical
      Width(); | 2995         LayoutUnit ruleLogicalLeft = leftToRight ? LayoutUnit() : contentLogical
      Width(); | 
| 2996         LayoutUnit inlineDirectionSize = colInfo->desiredColumnWidth(); | 2996         LayoutUnit inlineDirectionSize = colInfo->desiredColumnWidth(); | 
| 2997         BoxSide boxSide = isHorizontalWritingMode() | 2997         BoxSide boxSide = isHorizontalWritingMode() | 
| 2998             ? leftToRight ? BSLeft : BSRight | 2998             ? leftToRight ? BSLeft : BSRight | 
| 2999             : leftToRight ? BSTop : BSBottom; | 2999             : leftToRight ? BSTop : BSBottom; | 
| 3000 | 3000 | 
| 3001         for (unsigned i = 0; i < colCount; i++) { | 3001         for (unsigned i = 0; i < colCount; i++) { | 
| 3002             // Move to the next position. | 3002             // Move to the next position. | 
| 3003             if (leftToRight) { | 3003             if (leftToRight) { | 
| 3004                 ruleLogicalLeft += inlineDirectionSize + colGap / 2; | 3004                 ruleLogicalLeft += inlineDirectionSize + colGap / 2; | 
| 3005                 currLogicalLeftOffset += inlineDirectionSize + colGap; | 3005                 currLogicalLeftOffset += inlineDirectionSize + colGap; | 
| 3006             } else { | 3006             } else { | 
| 3007                 ruleLogicalLeft -= (inlineDirectionSize + colGap / 2); | 3007                 ruleLogicalLeft -= (inlineDirectionSize + colGap / 2); | 
| 3008                 currLogicalLeftOffset -= (inlineDirectionSize + colGap); | 3008                 currLogicalLeftOffset -= (inlineDirectionSize + colGap); | 
| 3009             } | 3009             } | 
| 3010 | 3010 | 
| 3011             // Now paint the column rule. | 3011             // Now paint the column rule. | 
| 3012             if (i < colCount - 1) { | 3012             if (i < colCount - 1) { | 
| 3013                 LayoutUnit ruleLeft = isHorizontalWritingMode() ? paintOffset.x(
      ) + ruleLogicalLeft - ruleThickness / 2 + ruleAdd : paintOffset.x() + borderLeft
      () + paddingLeft(); | 3013                 LayoutUnit ruleLeft = isHorizontalWritingMode() ? paintOffset.x(
      ) + ruleLogicalLeft - ruleThickness / 2 + ruleAdd : paintOffset.x() + borderLeft
      () + paddingLeft(); | 
| 3014                 LayoutUnit ruleRight = isHorizontalWritingMode() ? ruleLeft + ru
      leThickness : ruleLeft + contentWidth(); | 3014                 LayoutUnit ruleRight = isHorizontalWritingMode() ? ruleLeft + ru
      leThickness : ruleLeft + contentWidth(); | 
| 3015                 LayoutUnit ruleTop = isHorizontalWritingMode() ? paintOffset.y()
       + borderTop() + paddingTop() : paintOffset.y() + ruleLogicalLeft - ruleThicknes
      s / 2 + ruleAdd; | 3015                 LayoutUnit ruleTop = isHorizontalWritingMode() ? paintOffset.y()
       + borderTop() + paddingTop() : paintOffset.y() + ruleLogicalLeft - ruleThicknes
      s / 2 + ruleAdd; | 
| 3016                 LayoutUnit ruleBottom = isHorizontalWritingMode() ? ruleTop + co
      ntentHeight() : ruleTop + ruleThickness; | 3016                 LayoutUnit ruleBottom = isHorizontalWritingMode() ? ruleTop + co
      ntentHeight() : ruleTop + ruleThickness; | 
| 3017                 IntRect pixelSnappedRuleRect = pixelSnappedIntRectFromEdges(rule
      Left, ruleTop, ruleRight, ruleBottom); | 3017                 IntRect pixelSnappedRuleRect = pixelSnappedIntRectFromEdges(rule
      Left, ruleTop, ruleRight, ruleBottom); | 
| 3018                 drawLineForBoxSide(paintInfo.context, pixelSnappedRuleRect.x(), 
      pixelSnappedRuleRect.y(), pixelSnappedRuleRect.maxX(), pixelSnappedRuleRect.maxY
      (), boxSide, ruleColor, ruleStyle, 0, 0, antialias); | 3018                 drawLineForBoxSide(paintInfo.getContext(), pixelSnappedRuleRect.
      x(), pixelSnappedRuleRect.y(), pixelSnappedRuleRect.maxX(), pixelSnappedRuleRect
      .maxY(), boxSide, ruleColor, ruleStyle, 0, 0, antialias); | 
| 3019             } | 3019             } | 
| 3020 | 3020 | 
| 3021             ruleLogicalLeft = currLogicalLeftOffset; | 3021             ruleLogicalLeft = currLogicalLeftOffset; | 
| 3022         } | 3022         } | 
| 3023     } else { | 3023     } else { | 
| 3024         bool topToBottom = !style()->isFlippedBlocksWritingMode() ^ colInfo->pro
      gressionIsReversed(); | 3024         bool topToBottom = !style()->isFlippedBlocksWritingMode() ^ colInfo->pro
      gressionIsReversed(); | 
| 3025         LayoutUnit ruleLeft = isHorizontalWritingMode() | 3025         LayoutUnit ruleLeft = isHorizontalWritingMode() | 
| 3026             ? borderLeft() + paddingLeft() | 3026             ? borderLeft() + paddingLeft() | 
| 3027             : colGap / 2 - colGap - ruleThickness / 2 + (!colInfo->progressionIs
      Reversed() ? borderBefore() + paddingBefore() : borderAfter() + paddingAfter()); | 3027             : colGap / 2 - colGap - ruleThickness / 2 + (!colInfo->progressionIs
      Reversed() ? borderBefore() + paddingBefore() : borderAfter() + paddingAfter()); | 
| 3028         LayoutUnit ruleWidth = isHorizontalWritingMode() ? contentWidth() : rule
      Thickness; | 3028         LayoutUnit ruleWidth = isHorizontalWritingMode() ? contentWidth() : rule
      Thickness; | 
| (...skipping 16 matching lines...) Expand all  Loading... | 
| 3045             ? topToBottom ? BSTop : BSBottom | 3045             ? topToBottom ? BSTop : BSBottom | 
| 3046             : topToBottom ? BSLeft : BSRight; | 3046             : topToBottom ? BSLeft : BSRight; | 
| 3047 | 3047 | 
| 3048         LayoutSize step(0, topToBottom ? colInfo->columnHeight() + colGap : -(co
      lInfo->columnHeight() + colGap)); | 3048         LayoutSize step(0, topToBottom ? colInfo->columnHeight() + colGap : -(co
      lInfo->columnHeight() + colGap)); | 
| 3049         if (!isHorizontalWritingMode()) | 3049         if (!isHorizontalWritingMode()) | 
| 3050             step = step.transposedSize(); | 3050             step = step.transposedSize(); | 
| 3051 | 3051 | 
| 3052         for (unsigned i = 1; i < colCount; i++) { | 3052         for (unsigned i = 1; i < colCount; i++) { | 
| 3053             ruleRect.move(step); | 3053             ruleRect.move(step); | 
| 3054             IntRect pixelSnappedRuleRect = pixelSnappedIntRect(ruleRect); | 3054             IntRect pixelSnappedRuleRect = pixelSnappedIntRect(ruleRect); | 
| 3055             drawLineForBoxSide(paintInfo.context, pixelSnappedRuleRect.x(), pixe
      lSnappedRuleRect.y(), pixelSnappedRuleRect.maxX(), pixelSnappedRuleRect.maxY(), 
      boxSide, ruleColor, ruleStyle, 0, 0, antialias); | 3055             drawLineForBoxSide(paintInfo.getContext(), pixelSnappedRuleRect.x(),
       pixelSnappedRuleRect.y(), pixelSnappedRuleRect.maxX(), pixelSnappedRuleRect.max
      Y(), boxSide, ruleColor, ruleStyle, 0, 0, antialias); | 
| 3056         } | 3056         } | 
| 3057     } | 3057     } | 
| 3058 } | 3058 } | 
| 3059 | 3059 | 
| 3060 void RenderBlock::paintColumnContents(PaintInfo& paintInfo, const LayoutPoint& p
      aintOffset, bool paintingFloats) | 3060 void RenderBlock::paintColumnContents(PaintInfo& paintInfo, const LayoutPoint& p
      aintOffset, bool paintingFloats) | 
| 3061 { | 3061 { | 
| 3062     // We need to do multiple passes, breaking up our child painting into strips
      . | 3062     // We need to do multiple passes, breaking up our child painting into strips
      . | 
| 3063     GraphicsContext* context = paintInfo.context; | 3063     GraphicsContext* context = paintInfo.getContext(); | 
| 3064     ColumnInfo* colInfo = columnInfo(); | 3064     ColumnInfo* colInfo = columnInfo(); | 
| 3065     unsigned colCount = columnCount(colInfo); | 3065     unsigned colCount = columnCount(colInfo); | 
| 3066     if (!colCount) | 3066     if (!colCount) | 
| 3067         return; | 3067         return; | 
| 3068     LayoutUnit currLogicalTopOffset = 0; | 3068     LayoutUnit currLogicalTopOffset = 0; | 
| 3069     LayoutUnit colGap = columnGap(); | 3069     LayoutUnit colGap = columnGap(); | 
| 3070     for (unsigned i = 0; i < colCount; i++) { | 3070     for (unsigned i = 0; i < colCount; i++) { | 
| 3071         // For each rect, we clip to the rect, and then we adjust our coords. | 3071         // For each rect, we clip to the rect, and then we adjust our coords. | 
| 3072         LayoutRect colRect = columnRectAt(colInfo, i); | 3072         LayoutRect colRect = columnRectAt(colInfo, i); | 
| 3073         flipForWritingMode(colRect); | 3073         flipForWritingMode(colRect); | 
| 3074         LayoutUnit logicalLeftOffset = (isHorizontalWritingMode() ? colRect.x() 
      : colRect.y()) - logicalLeftOffsetForContent(); | 3074         LayoutUnit logicalLeftOffset = (isHorizontalWritingMode() ? colRect.x() 
      : colRect.y()) - logicalLeftOffsetForContent(); | 
| 3075         LayoutSize offset = isHorizontalWritingMode() ? LayoutSize(logicalLeftOf
      fset, currLogicalTopOffset) : LayoutSize(currLogicalTopOffset, logicalLeftOffset
      ); | 3075         LayoutSize offset = isHorizontalWritingMode() ? LayoutSize(logicalLeftOf
      fset, currLogicalTopOffset) : LayoutSize(currLogicalTopOffset, logicalLeftOffset
      ); | 
| 3076         if (colInfo->progressionAxis() == ColumnInfo::BlockAxis) { | 3076         if (colInfo->progressionAxis() == ColumnInfo::BlockAxis) { | 
| 3077             if (isHorizontalWritingMode()) | 3077             if (isHorizontalWritingMode()) | 
| 3078                 offset.expand(0, colRect.y() - borderTop() - paddingTop()); | 3078                 offset.expand(0, colRect.y() - borderTop() - paddingTop()); | 
| 3079             else | 3079             else | 
| 3080                 offset.expand(colRect.x() - borderLeft() - paddingLeft(), 0); | 3080                 offset.expand(colRect.x() - borderLeft() - paddingLeft(), 0); | 
| 3081         } | 3081         } | 
| 3082         colRect.moveBy(paintOffset); | 3082         colRect.moveBy(paintOffset); | 
| 3083         PaintInfo info(paintInfo); | 3083         PaintInfo info(paintInfo); | 
| 3084         info.rect.intersect(pixelSnappedIntRect(colRect)); | 3084         info.getRect().intersect(pixelSnappedIntRect(colRect)); | 
| 3085 | 3085 | 
| 3086         if (!info.rect.isEmpty()) { | 3086         if (!info.getRect().isEmpty()) { | 
| 3087             GraphicsContextStateSaver stateSaver(*context); | 3087             GraphicsContextStateSaver stateSaver(*context); | 
| 3088             LayoutRect clipRect(colRect); | 3088             LayoutRect clipRect(colRect); | 
| 3089 | 3089 | 
| 3090             if (i < colCount - 1) { | 3090             if (i < colCount - 1) { | 
| 3091                 if (isHorizontalWritingMode()) | 3091                 if (isHorizontalWritingMode()) | 
| 3092                     clipRect.expand(colGap / 2, 0); | 3092                     clipRect.expand(colGap / 2, 0); | 
| 3093                 else | 3093                 else | 
| 3094                     clipRect.expand(0, colGap / 2); | 3094                     clipRect.expand(0, colGap / 2); | 
| 3095             } | 3095             } | 
| 3096             // Each strip pushes a clip, since column boxes are specified as bei
      ng | 3096             // Each strip pushes a clip, since column boxes are specified as bei
      ng | 
| 3097             // like overflow:hidden. | 3097             // like overflow:hidden. | 
| 3098             // FIXME: Content and column rules that extend outside column boxes 
      at the edges of the multi-column element | 3098             // FIXME: Content and column rules that extend outside column boxes 
      at the edges of the multi-column element | 
| 3099             // are clipped according to the 'overflow' property. | 3099             // are clipped according to the 'overflow' property. | 
| 3100             context->clip(pixelSnappedIntRect(clipRect)); | 3100             context->clip(pixelSnappedIntRect(clipRect)); | 
| 3101 | 3101 | 
| 3102             // Adjust our x and y when painting. | 3102             // Adjust our x and y when painting. | 
| 3103             LayoutPoint adjustedPaintOffset = paintOffset + offset; | 3103             LayoutPoint adjustedPaintOffset = paintOffset + offset; | 
| 3104             if (paintingFloats) | 3104             if (paintingFloats) | 
| 3105                 paintFloats(info, adjustedPaintOffset, paintInfo.phase == PaintP
      haseSelection || paintInfo.phase == PaintPhaseTextClip); | 3105                 paintFloats(info, adjustedPaintOffset, paintInfo.getPhase() == P
      aintPhaseSelection || paintInfo.getPhase() == PaintPhaseTextClip); | 
| 3106             else | 3106             else | 
| 3107                 paintContents(info, adjustedPaintOffset); | 3107                 paintContents(info, adjustedPaintOffset); | 
| 3108         } | 3108         } | 
| 3109 | 3109 | 
| 3110         LayoutUnit blockDelta = (isHorizontalWritingMode() ? colRect.height() : 
      colRect.width()); | 3110         LayoutUnit blockDelta = (isHorizontalWritingMode() ? colRect.height() : 
      colRect.width()); | 
| 3111         if (style()->isFlippedBlocksWritingMode()) | 3111         if (style()->isFlippedBlocksWritingMode()) | 
| 3112             currLogicalTopOffset += blockDelta; | 3112             currLogicalTopOffset += blockDelta; | 
| 3113         else | 3113         else | 
| 3114             currLogicalTopOffset -= blockDelta; | 3114             currLogicalTopOffset -= blockDelta; | 
| 3115     } | 3115     } | 
| 3116 } | 3116 } | 
| 3117 | 3117 | 
| 3118 void RenderBlock::paintContents(PaintInfo& paintInfo, const LayoutPoint& paintOf
      fset) | 3118 void RenderBlock::paintContents(PaintInfo& paintInfo, const LayoutPoint& paintOf
      fset) | 
| 3119 { | 3119 { | 
| 3120     // Avoid painting descendants of the root element when stylesheets haven't l
      oaded.  This eliminates FOUC. | 3120     // Avoid painting descendants of the root element when stylesheets haven't l
      oaded.  This eliminates FOUC. | 
| 3121     // It's ok not to draw, because later on, when all the stylesheets do load, 
      styleResolverChanged() on the Document | 3121     // It's ok not to draw, because later on, when all the stylesheets do load, 
      styleResolverChanged() on the Document | 
| 3122     // will do a full repaint. | 3122     // will do a full repaint. | 
| 3123     if (document()->didLayoutWithPendingStylesheets() && !isRenderView()) | 3123     if (document()->didLayoutWithPendingStylesheets() && !isRenderView()) | 
| 3124         return; | 3124         return; | 
| 3125 | 3125 | 
| 3126     if (childrenInline()) | 3126     if (childrenInline()) | 
| 3127         m_lineBoxes.paint(this, paintInfo, paintOffset); | 3127         m_lineBoxes.paint(this, paintInfo, paintOffset); | 
| 3128     else { | 3128     else { | 
| 3129         PaintPhase newPhase = (paintInfo.phase == PaintPhaseChildOutlines) ? Pai
      ntPhaseOutline : paintInfo.phase; | 3129         PaintPhase newPhase = (paintInfo.getPhase() == PaintPhaseChildOutlines) 
      ? PaintPhaseOutline : paintInfo.getPhase(); | 
| 3130         newPhase = (newPhase == PaintPhaseChildBlockBackgrounds) ? PaintPhaseChi
      ldBlockBackground : newPhase; | 3130         newPhase = (newPhase == PaintPhaseChildBlockBackgrounds) ? PaintPhaseChi
      ldBlockBackground : newPhase; | 
| 3131 | 3131 | 
| 3132         // We don't paint our own background, but we do let the kids paint their
       backgrounds. | 3132         // We don't paint our own background, but we do let the kids paint their
       backgrounds. | 
| 3133         PaintInfo paintInfoForChild(paintInfo); | 3133         PaintInfo paintInfoForChild(paintInfo); | 
| 3134         paintInfoForChild.phase = newPhase; | 3134         paintInfoForChild.setPhase(newPhase); | 
| 3135         paintInfoForChild.updatePaintingRootForChildren(this); | 3135         paintInfoForChild.updatePaintingRootForChildren(this); | 
| 3136         paintChildren(paintInfoForChild, paintOffset); | 3136         paintChildren(paintInfoForChild, paintOffset); | 
| 3137     } | 3137     } | 
| 3138 } | 3138 } | 
| 3139 | 3139 | 
| 3140 void RenderBlock::paintChildren(PaintInfo& paintInfo, const LayoutPoint& paintOf
      fset) | 3140 void RenderBlock::paintChildren(PaintInfo& paintInfo, const LayoutPoint& paintOf
      fset) | 
| 3141 { | 3141 { | 
| 3142     for (RenderBox* child = firstChildBox(); child; child = child->nextSiblingBo
      x()) | 3142     for (RenderBox* child = firstChildBox(); child; child = child->nextSiblingBo
      x()) | 
| 3143         paintChild(child, paintInfo, paintOffset); | 3143         paintChild(child, paintInfo, paintOffset); | 
| 3144 } | 3144 } | 
| (...skipping 15 matching lines...) Expand all  Loading... | 
| 3160     if (type == CursorCaret) { | 3160     if (type == CursorCaret) { | 
| 3161         caretPainter = frame()->selection()->caretRenderer(); | 3161         caretPainter = frame()->selection()->caretRenderer(); | 
| 3162         isContentEditable = frame()->selection()->rendererIsEditable(); | 3162         isContentEditable = frame()->selection()->rendererIsEditable(); | 
| 3163     } else { | 3163     } else { | 
| 3164         caretPainter = frame()->page()->dragCaretController()->caretRenderer(); | 3164         caretPainter = frame()->page()->dragCaretController()->caretRenderer(); | 
| 3165         isContentEditable = frame()->page()->dragCaretController()->isContentEdi
      table(); | 3165         isContentEditable = frame()->page()->dragCaretController()->isContentEdi
      table(); | 
| 3166     } | 3166     } | 
| 3167 | 3167 | 
| 3168     if (caretPainter == this && (isContentEditable || caretBrowsing)) { | 3168     if (caretPainter == this && (isContentEditable || caretBrowsing)) { | 
| 3169         if (type == CursorCaret) | 3169         if (type == CursorCaret) | 
| 3170             frame()->selection()->paintCaret(paintInfo.context, paintOffset, pai
      ntInfo.rect); | 3170             frame()->selection()->paintCaret(paintInfo.getContext(), paintOffset
      , paintInfo.getRect()); | 
| 3171         else | 3171         else | 
| 3172             frame()->page()->dragCaretController()->paintDragCaret(frame(), pain
      tInfo.context, paintOffset, paintInfo.rect); | 3172             frame()->page()->dragCaretController()->paintDragCaret(frame(), pain
      tInfo.getContext(), paintOffset, paintInfo.getRect()); | 
| 3173     } | 3173     } | 
| 3174 } | 3174 } | 
| 3175 | 3175 | 
| 3176 void RenderBlock::paintObject(PaintInfo& paintInfo, const LayoutPoint& paintOffs
      et) | 3176 void RenderBlock::paintObject(PaintInfo& paintInfo, const LayoutPoint& paintOffs
      et) | 
| 3177 { | 3177 { | 
| 3178     PaintPhase paintPhase = paintInfo.phase; | 3178     PaintPhase paintPhase = paintInfo.getPhase(); | 
| 3179 | 3179 | 
| 3180     // 1. paint background, borders etc | 3180     // 1. paint background, borders etc | 
| 3181     if ((paintPhase == PaintPhaseBlockBackground || paintPhase == PaintPhaseChil
      dBlockBackground) && style()->visibility() == VISIBLE) { | 3181     if ((paintPhase == PaintPhaseBlockBackground || paintPhase == PaintPhaseChil
      dBlockBackground) && style()->visibility() == VISIBLE) { | 
| 3182         if (hasBoxDecorations()) | 3182         if (hasBoxDecorations()) | 
| 3183             paintBoxDecorations(paintInfo, paintOffset); | 3183             paintBoxDecorations(paintInfo, paintOffset); | 
| 3184         if (hasColumns() && !paintInfo.paintRootBackgroundOnly()) | 3184         if (hasColumns() && !paintInfo.paintRootBackgroundOnly()) | 
| 3185             paintColumnRules(paintInfo, paintOffset); | 3185             paintColumnRules(paintInfo, paintOffset); | 
| 3186     } | 3186     } | 
| 3187 | 3187 | 
| 3188     if (paintPhase == PaintPhaseMask && style()->visibility() == VISIBLE) { | 3188     if (paintPhase == PaintPhaseMask && style()->visibility() == VISIBLE) { | 
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 3279     if (!floats) | 3279     if (!floats) | 
| 3280         return; | 3280         return; | 
| 3281 | 3281 | 
| 3282     const FloatingObjectSet& floatingObjectSet = floats->set(); | 3282     const FloatingObjectSet& floatingObjectSet = floats->set(); | 
| 3283     FloatingObjectSetIterator end = floatingObjectSet.end(); | 3283     FloatingObjectSetIterator end = floatingObjectSet.end(); | 
| 3284     for (FloatingObjectSetIterator it = floatingObjectSet.begin(); it != end; ++
      it) { | 3284     for (FloatingObjectSetIterator it = floatingObjectSet.begin(); it != end; ++
      it) { | 
| 3285         FloatingObject* r = *it; | 3285         FloatingObject* r = *it; | 
| 3286         // Only paint the object if our m_shouldPaint flag is set. | 3286         // Only paint the object if our m_shouldPaint flag is set. | 
| 3287         if (r->shouldPaint() && !r->m_renderer->hasSelfPaintingLayer()) { | 3287         if (r->shouldPaint() && !r->m_renderer->hasSelfPaintingLayer()) { | 
| 3288             PaintInfo currentPaintInfo(paintInfo); | 3288             PaintInfo currentPaintInfo(paintInfo); | 
| 3289             currentPaintInfo.phase = preservePhase ? paintInfo.phase : PaintPhas
      eBlockBackground; | 3289             PaintPhase phase = preservePhase ? paintInfo.getPhase() : PaintPhase
      BlockBackground; | 
|  | 3290             currentPaintInfo.setPhase(phase); | 
| 3290             LayoutPoint childPoint = flipFloatForWritingModeForChild(r, LayoutPo
      int(paintOffset.x() + xPositionForFloatIncludingMargin(r) - r->m_renderer->x(), 
      paintOffset.y() + yPositionForFloatIncludingMargin(r) - r->m_renderer->y())); | 3291             LayoutPoint childPoint = flipFloatForWritingModeForChild(r, LayoutPo
      int(paintOffset.x() + xPositionForFloatIncludingMargin(r) - r->m_renderer->x(), 
      paintOffset.y() + yPositionForFloatIncludingMargin(r) - r->m_renderer->y())); | 
| 3291             r->m_renderer->paint(currentPaintInfo, childPoint); | 3292             r->m_renderer->paint(currentPaintInfo, childPoint); | 
| 3292             if (!preservePhase) { | 3293             if (!preservePhase) { | 
| 3293                 currentPaintInfo.phase = PaintPhaseChildBlockBackgrounds; | 3294                 currentPaintInfo.setPhase(PaintPhaseChildBlockBackgrounds); | 
| 3294                 r->m_renderer->paint(currentPaintInfo, childPoint); | 3295                 r->m_renderer->paint(currentPaintInfo, childPoint); | 
| 3295                 currentPaintInfo.phase = PaintPhaseFloat; | 3296                 currentPaintInfo.setPhase(PaintPhaseFloat); | 
| 3296                 r->m_renderer->paint(currentPaintInfo, childPoint); | 3297                 r->m_renderer->paint(currentPaintInfo, childPoint); | 
| 3297                 currentPaintInfo.phase = PaintPhaseForeground; | 3298                 currentPaintInfo.setPhase(PaintPhaseForeground); | 
| 3298                 r->m_renderer->paint(currentPaintInfo, childPoint); | 3299                 r->m_renderer->paint(currentPaintInfo, childPoint); | 
| 3299                 currentPaintInfo.phase = PaintPhaseOutline; | 3300                 currentPaintInfo.setPhase(PaintPhaseOutline); | 
| 3300                 r->m_renderer->paint(currentPaintInfo, childPoint); | 3301                 r->m_renderer->paint(currentPaintInfo, childPoint); | 
| 3301             } | 3302             } | 
| 3302         } | 3303         } | 
| 3303     } | 3304     } | 
| 3304 } | 3305 } | 
| 3305 | 3306 | 
| 3306 RenderInline* RenderBlock::inlineElementContinuation() const | 3307 RenderInline* RenderBlock::inlineElementContinuation() const | 
| 3307 { | 3308 { | 
| 3308     RenderBoxModelObject* continuation = this->continuation(); | 3309     RenderBoxModelObject* continuation = this->continuation(); | 
| 3309     return continuation && continuation->isInline() ? toRenderInline(continuatio
      n) : 0; | 3310     return continuation && continuation->isInline() ? toRenderInline(continuatio
      n) : 0; | 
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 3426 | 3427 | 
| 3427     LayoutUnit lastTop = 0; | 3428     LayoutUnit lastTop = 0; | 
| 3428     LayoutUnit lastLeft = logicalLeftSelectionOffset(this, lastTop); | 3429     LayoutUnit lastLeft = logicalLeftSelectionOffset(this, lastTop); | 
| 3429     LayoutUnit lastRight = logicalRightSelectionOffset(this, lastTop); | 3430     LayoutUnit lastRight = logicalRightSelectionOffset(this, lastTop); | 
| 3430 | 3431 | 
| 3431     return selectionGaps(this, offsetFromRepaintContainer, IntSize(), lastTop, l
      astLeft, lastRight); | 3432     return selectionGaps(this, offsetFromRepaintContainer, IntSize(), lastTop, l
      astLeft, lastRight); | 
| 3432 } | 3433 } | 
| 3433 | 3434 | 
| 3434 void RenderBlock::paintSelection(PaintInfo& paintInfo, const LayoutPoint& paintO
      ffset) | 3435 void RenderBlock::paintSelection(PaintInfo& paintInfo, const LayoutPoint& paintO
      ffset) | 
| 3435 { | 3436 { | 
| 3436     if (shouldPaintSelectionGaps() && paintInfo.phase == PaintPhaseForeground) { | 3437     if (shouldPaintSelectionGaps() && paintInfo.getPhase() == PaintPhaseForegrou
      nd) { | 
| 3437         LayoutUnit lastTop = 0; | 3438         LayoutUnit lastTop = 0; | 
| 3438         LayoutUnit lastLeft = logicalLeftSelectionOffset(this, lastTop); | 3439         LayoutUnit lastLeft = logicalLeftSelectionOffset(this, lastTop); | 
| 3439         LayoutUnit lastRight = logicalRightSelectionOffset(this, lastTop); | 3440         LayoutUnit lastRight = logicalRightSelectionOffset(this, lastTop); | 
| 3440         GraphicsContextStateSaver stateSaver(*paintInfo.context); | 3441         GraphicsContextStateSaver stateSaver(*paintInfo.getContext()); | 
| 3441 | 3442 | 
| 3442         LayoutRect gapRectsBounds = selectionGaps(this, paintOffset, LayoutSize(
      ), lastTop, lastLeft, lastRight, &paintInfo); | 3443         LayoutRect gapRectsBounds = selectionGaps(this, paintOffset, LayoutSize(
      ), lastTop, lastLeft, lastRight, &paintInfo); | 
| 3443         if (!gapRectsBounds.isEmpty()) { | 3444         if (!gapRectsBounds.isEmpty()) { | 
| 3444             if (RenderLayer* layer = enclosingLayer()) { | 3445             if (RenderLayer* layer = enclosingLayer()) { | 
| 3445                 gapRectsBounds.moveBy(-paintOffset); | 3446                 gapRectsBounds.moveBy(-paintOffset); | 
| 3446                 if (!hasLayer()) { | 3447                 if (!hasLayer()) { | 
| 3447                     LayoutRect localBounds(gapRectsBounds); | 3448                     LayoutRect localBounds(gapRectsBounds); | 
| 3448                     flipForWritingMode(localBounds); | 3449                     flipForWritingMode(localBounds); | 
| 3449                     gapRectsBounds = localToContainerQuad(FloatRect(localBounds)
      , layer->renderer()).enclosingBoundingBox(); | 3450                     gapRectsBounds = localToContainerQuad(FloatRect(localBounds)
      , layer->renderer()).enclosingBoundingBox(); | 
| 3450                     if (layer->renderer()->hasOverflowClip()) | 3451                     if (layer->renderer()->hasOverflowClip()) | 
| 3451                         gapRectsBounds.move(layer->renderBox()->scrolledContentO
      ffset()); | 3452                         gapRectsBounds.move(layer->renderBox()->scrolledContentO
      ffset()); | 
| 3452                 } | 3453                 } | 
| 3453                 layer->addBlockSelectionGapsBounds(gapRectsBounds); | 3454                 layer->addBlockSelectionGapsBounds(gapRectsBounds); | 
| 3454             } | 3455             } | 
| 3455         } | 3456         } | 
| 3456     } | 3457     } | 
| 3457 } | 3458 } | 
| 3458 | 3459 | 
| 3459 static void clipOutPositionedObjects(const PaintInfo* paintInfo, const LayoutPoi
      nt& offset, TrackedRendererListHashSet* positionedObjects) | 3460 static void clipOutPositionedObjects(PaintInfo* paintInfo, const LayoutPoint& of
      fset, TrackedRendererListHashSet* positionedObjects) | 
| 3460 { | 3461 { | 
| 3461     if (!positionedObjects) | 3462     if (!positionedObjects) | 
| 3462         return; | 3463         return; | 
| 3463 | 3464 | 
| 3464     TrackedRendererListHashSet::const_iterator end = positionedObjects->end(); | 3465     TrackedRendererListHashSet::const_iterator end = positionedObjects->end(); | 
| 3465     for (TrackedRendererListHashSet::const_iterator it = positionedObjects->begi
      n(); it != end; ++it) { | 3466     for (TrackedRendererListHashSet::const_iterator it = positionedObjects->begi
      n(); it != end; ++it) { | 
| 3466         RenderBox* r = *it; | 3467         RenderBox* r = *it; | 
| 3467         paintInfo->context->clipOut(IntRect(offset.x() + r->x(), offset.y() + r-
      >y(), r->width(), r->height())); | 3468         paintInfo->getContext()->clipOut(IntRect(offset.x() + r->x(), offset.y()
       + r->y(), r->width(), r->height())); | 
| 3468     } | 3469     } | 
| 3469 } | 3470 } | 
| 3470 | 3471 | 
| 3471 static LayoutUnit blockDirectionOffset(RenderBlock* rootBlock, const LayoutSize&
       offsetFromRootBlock) | 3472 static LayoutUnit blockDirectionOffset(RenderBlock* rootBlock, const LayoutSize&
       offsetFromRootBlock) | 
| 3472 { | 3473 { | 
| 3473     return rootBlock->isHorizontalWritingMode() ? offsetFromRootBlock.height() :
       offsetFromRootBlock.width(); | 3474     return rootBlock->isHorizontalWritingMode() ? offsetFromRootBlock.height() :
       offsetFromRootBlock.width(); | 
| 3474 } | 3475 } | 
| 3475 | 3476 | 
| 3476 static LayoutUnit inlineDirectionOffset(RenderBlock* rootBlock, const LayoutSize
      & offsetFromRootBlock) | 3477 static LayoutUnit inlineDirectionOffset(RenderBlock* rootBlock, const LayoutSize
      & offsetFromRootBlock) | 
| 3477 { | 3478 { | 
| 3478     return rootBlock->isHorizontalWritingMode() ? offsetFromRootBlock.width() : 
      offsetFromRootBlock.height(); | 3479     return rootBlock->isHorizontalWritingMode() ? offsetFromRootBlock.width() : 
      offsetFromRootBlock.height(); | 
| 3479 } | 3480 } | 
| 3480 | 3481 | 
| 3481 LayoutRect RenderBlock::logicalRectToPhysicalRect(const LayoutPoint& rootBlockPh
      ysicalPosition, const LayoutRect& logicalRect) | 3482 LayoutRect RenderBlock::logicalRectToPhysicalRect(const LayoutPoint& rootBlockPh
      ysicalPosition, const LayoutRect& logicalRect) | 
| 3482 { | 3483 { | 
| 3483     LayoutRect result; | 3484     LayoutRect result; | 
| 3484     if (isHorizontalWritingMode()) | 3485     if (isHorizontalWritingMode()) | 
| 3485         result = logicalRect; | 3486         result = logicalRect; | 
| 3486     else | 3487     else | 
| 3487         result = LayoutRect(logicalRect.y(), logicalRect.x(), logicalRect.height
      (), logicalRect.width()); | 3488         result = LayoutRect(logicalRect.y(), logicalRect.x(), logicalRect.height
      (), logicalRect.width()); | 
| 3488     flipForWritingMode(result); | 3489     flipForWritingMode(result); | 
| 3489     result.moveBy(rootBlockPhysicalPosition); | 3490     result.moveBy(rootBlockPhysicalPosition); | 
| 3490     return result; | 3491     return result; | 
| 3491 } | 3492 } | 
| 3492 | 3493 | 
| 3493 GapRects RenderBlock::selectionGaps(RenderBlock* rootBlock, const LayoutPoint& r
      ootBlockPhysicalPosition, const LayoutSize& offsetFromRootBlock, | 3494 GapRects RenderBlock::selectionGaps(RenderBlock* rootBlock, const LayoutPoint& r
      ootBlockPhysicalPosition, const LayoutSize& offsetFromRootBlock, | 
| 3494                                     LayoutUnit& lastLogicalTop, LayoutUnit& last
      LogicalLeft, LayoutUnit& lastLogicalRight, const PaintInfo* paintInfo) | 3495     LayoutUnit& lastLogicalTop, LayoutUnit& lastLogicalLeft, LayoutUnit& lastLog
      icalRight, PaintInfo* paintInfo) | 
| 3495 { | 3496 { | 
| 3496     // IMPORTANT: Callers of this method that intend for painting to happen need
       to do a save/restore. | 3497     // IMPORTANT: Callers of this method that intend for painting to happen need
       to do a save/restore. | 
| 3497     // Clip out floating and positioned objects when painting selection gaps. | 3498     // Clip out floating and positioned objects when painting selection gaps. | 
| 3498     if (paintInfo) { | 3499     if (paintInfo) { | 
| 3499         // Note that we don't clip out overflow for positioned objects.  We just
       stick to the border box. | 3500         // Note that we don't clip out overflow for positioned objects.  We just
       stick to the border box. | 
| 3500         LayoutRect flippedBlockRect(offsetFromRootBlock.width(), offsetFromRootB
      lock.height(), width(), height()); | 3501         LayoutRect flippedBlockRect(offsetFromRootBlock.width(), offsetFromRootB
      lock.height(), width(), height()); | 
| 3501         rootBlock->flipForWritingMode(flippedBlockRect); | 3502         rootBlock->flipForWritingMode(flippedBlockRect); | 
| 3502         flippedBlockRect.moveBy(rootBlockPhysicalPosition); | 3503         flippedBlockRect.moveBy(rootBlockPhysicalPosition); | 
| 3503         clipOutPositionedObjects(paintInfo, flippedBlockRect.location(), positio
      nedObjects()); | 3504         clipOutPositionedObjects(paintInfo, flippedBlockRect.location(), positio
      nedObjects()); | 
| 3504         if (isBody() || isRoot()) // The <body> must make sure to examine its co
      ntainingBlock's positioned objects. | 3505         if (isBody() || isRoot()) // The <body> must make sure to examine its co
      ntainingBlock's positioned objects. | 
| 3505             for (RenderBlock* cb = containingBlock(); cb && !cb->isRenderView();
       cb = cb->containingBlock()) | 3506             for (RenderBlock* cb = containingBlock(); cb && !cb->isRenderView();
       cb = cb->containingBlock()) | 
| 3506                 clipOutPositionedObjects(paintInfo, LayoutPoint(cb->x(), cb->y()
      ), cb->positionedObjects()); // FIXME: Not right for flipped writing modes. | 3507                 clipOutPositionedObjects(paintInfo, LayoutPoint(cb->x(), cb->y()
      ), cb->positionedObjects()); // FIXME: Not right for flipped writing modes. | 
| 3507         if (FloatingObjects* floats = floatingObjects()) { | 3508         if (FloatingObjects* floats = floatingObjects()) { | 
| 3508             const FloatingObjectSet& floatingObjectSet = floats->set(); | 3509             const FloatingObjectSet& floatingObjectSet = floats->set(); | 
| 3509             FloatingObjectSetIterator end = floatingObjectSet.end(); | 3510             FloatingObjectSetIterator end = floatingObjectSet.end(); | 
| 3510             for (FloatingObjectSetIterator it = floatingObjectSet.begin(); it !=
       end; ++it) { | 3511             for (FloatingObjectSetIterator it = floatingObjectSet.begin(); it !=
       end; ++it) { | 
| 3511                 FloatingObject* r = *it; | 3512                 FloatingObject* r = *it; | 
| 3512                 LayoutRect floatBox(offsetFromRootBlock.width() + xPositionForFl
      oatIncludingMargin(r), | 3513                 LayoutRect floatBox(offsetFromRootBlock.width() + xPositionForFl
      oatIncludingMargin(r), | 
| 3513                                     offsetFromRootBlock.height() + yPositionForF
      loatIncludingMargin(r), | 3514                                     offsetFromRootBlock.height() + yPositionForF
      loatIncludingMargin(r), | 
| 3514                                     r->m_renderer->width(), r->m_renderer->heigh
      t()); | 3515                                     r->m_renderer->width(), r->m_renderer->heigh
      t()); | 
| 3515                 rootBlock->flipForWritingMode(floatBox); | 3516                 rootBlock->flipForWritingMode(floatBox); | 
| 3516                 floatBox.move(rootBlockPhysicalPosition.x(), rootBlockPhysicalPo
      sition.y()); | 3517                 floatBox.move(rootBlockPhysicalPosition.x(), rootBlockPhysicalPo
      sition.y()); | 
| 3517                 paintInfo->context->clipOut(pixelSnappedIntRect(floatBox)); | 3518                 paintInfo->getContext()->clipOut(pixelSnappedIntRect(floatBox)); | 
| 3518             } | 3519             } | 
| 3519         } | 3520         } | 
| 3520     } | 3521     } | 
| 3521 | 3522 | 
| 3522     // FIXME: overflow: auto/scroll regions need more math here, since painting 
      in the border box is different from painting in the padding box (one is scrolled
      , the other is | 3523     // FIXME: overflow: auto/scroll regions need more math here, since painting 
      in the border box is different from painting in the padding box (one is scrolled
      , the other is | 
| 3523     // fixed). | 3524     // fixed). | 
| 3524     GapRects result; | 3525     GapRects result; | 
| 3525     if (!isBlockFlow()) // FIXME: Make multi-column selection gap filling work s
      omeday. | 3526     if (!isBlockFlow()) // FIXME: Make multi-column selection gap filling work s
      omeday. | 
| 3526         return result; | 3527         return result; | 
| 3527 | 3528 | 
| (...skipping 11 matching lines...) Expand all  Loading... | 
| 3539         result = blockSelectionGaps(rootBlock, rootBlockPhysicalPosition, offset
      FromRootBlock, lastLogicalTop, lastLogicalLeft, lastLogicalRight, paintInfo); | 3540         result = blockSelectionGaps(rootBlock, rootBlockPhysicalPosition, offset
      FromRootBlock, lastLogicalTop, lastLogicalLeft, lastLogicalRight, paintInfo); | 
| 3540 | 3541 | 
| 3541     // Go ahead and fill the vertical gap all the way to the bottom of our block
       if the selection extends past our block. | 3542     // Go ahead and fill the vertical gap all the way to the bottom of our block
       if the selection extends past our block. | 
| 3542     if (rootBlock == this && (selectionState() != SelectionBoth && selectionStat
      e() != SelectionEnd)) | 3543     if (rootBlock == this && (selectionState() != SelectionBoth && selectionStat
      e() != SelectionEnd)) | 
| 3543         result.uniteCenter(blockSelectionGap(rootBlock, rootBlockPhysicalPositio
      n, offsetFromRootBlock, lastLogicalTop, lastLogicalLeft, lastLogicalRight, | 3544         result.uniteCenter(blockSelectionGap(rootBlock, rootBlockPhysicalPositio
      n, offsetFromRootBlock, lastLogicalTop, lastLogicalLeft, lastLogicalRight, | 
| 3544                                              logicalHeight(), paintInfo)); | 3545                                              logicalHeight(), paintInfo)); | 
| 3545     return result; | 3546     return result; | 
| 3546 } | 3547 } | 
| 3547 | 3548 | 
| 3548 GapRects RenderBlock::inlineSelectionGaps(RenderBlock* rootBlock, const LayoutPo
      int& rootBlockPhysicalPosition, const LayoutSize& offsetFromRootBlock, | 3549 GapRects RenderBlock::inlineSelectionGaps(RenderBlock* rootBlock, const LayoutPo
      int& rootBlockPhysicalPosition, const LayoutSize& offsetFromRootBlock, | 
| 3549                                           LayoutUnit& lastLogicalTop, LayoutUnit
      & lastLogicalLeft, LayoutUnit& lastLogicalRight, const PaintInfo* paintInfo) | 3550     LayoutUnit& lastLogicalTop, LayoutUnit& lastLogicalLeft, LayoutUnit& lastLog
      icalRight, PaintInfo* paintInfo) | 
| 3550 { | 3551 { | 
| 3551     GapRects result; | 3552     GapRects result; | 
| 3552 | 3553 | 
| 3553     bool containsStart = selectionState() == SelectionStart || selectionState() 
      == SelectionBoth; | 3554     bool containsStart = selectionState() == SelectionStart || selectionState() 
      == SelectionBoth; | 
| 3554 | 3555 | 
| 3555     if (!firstLineBox()) { | 3556     if (!firstLineBox()) { | 
| 3556         if (containsStart) { | 3557         if (containsStart) { | 
| 3557             // Go ahead and update our lastLogicalTop to be the bottom of the bl
      ock.  <hr>s or empty blocks with height can trip this | 3558             // Go ahead and update our lastLogicalTop to be the bottom of the bl
      ock.  <hr>s or empty blocks with height can trip this | 
| 3558             // case. | 3559             // case. | 
| 3559             lastLogicalTop = blockDirectionOffset(rootBlock, offsetFromRootBlock
      ) + logicalHeight(); | 3560             lastLogicalTop = blockDirectionOffset(rootBlock, offsetFromRootBlock
      ) + logicalHeight(); | 
| (...skipping 13 matching lines...) Expand all  Loading... | 
| 3573         LayoutUnit selHeight = curr->selectionHeightAdjustedForPrecedingBlock(); | 3574         LayoutUnit selHeight = curr->selectionHeightAdjustedForPrecedingBlock(); | 
| 3574 | 3575 | 
| 3575         if (!containsStart && !lastSelectedLine && | 3576         if (!containsStart && !lastSelectedLine && | 
| 3576             selectionState() != SelectionStart && selectionState() != SelectionB
      oth) | 3577             selectionState() != SelectionStart && selectionState() != SelectionB
      oth) | 
| 3577             result.uniteCenter(blockSelectionGap(rootBlock, rootBlockPhysicalPos
      ition, offsetFromRootBlock, lastLogicalTop, lastLogicalLeft, lastLogicalRight, | 3578             result.uniteCenter(blockSelectionGap(rootBlock, rootBlockPhysicalPos
      ition, offsetFromRootBlock, lastLogicalTop, lastLogicalLeft, lastLogicalRight, | 
| 3578                                                  selTop, paintInfo)); | 3579                                                  selTop, paintInfo)); | 
| 3579 | 3580 | 
| 3580         LayoutRect logicalRect(curr->logicalLeft(), selTop, curr->logicalWidth()
      , selTop + selHeight); | 3581         LayoutRect logicalRect(curr->logicalLeft(), selTop, curr->logicalWidth()
      , selTop + selHeight); | 
| 3581         logicalRect.move(isHorizontalWritingMode() ? offsetFromRootBlock : offse
      tFromRootBlock.transposedSize()); | 3582         logicalRect.move(isHorizontalWritingMode() ? offsetFromRootBlock : offse
      tFromRootBlock.transposedSize()); | 
| 3582         LayoutRect physicalRect = rootBlock->logicalRectToPhysicalRect(rootBlock
      PhysicalPosition, logicalRect); | 3583         LayoutRect physicalRect = rootBlock->logicalRectToPhysicalRect(rootBlock
      PhysicalPosition, logicalRect); | 
| 3583         if (!paintInfo || (isHorizontalWritingMode() && physicalRect.y() < paint
      Info->rect.maxY() && physicalRect.maxY() > paintInfo->rect.y()) | 3584         if (!paintInfo || (isHorizontalWritingMode() && physicalRect.y() < paint
      Info->getRect().maxY() && physicalRect.maxY() > paintInfo->getRect().y()) | 
| 3584             || (!isHorizontalWritingMode() && physicalRect.x() < paintInfo->rect
      .maxX() && physicalRect.maxX() > paintInfo->rect.x())) | 3585             || (!isHorizontalWritingMode() && physicalRect.x() < paintInfo->getR
      ect().maxX() && physicalRect.maxX() > paintInfo->getRect().x())) | 
| 3585             result.unite(curr->lineSelectionGap(rootBlock, rootBlockPhysicalPosi
      tion, offsetFromRootBlock, selTop, selHeight, paintInfo)); | 3586             result.unite(curr->lineSelectionGap(rootBlock, rootBlockPhysicalPosi
      tion, offsetFromRootBlock, selTop, selHeight, paintInfo)); | 
| 3586 | 3587 | 
| 3587         lastSelectedLine = curr; | 3588         lastSelectedLine = curr; | 
| 3588     } | 3589     } | 
| 3589 | 3590 | 
| 3590     if (containsStart && !lastSelectedLine) | 3591     if (containsStart && !lastSelectedLine) | 
| 3591         // VisibleSelection must start just after our last line. | 3592         // VisibleSelection must start just after our last line. | 
| 3592         lastSelectedLine = lastRootBox(); | 3593         lastSelectedLine = lastRootBox(); | 
| 3593 | 3594 | 
| 3594     if (lastSelectedLine && selectionState() != SelectionEnd && selectionState()
       != SelectionBoth) { | 3595     if (lastSelectedLine && selectionState() != SelectionEnd && selectionState()
       != SelectionBoth) { | 
| 3595         // Go ahead and update our lastY to be the bottom of the last selected l
      ine. | 3596         // Go ahead and update our lastY to be the bottom of the last selected l
      ine. | 
| 3596         lastLogicalTop = blockDirectionOffset(rootBlock, offsetFromRootBlock) + 
      lastSelectedLine->selectionBottom(); | 3597         lastLogicalTop = blockDirectionOffset(rootBlock, offsetFromRootBlock) + 
      lastSelectedLine->selectionBottom(); | 
| 3597         lastLogicalLeft = logicalLeftSelectionOffset(rootBlock, lastSelectedLine
      ->selectionBottom()); | 3598         lastLogicalLeft = logicalLeftSelectionOffset(rootBlock, lastSelectedLine
      ->selectionBottom()); | 
| 3598         lastLogicalRight = logicalRightSelectionOffset(rootBlock, lastSelectedLi
      ne->selectionBottom()); | 3599         lastLogicalRight = logicalRightSelectionOffset(rootBlock, lastSelectedLi
      ne->selectionBottom()); | 
| 3599     } | 3600     } | 
| 3600     return result; | 3601     return result; | 
| 3601 } | 3602 } | 
| 3602 | 3603 | 
| 3603 GapRects RenderBlock::blockSelectionGaps(RenderBlock* rootBlock, const LayoutPoi
      nt& rootBlockPhysicalPosition, const LayoutSize& offsetFromRootBlock, | 3604 GapRects RenderBlock::blockSelectionGaps(RenderBlock* rootBlock, const LayoutPoi
      nt& rootBlockPhysicalPosition, const LayoutSize& offsetFromRootBlock, | 
| 3604                                          LayoutUnit& lastLogicalTop, LayoutUnit&
       lastLogicalLeft, LayoutUnit& lastLogicalRight, const PaintInfo* paintInfo) | 3605     LayoutUnit& lastLogicalTop, LayoutUnit& lastLogicalLeft, LayoutUnit& lastLog
      icalRight, PaintInfo* paintInfo) | 
| 3605 { | 3606 { | 
| 3606     GapRects result; | 3607     GapRects result; | 
| 3607 | 3608 | 
| 3608     // Go ahead and jump right to the first block child that contains some selec
      ted objects. | 3609     // Go ahead and jump right to the first block child that contains some selec
      ted objects. | 
| 3609     RenderBox* curr; | 3610     RenderBox* curr; | 
| 3610     for (curr = firstChildBox(); curr && curr->selectionState() == SelectionNone
      ; curr = curr->nextSiblingBox()) { } | 3611     for (curr = firstChildBox(); curr && curr->selectionState() == SelectionNone
      ; curr = curr->nextSiblingBox()) { } | 
| 3611 | 3612 | 
| 3612     for (bool sawSelectionEnd = false; curr && !sawSelectionEnd; curr = curr->ne
      xtSiblingBox()) { | 3613     for (bool sawSelectionEnd = false; curr && !sawSelectionEnd; curr = curr->ne
      xtSiblingBox()) { | 
| 3613         SelectionState childState = curr->selectionState(); | 3614         SelectionState childState = curr->selectionState(); | 
| 3614         if (childState == SelectionBoth || childState == SelectionEnd) | 3615         if (childState == SelectionBoth || childState == SelectionEnd) | 
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 3656             lastLogicalRight = logicalRightSelectionOffset(rootBlock, curr->logi
      calBottom()); | 3657             lastLogicalRight = logicalRightSelectionOffset(rootBlock, curr->logi
      calBottom()); | 
| 3657         } else if (childState != SelectionNone) | 3658         } else if (childState != SelectionNone) | 
| 3658             // We must be a block that has some selected object inside it.  Go a
      head and recur. | 3659             // We must be a block that has some selected object inside it.  Go a
      head and recur. | 
| 3659             result.unite(toRenderBlock(curr)->selectionGaps(rootBlock, rootBlock
      PhysicalPosition, LayoutSize(offsetFromRootBlock.width() + curr->x(), offsetFrom
      RootBlock.height() + curr->y()), | 3660             result.unite(toRenderBlock(curr)->selectionGaps(rootBlock, rootBlock
      PhysicalPosition, LayoutSize(offsetFromRootBlock.width() + curr->x(), offsetFrom
      RootBlock.height() + curr->y()), | 
| 3660                                                             lastLogicalTop, last
      LogicalLeft, lastLogicalRight, paintInfo)); | 3661                                                             lastLogicalTop, last
      LogicalLeft, lastLogicalRight, paintInfo)); | 
| 3661     } | 3662     } | 
| 3662     return result; | 3663     return result; | 
| 3663 } | 3664 } | 
| 3664 | 3665 | 
| 3665 LayoutRect RenderBlock::blockSelectionGap(RenderBlock* rootBlock, const LayoutPo
      int& rootBlockPhysicalPosition, const LayoutSize& offsetFromRootBlock, | 3666 LayoutRect RenderBlock::blockSelectionGap(RenderBlock* rootBlock, const LayoutPo
      int& rootBlockPhysicalPosition, const LayoutSize& offsetFromRootBlock, | 
| 3666                                           LayoutUnit lastLogicalTop, LayoutUnit 
      lastLogicalLeft, LayoutUnit lastLogicalRight, LayoutUnit logicalBottom, const Pa
      intInfo* paintInfo) | 3667     LayoutUnit lastLogicalTop, LayoutUnit lastLogicalLeft, LayoutUnit lastLogica
      lRight, LayoutUnit logicalBottom, PaintInfo* paintInfo) | 
| 3667 { | 3668 { | 
| 3668     LayoutUnit logicalTop = lastLogicalTop; | 3669     LayoutUnit logicalTop = lastLogicalTop; | 
| 3669     LayoutUnit logicalHeight = blockDirectionOffset(rootBlock, offsetFromRootBlo
      ck) + logicalBottom - logicalTop; | 3670     LayoutUnit logicalHeight = blockDirectionOffset(rootBlock, offsetFromRootBlo
      ck) + logicalBottom - logicalTop; | 
| 3670     if (logicalHeight <= 0) | 3671     if (logicalHeight <= 0) | 
| 3671         return LayoutRect(); | 3672         return LayoutRect(); | 
| 3672 | 3673 | 
| 3673     // Get the selection offsets for the bottom of the gap | 3674     // Get the selection offsets for the bottom of the gap | 
| 3674     LayoutUnit logicalLeft = max(lastLogicalLeft, logicalLeftSelectionOffset(roo
      tBlock, logicalBottom)); | 3675     LayoutUnit logicalLeft = max(lastLogicalLeft, logicalLeftSelectionOffset(roo
      tBlock, logicalBottom)); | 
| 3675     LayoutUnit logicalRight = min(lastLogicalRight, logicalRightSelectionOffset(
      rootBlock, logicalBottom)); | 3676     LayoutUnit logicalRight = min(lastLogicalRight, logicalRightSelectionOffset(
      rootBlock, logicalBottom)); | 
| 3676     LayoutUnit logicalWidth = logicalRight - logicalLeft; | 3677     LayoutUnit logicalWidth = logicalRight - logicalLeft; | 
| 3677     if (logicalWidth <= 0) | 3678     if (logicalWidth <= 0) | 
| 3678         return LayoutRect(); | 3679         return LayoutRect(); | 
| 3679 | 3680 | 
| 3680     LayoutRect gapRect = rootBlock->logicalRectToPhysicalRect(rootBlockPhysicalP
      osition, LayoutRect(logicalLeft, logicalTop, logicalWidth, logicalHeight)); | 3681     LayoutRect gapRect = rootBlock->logicalRectToPhysicalRect(rootBlockPhysicalP
      osition, LayoutRect(logicalLeft, logicalTop, logicalWidth, logicalHeight)); | 
| 3681     if (paintInfo) | 3682     if (paintInfo) | 
| 3682         paintInfo->context->fillRect(pixelSnappedIntRect(gapRect), selectionBack
      groundColor()); | 3683         paintInfo->getContext()->fillRect(pixelSnappedIntRect(gapRect), selectio
      nBackgroundColor()); | 
| 3683     return gapRect; | 3684     return gapRect; | 
| 3684 } | 3685 } | 
| 3685 | 3686 | 
| 3686 LayoutRect RenderBlock::logicalLeftSelectionGap(RenderBlock* rootBlock, const La
      youtPoint& rootBlockPhysicalPosition, const LayoutSize& offsetFromRootBlock, | 3687 LayoutRect RenderBlock::logicalLeftSelectionGap(RenderBlock* rootBlock, const La
      youtPoint& rootBlockPhysicalPosition, const LayoutSize& offsetFromRootBlock, | 
| 3687                                                 RenderObject* selObj, LayoutUnit
       logicalLeft, LayoutUnit logicalTop, LayoutUnit logicalHeight, const PaintInfo* 
      paintInfo) | 3688     RenderObject* selObj, LayoutUnit logicalLeft, LayoutUnit logicalTop, LayoutU
      nit logicalHeight, PaintInfo* paintInfo) | 
| 3688 { | 3689 { | 
| 3689     LayoutUnit rootBlockLogicalTop = blockDirectionOffset(rootBlock, offsetFromR
      ootBlock) + logicalTop; | 3690     LayoutUnit rootBlockLogicalTop = blockDirectionOffset(rootBlock, offsetFromR
      ootBlock) + logicalTop; | 
| 3690     LayoutUnit rootBlockLogicalLeft = max(logicalLeftSelectionOffset(rootBlock, 
      logicalTop), logicalLeftSelectionOffset(rootBlock, logicalTop + logicalHeight)); | 3691     LayoutUnit rootBlockLogicalLeft = max(logicalLeftSelectionOffset(rootBlock, 
      logicalTop), logicalLeftSelectionOffset(rootBlock, logicalTop + logicalHeight)); | 
| 3691     LayoutUnit rootBlockLogicalRight = min(inlineDirectionOffset(rootBlock, offs
      etFromRootBlock) + floorToInt(logicalLeft), min(logicalRightSelectionOffset(root
      Block, logicalTop), logicalRightSelectionOffset(rootBlock, logicalTop + logicalH
      eight))); | 3692     LayoutUnit rootBlockLogicalRight = min(inlineDirectionOffset(rootBlock, offs
      etFromRootBlock) + floorToInt(logicalLeft), min(logicalRightSelectionOffset(root
      Block, logicalTop), logicalRightSelectionOffset(rootBlock, logicalTop + logicalH
      eight))); | 
| 3692     LayoutUnit rootBlockLogicalWidth = rootBlockLogicalRight - rootBlockLogicalL
      eft; | 3693     LayoutUnit rootBlockLogicalWidth = rootBlockLogicalRight - rootBlockLogicalL
      eft; | 
| 3693     if (rootBlockLogicalWidth <= 0) | 3694     if (rootBlockLogicalWidth <= 0) | 
| 3694         return LayoutRect(); | 3695         return LayoutRect(); | 
| 3695 | 3696 | 
| 3696     LayoutRect gapRect = rootBlock->logicalRectToPhysicalRect(rootBlockPhysicalP
      osition, LayoutRect(rootBlockLogicalLeft, rootBlockLogicalTop, rootBlockLogicalW
      idth, logicalHeight)); | 3697     LayoutRect gapRect = rootBlock->logicalRectToPhysicalRect(rootBlockPhysicalP
      osition, LayoutRect(rootBlockLogicalLeft, rootBlockLogicalTop, rootBlockLogicalW
      idth, logicalHeight)); | 
| 3697     if (paintInfo) | 3698     if (paintInfo) | 
| 3698         paintInfo->context->fillRect(pixelSnappedIntRect(gapRect), selObj->selec
      tionBackgroundColor()); | 3699         paintInfo->getContext()->fillRect(pixelSnappedIntRect(gapRect), selObj->
      selectionBackgroundColor()); | 
| 3699     return gapRect; | 3700     return gapRect; | 
| 3700 } | 3701 } | 
| 3701 | 3702 | 
| 3702 LayoutRect RenderBlock::logicalRightSelectionGap(RenderBlock* rootBlock, const L
      ayoutPoint& rootBlockPhysicalPosition, const LayoutSize& offsetFromRootBlock, | 3703 LayoutRect RenderBlock::logicalRightSelectionGap(RenderBlock* rootBlock, const L
      ayoutPoint& rootBlockPhysicalPosition, const LayoutSize& offsetFromRootBlock, | 
| 3703                                                  RenderObject* selObj, LayoutUni
      t logicalRight, LayoutUnit logicalTop, LayoutUnit logicalHeight, const PaintInfo
      * paintInfo) | 3704     RenderObject* selObj, LayoutUnit logicalRight, LayoutUnit logicalTop, Layout
      Unit logicalHeight, PaintInfo* paintInfo) | 
| 3704 { | 3705 { | 
| 3705     LayoutUnit rootBlockLogicalTop = blockDirectionOffset(rootBlock, offsetFromR
      ootBlock) + logicalTop; | 3706     LayoutUnit rootBlockLogicalTop = blockDirectionOffset(rootBlock, offsetFromR
      ootBlock) + logicalTop; | 
| 3706     LayoutUnit rootBlockLogicalLeft = max(inlineDirectionOffset(rootBlock, offse
      tFromRootBlock) + floorToInt(logicalRight), max(logicalLeftSelectionOffset(rootB
      lock, logicalTop), logicalLeftSelectionOffset(rootBlock, logicalTop + logicalHei
      ght))); | 3707     LayoutUnit rootBlockLogicalLeft = max(inlineDirectionOffset(rootBlock, offse
      tFromRootBlock) + floorToInt(logicalRight), max(logicalLeftSelectionOffset(rootB
      lock, logicalTop), logicalLeftSelectionOffset(rootBlock, logicalTop + logicalHei
      ght))); | 
| 3707     LayoutUnit rootBlockLogicalRight = min(logicalRightSelectionOffset(rootBlock
      , logicalTop), logicalRightSelectionOffset(rootBlock, logicalTop + logicalHeight
      )); | 3708     LayoutUnit rootBlockLogicalRight = min(logicalRightSelectionOffset(rootBlock
      , logicalTop), logicalRightSelectionOffset(rootBlock, logicalTop + logicalHeight
      )); | 
| 3708     LayoutUnit rootBlockLogicalWidth = rootBlockLogicalRight - rootBlockLogicalL
      eft; | 3709     LayoutUnit rootBlockLogicalWidth = rootBlockLogicalRight - rootBlockLogicalL
      eft; | 
| 3709     if (rootBlockLogicalWidth <= 0) | 3710     if (rootBlockLogicalWidth <= 0) | 
| 3710         return LayoutRect(); | 3711         return LayoutRect(); | 
| 3711 | 3712 | 
| 3712     LayoutRect gapRect = rootBlock->logicalRectToPhysicalRect(rootBlockPhysicalP
      osition, LayoutRect(rootBlockLogicalLeft, rootBlockLogicalTop, rootBlockLogicalW
      idth, logicalHeight)); | 3713     LayoutRect gapRect = rootBlock->logicalRectToPhysicalRect(rootBlockPhysicalP
      osition, LayoutRect(rootBlockLogicalLeft, rootBlockLogicalTop, rootBlockLogicalW
      idth, logicalHeight)); | 
| 3713     if (paintInfo) | 3714     if (paintInfo) | 
| 3714         paintInfo->context->fillRect(pixelSnappedIntRect(gapRect), selObj->selec
      tionBackgroundColor()); | 3715         paintInfo->getContext()->fillRect(pixelSnappedIntRect(gapRect), selObj->
      selectionBackgroundColor()); | 
| 3715     return gapRect; | 3716     return gapRect; | 
| 3716 } | 3717 } | 
| 3717 | 3718 | 
| 3718 void RenderBlock::getSelectionGapInfo(SelectionState state, bool& leftGap, bool&
       rightGap) | 3719 void RenderBlock::getSelectionGapInfo(SelectionState state, bool& leftGap, bool&
       rightGap) | 
| 3719 { | 3720 { | 
| 3720     bool ltr = style()->isLeftToRightDirection(); | 3721     bool ltr = style()->isLeftToRightDirection(); | 
| 3721     leftGap = (state == RenderObject::SelectionInside) || | 3722     leftGap = (state == RenderObject::SelectionInside) || | 
| 3722               (state == RenderObject::SelectionEnd && ltr) || | 3723               (state == RenderObject::SelectionEnd && ltr) || | 
| 3723               (state == RenderObject::SelectionStart && !ltr); | 3724               (state == RenderObject::SelectionStart && !ltr); | 
| 3724     rightGap = (state == RenderObject::SelectionInside) || | 3725     rightGap = (state == RenderObject::SelectionInside) || | 
| (...skipping 4547 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 8272 } | 8273 } | 
| 8273 | 8274 | 
| 8274 String ValueToString<RenderBlock::FloatingObject*>::string(const RenderBlock::Fl
      oatingObject* floatingObject) | 8275 String ValueToString<RenderBlock::FloatingObject*>::string(const RenderBlock::Fl
      oatingObject* floatingObject) | 
| 8275 { | 8276 { | 
| 8276     return String::format("%p (%dx%d %dx%d)", floatingObject, floatingObject->fr
      ameRect().pixelSnappedX(), floatingObject->frameRect().pixelSnappedY(), floating
      Object->frameRect().pixelSnappedMaxX(), floatingObject->frameRect().pixelSnapped
      MaxY()); | 8277     return String::format("%p (%dx%d %dx%d)", floatingObject, floatingObject->fr
      ameRect().pixelSnappedX(), floatingObject->frameRect().pixelSnappedY(), floating
      Object->frameRect().pixelSnappedMaxX(), floatingObject->frameRect().pixelSnapped
      MaxY()); | 
| 8277 } | 8278 } | 
| 8278 | 8279 | 
| 8279 #endif | 8280 #endif | 
| 8280 | 8281 | 
| 8281 } // namespace WebCore | 8282 } // namespace WebCore | 
| OLD | NEW | 
|---|