ScrollbarThemeGtk.h [plain text]
#ifndef ScrollbarThemeGtk_h
#define ScrollbarThemeGtk_h
#include "ScrollbarThemeComposite.h"
namespace WebCore {
class Scrollbar;
class ScrollbarThemeGtk : public ScrollbarThemeComposite {
public:
virtual ~ScrollbarThemeGtk();
virtual bool hasButtons(Scrollbar&) { return true; }
virtual bool hasThumb(Scrollbar&);
virtual IntRect backButtonRect(Scrollbar&, ScrollbarPart, bool);
virtual IntRect forwardButtonRect(Scrollbar&, ScrollbarPart, bool);
virtual IntRect trackRect(Scrollbar&, bool);
#ifndef GTK_API_VERSION_2
ScrollbarThemeGtk();
IntRect thumbRect(Scrollbar&, const IntRect& unconstrainedTrackRect);
bool paint(Scrollbar&, GraphicsContext&, const IntRect& damageRect);
void paintScrollbarBackground(GraphicsContext&, Scrollbar&);
void paintTrackBackground(GraphicsContext&, Scrollbar&, const IntRect&);
void paintThumb(GraphicsContext&, Scrollbar&, const IntRect&);
virtual void paintButton(GraphicsContext&, Scrollbar&, const IntRect&, ScrollbarPart);
virtual bool shouldCenterOnThumb(Scrollbar&, const PlatformMouseEvent&);
virtual int scrollbarThickness(ScrollbarControlSize);
virtual IntSize buttonSize(Scrollbar&);
virtual int minimumThumbLength(Scrollbar&);
virtual double initialAutoscrollTimerDelay() { return 0.20; }
virtual double autoscrollTimerDelay() { return 0.02; }
void themeChanged();
void updateScrollbarsFrameThickness();
void registerScrollbar(Scrollbar&);
void unregisterScrollbar(Scrollbar&);
protected:
void updateThemeProperties();
int m_thumbFatness;
int m_troughBorderWidth;
int m_stepperSize;
int m_stepperSpacing;
int m_minThumbLength;
gboolean m_troughUnderSteppers;
gboolean m_hasForwardButtonStartPart;
gboolean m_hasForwardButtonEndPart;
gboolean m_hasBackButtonStartPart;
gboolean m_hasBackButtonEndPart;
#endif // GTK_API_VERSION_2
};
}
#endif