ScrollbarThemeMac.h [plain text]
#ifndef ScrollbarThemeMac_h
#define ScrollbarThemeMac_h
#include "ScrollbarThemeComposite.h"
#if USE(WK_SCROLLBAR_PAINTER)
typedef struct __WKScrollbarPainter *WKScrollbarPainterRef;
#endif
namespace WebCore {
class ScrollbarThemeMac : public ScrollbarThemeComposite {
public:
ScrollbarThemeMac();
virtual ~ScrollbarThemeMac();
virtual bool paint(Scrollbar*, GraphicsContext* context, const IntRect& damageRect);
virtual int scrollbarThickness(ScrollbarControlSize = RegularScrollbar);
virtual bool supportsControlTints() const { return true; }
virtual bool usesOverlayScrollbars() const;
virtual double initialAutoscrollTimerDelay();
virtual double autoscrollTimerDelay();
virtual ScrollbarButtonsPlacement buttonsPlacement() const;
virtual void registerScrollbar(Scrollbar*);
virtual void unregisterScrollbar(Scrollbar*);
#if USE(WK_SCROLLBAR_PAINTER)
void setNewPainterForScrollbar(Scrollbar*, WKScrollbarPainterRef);
WKScrollbarPainterRef painterForScrollbar(Scrollbar*);
#endif
protected:
virtual bool hasButtons(Scrollbar*);
virtual bool hasThumb(Scrollbar*);
virtual IntRect backButtonRect(Scrollbar*, ScrollbarPart, bool painting = false);
virtual IntRect forwardButtonRect(Scrollbar*, ScrollbarPart, bool painting = false);
virtual IntRect trackRect(Scrollbar*, bool painting = false);
virtual int maxOverlapBetweenPages() { return 40; }
virtual int minimumThumbLength(Scrollbar*);
virtual bool shouldCenterOnThumb(Scrollbar*, const PlatformMouseEvent&);
virtual bool shouldDragDocumentInsteadOfThumb(Scrollbar*, const PlatformMouseEvent&);
public:
void preferencesChanged();
};
}
#endif