diff options
Diffstat (limited to 'WebCore/platform/chromium/ScrollbarThemeChromiumLinux.cpp')
-rw-r--r-- | WebCore/platform/chromium/ScrollbarThemeChromiumLinux.cpp | 41 |
1 files changed, 30 insertions, 11 deletions
diff --git a/WebCore/platform/chromium/ScrollbarThemeChromiumLinux.cpp b/WebCore/platform/chromium/ScrollbarThemeChromiumLinux.cpp index a99d778..6893dea 100644 --- a/WebCore/platform/chromium/ScrollbarThemeChromiumLinux.cpp +++ b/WebCore/platform/chromium/ScrollbarThemeChromiumLinux.cpp @@ -29,9 +29,8 @@ */ #include "config.h" -#include "ScrollbarThemeChromium.h" +#include "ScrollbarThemeChromiumLinux.h" -#include "NotImplemented.h" #include "PlatformContextSkia.h" #include "PlatformMouseEvent.h" #include "Scrollbar.h" @@ -39,14 +38,15 @@ namespace WebCore { -int ScrollbarThemeChromium::scrollbarThickness(ScrollbarControlSize controlSize) +ScrollbarTheme* ScrollbarTheme::nativeTheme() { - return 15; + static ScrollbarThemeChromiumLinux theme; + return &theme; } -bool ScrollbarThemeChromium::invalidateOnMouseEnterExit() +int ScrollbarThemeChromiumLinux::scrollbarThickness(ScrollbarControlSize controlSize) { - return false; + return 15; } static void drawVertLine(SkCanvas* canvas, int x, int y1, int y2, const SkPaint& paint) @@ -73,8 +73,16 @@ static void drawBox(SkCanvas* canvas, const IntRect& rect, const SkPaint& paint) drawVertLine(canvas, rect.x(), rect.y(), bottom, paint); } -void ScrollbarThemeChromium::paintTrackPiece(GraphicsContext* gc, Scrollbar* scrollbar, - const IntRect& rect, ScrollbarPart partType) +IntRect ScrollbarThemeChromium::trackRect(Scrollbar* scrollbar, bool) +{ + IntSize bs = buttonSize(scrollbar); + int thickness = scrollbarThickness(scrollbar->controlSize()); + if (scrollbar->orientation() == HorizontalScrollbar) + return IntRect(scrollbar->x() + bs.width(), scrollbar->y(), scrollbar->width(), thickness); + return IntRect(scrollbar->x(), scrollbar->y() + bs.height(), thickness, scrollbar->height()); +} + +void ScrollbarThemeChromiumLinux::paintTrackPiece(GraphicsContext* gc, Scrollbar* scrollbar, const IntRect& rect, ScrollbarPart partType) { SkCanvas* const canvas = gc->platformContext()->canvas(); SkPaint paint; @@ -88,13 +96,12 @@ void ScrollbarThemeChromium::paintTrackPiece(GraphicsContext* gc, Scrollbar* scr drawBox(canvas, rect, paint); } -void ScrollbarThemeChromium::paintButton(GraphicsContext* gc, Scrollbar* scrollbar, - const IntRect& rect, ScrollbarPart part) +void ScrollbarThemeChromiumLinux::paintButton(GraphicsContext* gc, Scrollbar* scrollbar, const IntRect& rect, ScrollbarPart part) { // We don't use buttons } -void ScrollbarThemeChromium::paintThumb(GraphicsContext* gc, Scrollbar* scrollbar, const IntRect& rect) +void ScrollbarThemeChromiumLinux::paintThumb(GraphicsContext* gc, Scrollbar* scrollbar, const IntRect& rect) { const bool hovered = scrollbar->hoveredPart() == ThumbPart; const int midx = rect.x() + rect.width() / 2; @@ -139,4 +146,16 @@ void ScrollbarThemeChromium::paintThumb(GraphicsContext* gc, Scrollbar* scrollba } } +IntSize ScrollbarThemeChromiumLinux::buttonSize(Scrollbar* scrollbar) +{ + // On Linux, we don't use buttons + return IntSize(0, 0); +} + +int ScrollbarThemeChromiumLinux::minimumThumbLength(Scrollbar* scrollbar) +{ + // This matches Firefox on Linux. + return 2 * scrollbarThickness(scrollbar->controlSize()); +} + } // namespace WebCore |