diff options
Diffstat (limited to 'Source/WebCore/rendering/RenderTextControl.h')
-rw-r--r-- | Source/WebCore/rendering/RenderTextControl.h | 59 |
1 files changed, 25 insertions, 34 deletions
diff --git a/Source/WebCore/rendering/RenderTextControl.h b/Source/WebCore/rendering/RenderTextControl.h index 6f9a408bb..4176a2c16 100644 --- a/Source/WebCore/rendering/RenderTextControl.h +++ b/Source/WebCore/rendering/RenderTextControl.h @@ -19,8 +19,7 @@ * */ -#ifndef RenderTextControl_h -#define RenderTextControl_h +#pragma once #include "RenderBlockFlow.h" #include "RenderFlexibleBox.h" @@ -34,26 +33,24 @@ class RenderTextControl : public RenderBlockFlow { public: virtual ~RenderTextControl(); - HTMLTextFormControlElement& textFormControlElement() const; - virtual PassRef<RenderStyle> createInnerTextStyle(const RenderStyle* startStyle) const = 0; + WEBCORE_EXPORT HTMLTextFormControlElement& textFormControlElement() const; #if PLATFORM(IOS) bool canScroll() const; // Returns the line height of the inner renderer. - virtual int innerLineHeight() const override; + int innerLineHeight() const override; #endif protected: - RenderTextControl(HTMLTextFormControlElement&, PassRef<RenderStyle>); + RenderTextControl(HTMLTextFormControlElement&, RenderStyle&&); // This convenience function should not be made public because innerTextElement may outlive the render tree. TextControlInnerTextElement* innerTextElement() const; int scrollbarThickness() const; - void adjustInnerTextStyle(const RenderStyle* startStyle, RenderStyle* textBlockStyle) const; - virtual void styleDidChange(StyleDifference, const RenderStyle* oldStyle) override; + void styleDidChange(StyleDifference, const RenderStyle* oldStyle) override; void hitInnerTextElement(HitTestResult&, const LayoutPoint& pointInContainer, const LayoutPoint& accumulatedOffset); @@ -62,57 +59,51 @@ protected: float scaleEmToUnits(int x) const; - static bool hasValidAvgCharWidth(AtomicString family); - virtual float getAvgCharWidth(AtomicString family); + virtual float getAverageCharWidth(); virtual LayoutUnit preferredContentLogicalWidth(float charWidth) const = 0; virtual LayoutUnit computeControlLogicalHeight(LayoutUnit lineHeight, LayoutUnit nonContentHeight) const = 0; - virtual void updateFromElement() override; - virtual void computeLogicalHeight(LayoutUnit logicalHeight, LayoutUnit logicalTop, LogicalExtentComputedValues&) const override; - virtual RenderObject* layoutSpecialExcludedChild(bool relayoutChildren) override; + LogicalExtentComputedValues computeLogicalHeight(LayoutUnit logicalHeight, LayoutUnit logicalTop) const override; + RenderObject* layoutSpecialExcludedChild(bool relayoutChildren) override; private: void element() const = delete; - virtual const char* renderName() const override { return "RenderTextControl"; } - virtual bool isTextControl() const override final { return true; } - virtual void computeIntrinsicLogicalWidths(LayoutUnit& minLogicalWidth, LayoutUnit& maxLogicalWidth) const override; - virtual void computePreferredLogicalWidths() override; - virtual void removeLeftoverAnonymousBlock(RenderBlock*) override { } - virtual bool avoidsFloats() const override { return true; } - virtual bool canHaveGeneratedChildren() const override { return false; } - virtual bool canBeReplacedWithInlineRunIn() const override; + const char* renderName() const override { return "RenderTextControl"; } + bool isTextControl() const final { return true; } + void computeIntrinsicLogicalWidths(LayoutUnit& minLogicalWidth, LayoutUnit& maxLogicalWidth) const override; + void computePreferredLogicalWidths() override; + void removeLeftoverAnonymousBlock(RenderBlock*) override { } + bool avoidsFloats() const override { return true; } + bool canHaveGeneratedChildren() const override { return false; } - virtual void addFocusRingRects(Vector<IntRect>&, const LayoutPoint& additionalOffset, const RenderLayerModelObject* paintContainer = 0) override; + void addFocusRingRects(Vector<LayoutRect>&, const LayoutPoint& additionalOffset, const RenderLayerModelObject* paintContainer = 0) override; - virtual bool canBeProgramaticallyScrolled() const override { return true; } - - virtual bool requiresForcedStyleRecalcPropagation() const override { return true; } + bool canBeProgramaticallyScrolled() const override { return true; } }; -RENDER_OBJECT_TYPE_CASTS(RenderTextControl, isTextControl()) - // Renderer for our inner container, for <search> and others. // We can't use RenderFlexibleBox directly, because flexboxes have a different // baseline definition, and then inputs of different types wouldn't line up // anymore. class RenderTextControlInnerContainer final : public RenderFlexibleBox { public: - explicit RenderTextControlInnerContainer(Element& element, PassRef<RenderStyle> style) - : RenderFlexibleBox(element, std::move(style)) + explicit RenderTextControlInnerContainer(Element& element, RenderStyle&& style) + : RenderFlexibleBox(element, WTFMove(style)) { } virtual ~RenderTextControlInnerContainer() { } - virtual int baselinePosition(FontBaseline baseline, bool firstLine, LineDirectionMode direction, LinePositionMode position) const override + int baselinePosition(FontBaseline baseline, bool firstLine, LineDirectionMode direction, LinePositionMode position) const override { return RenderBlock::baselinePosition(baseline, firstLine, direction, position); } - virtual int firstLineBaseline() const override { return RenderBlock::firstLineBaseline(); } - virtual int inlineBlockBaseline(LineDirectionMode direction) const override { return RenderBlock::inlineBlockBaseline(direction); } + std::optional<int> firstLineBaseline() const override { return RenderBlock::firstLineBaseline(); } + std::optional<int> inlineBlockBaseline(LineDirectionMode direction) const override { return RenderBlock::inlineBlockBaseline(direction); } +private: + bool isFlexibleBoxImpl() const override { return true; } }; - } // namespace WebCore -#endif // RenderTextControl_h +SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderTextControl, isTextControl()) |