ScrollbarThemeGtk.h [plain text]
#ifndef ScrollbarThemeGtk_h
#define ScrollbarThemeGtk_h
#include "ScrollbarThemeComposite.h"
namespace WebCore {
class Scrollbar;
class ScrollbarThemeGtk : public ScrollbarThemeComposite {
public:
ScrollbarThemeGtk();
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);
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 void paintScrollCorner(ScrollView*, GraphicsContext*, const IntRect&);
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 updateThemeProperties();
void updateScrollbarsFrameThickness();
void registerScrollbar(Scrollbar*);
void unregisterScrollbar(Scrollbar*);
protected:
#ifndef GTK_API_VERSION_2
GtkStyleContext* m_context;
#endif
int m_thumbFatness;
int m_troughBorderWidth;
int m_stepperSize;
int m_stepperSpacing;
int m_minThumbLength;
gboolean m_troughUnderSteppers;
gboolean m_hasForwardButtonStartPart;
gboolean m_hasBackButtonEndPart;
};
}
#endif