https://bugs.webkit.org/show_bug.cgi?id=142099
rdar://problem/
19982495
Reviewed by Dan Bernstein.
* rendering/RenderAttachment.cpp:
(WebCore::RenderAttachment::baselinePosition):
* rendering/RenderAttachment.h:
Override baselinePosition and retrieve it from RenderTheme.
* rendering/RenderTheme.h:
(WebCore::RenderTheme::attachmentBaseline):
* rendering/RenderThemeMac.h:
* rendering/RenderThemeMac.mm:
(WebCore::AttachmentLayout::AttachmentLayout):
(WebCore::RenderThemeMac::attachmentBaseline):
Plumb the label baseline from AttachmentLayout to RenderAttachment.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@180780
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+2015-02-27 Timothy Horton <timothy_horton@apple.com>
+
+ <attachment>'s label baseline should match that of the surrounding text
+ https://bugs.webkit.org/show_bug.cgi?id=142099
+ rdar://problem/19982495
+
+ Reviewed by Dan Bernstein.
+
+ * rendering/RenderAttachment.cpp:
+ (WebCore::RenderAttachment::baselinePosition):
+ * rendering/RenderAttachment.h:
+ Override baselinePosition and retrieve it from RenderTheme.
+
+ * rendering/RenderTheme.h:
+ (WebCore::RenderTheme::attachmentBaseline):
+ * rendering/RenderThemeMac.h:
+ * rendering/RenderThemeMac.mm:
+ (WebCore::AttachmentLayout::AttachmentLayout):
+ (WebCore::RenderThemeMac::attachmentBaseline):
+ Plumb the label baseline from AttachmentLayout to RenderAttachment.
+
2015-02-27 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r180752.
repaint();
}
+int RenderAttachment::baselinePosition(FontBaseline, bool, LineDirectionMode, LinePositionMode) const
+{
+ return document().page()->theme().attachmentBaseline(*this);
+}
+
} // namespace WebCore
#endif
bool isSelected() const;
bool isFocused() const;
+
+ virtual int baselinePosition(FontBaseline, bool, LineDirectionMode, LinePositionMode) const;
};
} // namespace WebCore
#if ENABLE(ATTACHMENT_ELEMENT)
virtual LayoutSize attachmentIntrinsicSize(const RenderAttachment&) const { return LayoutSize(); }
+ virtual int attachmentBaseline(const RenderAttachment&) const { return -1; }
#endif
protected:
#if ENABLE(ATTACHMENT_ELEMENT)
virtual LayoutSize attachmentIntrinsicSize(const RenderAttachment&) const override;
+ virtual int attachmentBaseline(const RenderAttachment&) const override;
virtual bool paintAttachment(const RenderObject&, const PaintInfo&, const IntRect&) override;
#endif
#import "CSSValueKeywords.h"
#import "CSSValueList.h"
#import "ColorMac.h"
+#import "CoreGraphicsSPI.h"
#import "Document.h"
#import "Element.h"
#import "ExceptionCodePlaceholder.h"
FloatRect iconBackgroundRect;
FloatRect attachmentRect;
+ int baseline;
+
RetainPtr<CTFontRef> labelFont;
FontCascade labelFontCascade;
std::unique_ptr<TextRun> labelTextRun;
float textHeight = labelFontCascade.fontMetrics().height();
float xOffset = (attachmentIconBackgroundSize / 2) - (textWidth / 2);
+ baseline = CGRound(attachmentIconBackgroundSize + attachmentIconToLabelMargin + labelFontCascade.fontMetrics().ascent());
+
textRect = FloatRect(xOffset, attachmentIconBackgroundSize + attachmentIconToLabelMargin, textWidth, textHeight);
textBackgroundRect = textRect;
textBackgroundRect.inflateX(attachmentLabelBackgroundPadding);
return LayoutSize(layout.attachmentRect.size());
}
+int RenderThemeMac::attachmentBaseline(const RenderAttachment& attachment) const
+{
+ AttachmentLayout layout(attachment);
+ return layout.baseline;
+}
+
static void paintAttachmentIconBackground(const RenderAttachment&, GraphicsContext& context, AttachmentLayout& layout)
{
// FIXME: Finder has a discontinuous behavior here when you have a background color other than white,