| Index: third_party/WebKit/Source/core/layout/LayoutListMarker.cpp
|
| diff --git a/third_party/WebKit/Source/core/layout/LayoutListMarker.cpp b/third_party/WebKit/Source/core/layout/LayoutListMarker.cpp
|
| index f242a0bca24eba471980e726859704cb10244b20..f36302249cc85002fe72aa753044fa823212404a 100644
|
| --- a/third_party/WebKit/Source/core/layout/LayoutListMarker.cpp
|
| +++ b/third_party/WebKit/Source/core/layout/LayoutListMarker.cpp
|
| @@ -65,6 +65,18 @@ LayoutListMarker* LayoutListMarker::createAnonymous(LayoutListItem* item)
|
| return layoutObject;
|
| }
|
|
|
| +IntSize LayoutListMarker::imageBulletSize() const
|
| +{
|
| + ASSERT(isImage());
|
| +
|
| + // FIXME: This is a somewhat arbitrary default width. Generated images for markers really won't
|
| + // become particularly useful until we support the CSS3 marker pseudoclass to allow control over
|
| + // the width and height of the marker box.
|
| + int bulletWidth = style()->fontMetrics().ascent() / 2;
|
| + IntSize defaultBulletSize(bulletWidth, bulletWidth);
|
| + return calculateImageIntrinsicDimensions(m_image.get(), defaultBulletSize, DoNotScaleByEffectiveZoom);
|
| +}
|
| +
|
| void LayoutListMarker::styleWillChange(StyleDifference diff, const ComputedStyle& newStyle)
|
| {
|
| if (style() && (newStyle.listStylePosition() != style()->listStylePosition() || newStyle.listStyleType() != style()->listStyleType()))
|
| @@ -125,8 +137,9 @@ void LayoutListMarker::layout()
|
|
|
| if (isImage()) {
|
| updateMarginsAndContent();
|
| - setWidth(m_image->imageSize(this, style()->effectiveZoom()).width());
|
| - setHeight(m_image->imageSize(this, style()->effectiveZoom()).height());
|
| + LayoutSize imageSize(imageBulletSize());
|
| + setWidth(imageSize.width());
|
| + setHeight(imageSize.height());
|
| } else {
|
| setLogicalWidth(minPreferredLogicalWidth());
|
| setLogicalHeight(style()->fontMetrics().height());
|
| @@ -151,7 +164,8 @@ void LayoutListMarker::imageChanged(WrappedImagePtr o, const IntRect*)
|
| if (o != m_image->data())
|
| return;
|
|
|
| - if (size() != m_image->imageSize(this, style()->effectiveZoom()) || m_image->errorOccurred())
|
| + LayoutSize imageSize = isImage() ? LayoutSize(imageBulletSize()) : LayoutSize();
|
| + if (size() != imageSize || m_image->errorOccurred())
|
| setNeedsLayoutAndPrefWidthsRecalcAndFullPaintInvalidation(LayoutInvalidationReason::ImageChanged);
|
| else
|
| setShouldDoFullPaintInvalidation();
|
| @@ -172,15 +186,8 @@ void LayoutListMarker::updateContent()
|
|
|
| m_text = "";
|
|
|
| - if (isImage()) {
|
| - // FIXME: This is a somewhat arbitrary width. Generated images for markers really won't become particularly useful
|
| - // until we support the CSS3 marker pseudoclass to allow control over the width and height of the marker box.
|
| - int bulletWidth = style()->fontMetrics().ascent() / 2;
|
| - IntSize defaultBulletSize(bulletWidth, bulletWidth);
|
| - IntSize imageSize = calculateImageIntrinsicDimensions(m_image.get(), defaultBulletSize, DoNotScaleByEffectiveZoom);
|
| - m_image->setContainerSizeForLayoutObject(this, imageSize, style()->effectiveZoom());
|
| + if (isImage())
|
| return;
|
| - }
|
|
|
| switch (listStyleCategory()) {
|
| case ListStyleCategory::None:
|
| @@ -214,7 +221,7 @@ void LayoutListMarker::computePreferredLogicalWidths()
|
| updateContent();
|
|
|
| if (isImage()) {
|
| - LayoutSize imageSize = m_image->imageSize(this, style()->effectiveZoom());
|
| + LayoutSize imageSize(imageBulletSize());
|
| m_minPreferredLogicalWidth = m_maxPreferredLogicalWidth = style()->isHorizontalWritingMode() ? imageSize.width() : imageSize.height();
|
| clearPreferredLogicalWidthsDirty();
|
| updateMargins();
|
| @@ -394,8 +401,10 @@ bool LayoutListMarker::isInside() const
|
|
|
| IntRect LayoutListMarker::getRelativeMarkerRect() const
|
| {
|
| - if (isImage())
|
| - return IntRect(0, 0, m_image->imageSize(this, style()->effectiveZoom()).width(), m_image->imageSize(this, style()->effectiveZoom()).height());
|
| + if (isImage()) {
|
| + IntSize imageSize = imageBulletSize();
|
| + return IntRect(0, 0, imageSize.width(), imageSize.height());
|
| + }
|
|
|
| IntRect relativeRect;
|
| switch (listStyleCategory()) {
|
|
|