PlatformScrollBar.h [plain text]
#ifndef PlatformScrollbar_h
#define PlatformScrollbar_h
#include "Widget.h"
#include "ScrollBar.h"
#include "Timer.h"
#include <QStyleOptionSlider>
namespace WebCore {
class PlatformScrollbar : public Widget, public Scrollbar {
public:
PlatformScrollbar(ScrollbarClient*, ScrollbarOrientation, ScrollbarControlSize);
virtual ~PlatformScrollbar();
virtual bool isWidget() const { return true; }
virtual int width() const;
virtual int height() const;
virtual void setRect(const IntRect&);
virtual IntRect frameGeometry() const;
virtual void setFrameGeometry(const IntRect& r);
virtual void setEnabled(bool);
virtual void paint(GraphicsContext*, const IntRect& damageRect);
virtual bool handleMouseMoveEvent(const PlatformMouseEvent&);
virtual bool handleMouseOutEvent(const PlatformMouseEvent&);
virtual bool handleMousePressEvent(const PlatformMouseEvent&);
virtual bool handleMouseReleaseEvent(const PlatformMouseEvent&);
bool isEnabled() const;
static int horizontalScrollbarHeight(ScrollbarControlSize size = RegularScrollbar);
static int verticalScrollbarWidth(ScrollbarControlSize size = RegularScrollbar);
void autoscrollTimerFired(Timer<PlatformScrollbar>*);
void invalidate();
protected:
virtual void updateThumbPosition();
virtual void updateThumbProportion();
private:
int thumbPosition() const;
int thumbLength() const;
int trackLength() const;
void startTimerIfNeeded(double delay);
void stopTimerIfNeeded();
void autoscrollPressedPart(double delay);
ScrollDirection pressedPartScrollDirection();
ScrollGranularity pressedPartScrollGranularity();
bool thumbUnderMouse();
int m_pressedPos;
QStyle::SubControl m_pressedPart;
QStyle::SubControl m_hoveredPart;
Timer<PlatformScrollbar> m_scrollTimer;
QStyleOptionSlider m_opt;
};
}
#endif // PlatformScrollbar_h