ScrollbarThemeMac.h [plain text]
#ifndef ScrollbarThemeMac_h
#define ScrollbarThemeMac_h
#include "ScrollbarThemeComposite.h"
namespace WebCore {
class ScrollbarThemeMac : public ScrollbarThemeComposite {
public:
ScrollbarThemeMac();
virtual ~ScrollbarThemeMac();
void preferencesChanged();
virtual void updateEnabledState(Scrollbar&) override;
virtual bool paint(Scrollbar&, GraphicsContext&, const IntRect& damageRect) override;
virtual int scrollbarThickness(ScrollbarControlSize = RegularScrollbar) override;
virtual bool supportsControlTints() const override { return true; }
virtual bool usesOverlayScrollbars() const override;
virtual void usesOverlayScrollbarsChanged() override;
virtual void updateScrollbarOverlayStyle(Scrollbar&) override;
virtual double initialAutoscrollTimerDelay() override;
virtual double autoscrollTimerDelay() override;
virtual ScrollbarButtonsPlacement buttonsPlacement() const override;
virtual void registerScrollbar(Scrollbar&) override;
virtual void unregisterScrollbar(Scrollbar&) override;
void setNewPainterForScrollbar(Scrollbar&, ScrollbarPainter);
ScrollbarPainter painterForScrollbar(Scrollbar&);
void setPaintCharacteristicsForScrollbar(Scrollbar&);
static bool isCurrentlyDrawingIntoLayer();
static void setIsCurrentlyDrawingIntoLayer(bool);
#if ENABLE(RUBBER_BANDING)
WEBCORE_EXPORT static void setUpOverhangAreaBackground(CALayer *, const Color& customBackgroundColor = Color());
WEBCORE_EXPORT static void removeOverhangAreaBackground(CALayer *);
WEBCORE_EXPORT static void setUpOverhangAreaShadow(CALayer *);
WEBCORE_EXPORT static void removeOverhangAreaShadow(CALayer *);
#endif
protected:
virtual bool hasButtons(Scrollbar&) override;
virtual bool hasThumb(Scrollbar&) override;
virtual IntRect backButtonRect(Scrollbar&, ScrollbarPart, bool painting = false) override;
virtual IntRect forwardButtonRect(Scrollbar&, ScrollbarPart, bool painting = false) override;
virtual IntRect trackRect(Scrollbar&, bool painting = false) override;
virtual int maxOverlapBetweenPages() override { return 40; }
virtual int minimumThumbLength(Scrollbar&) override;
virtual bool shouldCenterOnThumb(Scrollbar&, const PlatformMouseEvent&) override;
virtual bool shouldDragDocumentInsteadOfThumb(Scrollbar&, const PlatformMouseEvent&) override;
int scrollbarPartToHIPressedState(ScrollbarPart);
#if ENABLE(RUBBER_BANDING)
virtual void setUpOverhangAreasLayerContents(GraphicsLayer*, const Color&) override;
virtual void setUpContentShadowLayer(GraphicsLayer*) override;
#endif
};
}
#endif