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();
void updateEnabledState(Scrollbar&) override;
bool paint(Scrollbar&, GraphicsContext&, const IntRect& damageRect) override;
int scrollbarThickness(ScrollbarControlSize = RegularScrollbar, ScrollbarExpansionState = ScrollbarExpansionState::Expanded) override;
bool supportsControlTints() const override { return true; }
bool usesOverlayScrollbars() const override;
void usesOverlayScrollbarsChanged() override;
void updateScrollbarOverlayStyle(Scrollbar&) override;
Seconds initialAutoscrollTimerDelay() override;
Seconds autoscrollTimerDelay() override;
ScrollbarButtonsPlacement buttonsPlacement() const override;
void registerScrollbar(Scrollbar&) override;
void unregisterScrollbar(Scrollbar&) override;
void setNewPainterForScrollbar(Scrollbar&, NSScrollerImp *);
NSScrollerImp *painterForScrollbar(Scrollbar&);
void setPaintCharacteristicsForScrollbar(Scrollbar&);
static bool isCurrentlyDrawingIntoLayer();
static void setIsCurrentlyDrawingIntoLayer(bool);
void didCreateScrollerImp(Scrollbar&);
bool isLayoutDirectionRTL(Scrollbar&);
#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:
bool hasButtons(Scrollbar&) override;
bool hasThumb(Scrollbar&) override;
IntRect backButtonRect(Scrollbar&, ScrollbarPart, bool painting = false) override;
IntRect forwardButtonRect(Scrollbar&, ScrollbarPart, bool painting = false) override;
IntRect trackRect(Scrollbar&, bool painting = false) override;
int maxOverlapBetweenPages() override { return 40; }
int minimumThumbLength(Scrollbar&) override;
ScrollbarButtonPressAction handleMousePressEvent(Scrollbar&, const PlatformMouseEvent&, ScrollbarPart) override;
bool shouldDragDocumentInsteadOfThumb(Scrollbar&, const PlatformMouseEvent&) override;
int scrollbarPartToHIPressedState(ScrollbarPart);
#if ENABLE(RUBBER_BANDING)
void setUpOverhangAreasLayerContents(GraphicsLayer*, const Color&) override;
void setUpContentShadowLayer(GraphicsLayer*) override;
#endif
};
}
#endif