#ifndef RenderWidget_h
#define RenderWidget_h
#include "OverlapTestRequestClient.h"
#include "RenderReplaced.h"
namespace WebCore {
class Widget;
class RenderWidget : public RenderReplaced, private OverlapTestRequestClient {
public:
virtual ~RenderWidget();
Widget* widget() const { return m_widget.get(); }
virtual void setWidget(PassRefPtr<Widget>);
static RenderWidget* find(const Widget*);
void updateWidgetPosition();
protected:
RenderWidget(Node*);
FrameView* frameView() const { return m_frameView; }
void clearWidget();
virtual void styleDidChange(StyleDifference, const RenderStyle* oldStyle);
virtual void layout();
private:
virtual bool isWidget() const { return true; }
virtual void paint(PaintInfo&, int x, int y);
virtual void destroy();
virtual void setSelectionState(SelectionState);
virtual bool nodeAtPoint(const HitTestRequest&, HitTestResult&, int x, int y, int tx, int ty, HitTestAction);
virtual void setOverlapTestResult(bool);
void setWidgetGeometry(const IntRect&);
RenderArena* ref() { ++m_refCount; return renderArena(); }
void deref(RenderArena*);
RefPtr<Widget> m_widget;
FrameView* m_frameView;
int m_refCount;
};
}
#endif // RenderWidget_h