RenderTextControlSingleLine.h [plain text]
#ifndef RenderTextControlSingleLine_h
#define RenderTextControlSingleLine_h
#include "HTMLInputElement.h"
#include "RenderTextControl.h"
namespace WebCore {
class HTMLInputElement;
class RenderTextControlSingleLine : public RenderTextControl {
public:
RenderTextControlSingleLine(Element*);
virtual ~RenderTextControlSingleLine();
virtual PassRefPtr<RenderStyle> createInnerTextStyle(const RenderStyle* startStyle) const;
PassRefPtr<RenderStyle> createInnerBlockStyle(const RenderStyle* startStyle) const;
void capsLockStateMayHaveChanged();
protected:
virtual void centerContainerIfNeeded(RenderBox*) const { }
virtual LayoutUnit computeLogicalHeightLimit() const;
HTMLElement* containerElement() const;
HTMLElement* innerBlockElement() const;
HTMLInputElement* inputElement() const;
virtual void updateFromElement() OVERRIDE;
private:
virtual bool hasControlClip() const;
virtual LayoutRect controlClipRect(const LayoutPoint&) const;
virtual bool isTextField() const { return true; }
virtual void paint(PaintInfo&, const LayoutPoint&);
virtual void layout();
virtual bool nodeAtPoint(const HitTestRequest&, HitTestResult&, const HitTestLocation& locationInContainer, const LayoutPoint& accumulatedOffset, HitTestAction) OVERRIDE;
virtual void autoscroll(const IntPoint&);
virtual int scrollLeft() const;
virtual int scrollTop() const;
virtual int scrollWidth() const;
virtual int scrollHeight() const;
virtual void setScrollLeft(int);
virtual void setScrollTop(int);
virtual bool scroll(ScrollDirection, ScrollGranularity, float multiplier = 1, Node** stopNode = 0);
virtual bool logicalScroll(ScrollLogicalDirection, ScrollGranularity, float multiplier = 1, Node** stopNode = 0);
int textBlockWidth() const;
virtual float getAvgCharWidth(AtomicString family);
virtual LayoutUnit preferredContentLogicalWidth(float charWidth) const;
virtual LayoutUnit computeControlLogicalHeight(LayoutUnit lineHeight, LayoutUnit nonContentHeight) const OVERRIDE;
virtual void styleDidChange(StyleDifference, const RenderStyle* oldStyle);
virtual RenderStyle* textBaseStyle() const;
bool textShouldBeTruncated() const;
HTMLElement* innerSpinButtonElement() const;
bool m_shouldDrawCapsLockIndicator;
LayoutUnit m_desiredInnerTextLogicalHeight;
};
inline HTMLElement* RenderTextControlSingleLine::containerElement() const
{
return inputElement()->containerElement();
}
inline HTMLElement* RenderTextControlSingleLine::innerBlockElement() const
{
return inputElement()->innerBlockElement();
}
inline RenderTextControlSingleLine* toRenderTextControlSingleLine(RenderObject* object)
{
ASSERT_WITH_SECURITY_IMPLICATION(!object || object->isTextField());
return static_cast<RenderTextControlSingleLine*>(object);
}
void toRenderTextControlSingleLine(const RenderTextControlSingleLine*);
class RenderTextControlInnerBlock : public RenderBlock {
public:
RenderTextControlInnerBlock(Element* element) : RenderBlock(element) { }
private:
virtual bool hasLineIfEmpty() const { return true; }
};
}
#endif