summaryrefslogtreecommitdiffstats
path: root/WebCore/rendering/RenderThemeChromiumLinux.cpp
diff options
context:
space:
mode:
authorBen Murdoch <benm@google.com>2009-08-11 17:01:47 +0100
committerBen Murdoch <benm@google.com>2009-08-11 18:21:02 +0100
commit0bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5 (patch)
tree2943df35f62d885c89d01063cc528dd73b480fea /WebCore/rendering/RenderThemeChromiumLinux.cpp
parent7e7a70bfa49a1122b2597a1e6367d89eb4035eca (diff)
downloadexternal_webkit-0bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5.zip
external_webkit-0bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5.tar.gz
external_webkit-0bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5.tar.bz2
Merge in WebKit r47029.
Diffstat (limited to 'WebCore/rendering/RenderThemeChromiumLinux.cpp')
-rw-r--r--WebCore/rendering/RenderThemeChromiumLinux.cpp564
1 files changed, 13 insertions, 551 deletions
diff --git a/WebCore/rendering/RenderThemeChromiumLinux.cpp b/WebCore/rendering/RenderThemeChromiumLinux.cpp
index 8049403..c4020d3 100644
--- a/WebCore/rendering/RenderThemeChromiumLinux.cpp
+++ b/WebCore/rendering/RenderThemeChromiumLinux.cpp
@@ -3,6 +3,7 @@
* Copyright (C) 2007 Alp Toker <alp@atoker.com>
* Copyright (C) 2008 Collabora Ltd.
* Copyright (C) 2008, 2009 Google Inc.
+ * Copyright (C) 2009 Kenneth Rohde Christiansen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -24,102 +25,29 @@
#include "config.h"
#include "RenderThemeChromiumLinux.h"
-#include "ChromiumBridge.h"
+#include "Color.h"
#include "CSSValueKeywords.h"
-#include "GraphicsContext.h"
-#include "HTMLMediaElement.h"
-#include "HTMLNames.h"
-#include "Image.h"
-#include "MediaControlElements.h"
-#include "PlatformContextSkia.h"
-#include "RenderBox.h"
#include "RenderObject.h"
-#include "ScrollbarTheme.h"
-#include "TransformationMatrix.h"
#include "UserAgentStyleSheets.h"
-#include "SkShader.h"
-#include "SkGradientShader.h"
-
namespace WebCore {
-enum PaddingType {
- TopPadding,
- RightPadding,
- BottomPadding,
- LeftPadding
-};
-
-static const int styledMenuListInternalPadding[4] = { 1, 4, 1, 4 };
-
-// The default variable-width font size. We use this as the default font
-// size for the "system font", and as a base size (which we then shrink) for
-// form control fonts.
-static const float defaultFontSize = 16.0;
-
-// The background for the media player controls should be a 60% opaque black rectangle. This
-// matches the UI mockups for the default UI theme.
-static const float defaultMediaControlOpacity = 0.6f;
-
-// These values all match Safari/Win.
-static const float defaultControlFontPixelSize = 13;
-static const float defaultCancelButtonSize = 9;
-static const float minCancelButtonSize = 5;
-static const float maxCancelButtonSize = 21;
-static const float defaultSearchFieldResultsDecorationSize = 13;
-static const float minSearchFieldResultsDecorationSize = 9;
-static const float maxSearchFieldResultsDecorationSize = 30;
-static const float defaultSearchFieldResultsButtonWidth = 18;
-
-static bool supportsFocus(ControlPart appearance)
+PassRefPtr<RenderTheme> RenderThemeChromiumLinux::create()
{
- // This causes WebKit to draw the focus rings for us.
- return false;
+ return adoptRef(new RenderThemeChromiumLinux());
}
-static void setSizeIfAuto(RenderStyle* style, const IntSize& size)
+PassRefPtr<RenderTheme> RenderTheme::themeForPage(Page* page)
{
- if (style->width().isIntrinsicOrAuto())
- style->setWidth(Length(size.width(), Fixed));
- if (style->height().isAuto())
- style->setHeight(Length(size.height(), Fixed));
+ static RenderTheme* rt = RenderThemeChromiumLinux::create().releaseRef();
+ return rt;
}
-// We aim to match IE here.
-// -IE uses a font based on the encoding as the default font for form controls.
-// -Gecko uses MS Shell Dlg (actually calls GetStockObject(DEFAULT_GUI_FONT),
-// which returns MS Shell Dlg)
-// -Safari uses Lucida Grande.
-//
-// FIXME: The only case where we know we don't match IE is for ANSI encodings.
-// IE uses MS Shell Dlg there, which we render incorrectly at certain pixel
-// sizes (e.g. 15px). So, for now we just use Arial.
-static const char* defaultGUIFont()
-{
- return "Arial";
-}
-
-#if ENABLE(VIDEO)
-// Attempt to retrieve a HTMLMediaElement from a Node. Returns NULL if one cannot be found.
-static HTMLMediaElement* mediaElementParent(Node* node)
-{
- if (!node)
- return 0;
- Node* mediaNode = node->shadowAncestorNode();
- if (!mediaNode || (!mediaNode->hasTagName(HTMLNames::videoTag) && !mediaNode->hasTagName(HTMLNames::audioTag)))
- return 0;
-
- return static_cast<HTMLMediaElement*>(mediaNode);
-}
-#endif
-
-RenderTheme* theme()
+RenderThemeChromiumLinux::RenderThemeChromiumLinux()
{
- static RenderThemeChromiumLinux theme;
- return &theme;
}
-RenderThemeChromiumLinux::RenderThemeChromiumLinux()
+RenderThemeChromiumLinux::~RenderThemeChromiumLinux()
{
}
@@ -132,465 +60,12 @@ Color RenderThemeChromiumLinux::systemColor(int cssValueId) const
return RenderTheme::systemColor(cssValueId);
}
-// Use the Windows style sheets to match their metrics.
String RenderThemeChromiumLinux::extraDefaultStyleSheet()
{
- return String(themeWinUserAgentStyleSheet, sizeof(themeWinUserAgentStyleSheet)) +
+ return RenderThemeChromiumSkia::extraDefaultStyleSheet() +
String(themeChromiumLinuxUserAgentStyleSheet, sizeof(themeChromiumLinuxUserAgentStyleSheet));
}
-String RenderThemeChromiumLinux::extraQuirksStyleSheet()
-{
- return String(themeWinQuirksUserAgentStyleSheet, sizeof(themeWinQuirksUserAgentStyleSheet));
-}
-
-#if ENABLE(VIDEO)
-String RenderThemeChromiumLinux::extraMediaControlsStyleSheet()
-{
- return String(mediaControlsChromiumUserAgentStyleSheet, sizeof(mediaControlsChromiumUserAgentStyleSheet));
-}
-#endif
-
-bool RenderThemeChromiumLinux::supportsFocusRing(const RenderStyle* style) const
-{
- return supportsFocus(style->appearance());
-}
-
-Color RenderThemeChromiumLinux::platformActiveSelectionBackgroundColor() const
-{
- return Color(0x1e, 0x90, 0xff);
-}
-
-Color RenderThemeChromiumLinux::platformInactiveSelectionBackgroundColor() const
-{
- return Color(0xc8, 0xc8, 0xc8);
-}
-
-Color RenderThemeChromiumLinux::platformActiveSelectionForegroundColor() const
-{
- return Color::black;
-}
-
-Color RenderThemeChromiumLinux::platformInactiveSelectionForegroundColor() const
-{
- return Color(0x32, 0x32, 0x32);
-}
-
-Color RenderThemeChromiumLinux::platformTextSearchHighlightColor() const
-{
- return Color(0xff, 0xff, 0x96);
-}
-
-double RenderThemeChromiumLinux::caretBlinkInterval() const
-{
- // Disable the blinking caret in layout test mode, as it introduces
- // a race condition for the pixel tests. http://b/1198440
- if (ChromiumBridge::layoutTestMode())
- return 0;
-
- // We cache the interval so we don't have to repeatedly request it from gtk.
- return 0.5;
-}
-
-void RenderThemeChromiumLinux::systemFont(int propId, FontDescription& fontDescription) const
-{
- float fontSize = defaultFontSize;
-
- switch (propId) {
- case CSSValueWebkitMiniControl:
- case CSSValueWebkitSmallControl:
- case CSSValueWebkitControl:
- // Why 2 points smaller? Because that's what Gecko does. Note that we
- // are assuming a 96dpi screen, which is the default that we use on
- // Windows.
- static const float pointsPerInch = 72.0f;
- static const float pixelsPerInch = 96.0f;
- fontSize -= (2.0f / pointsPerInch) * pixelsPerInch;
- break;
- }
-
- fontDescription.firstFamily().setFamily(defaultGUIFont());
- fontDescription.setSpecifiedSize(fontSize);
- fontDescription.setIsAbsoluteSize(true);
- fontDescription.setGenericFamily(FontDescription::NoFamily);
- fontDescription.setWeight(FontWeightNormal);
- fontDescription.setItalic(false);
-}
-
-int RenderThemeChromiumLinux::minimumMenuListSize(RenderStyle* style) const
-{
- return 0;
-}
-
-bool RenderThemeChromiumLinux::paintCheckbox(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& rect)
-{
- static Image* const checkedImage = Image::loadPlatformResource("linuxCheckboxOn").releaseRef();
- static Image* const uncheckedImage = Image::loadPlatformResource("linuxCheckboxOff").releaseRef();
-
- Image* image = this->isChecked(o) ? checkedImage : uncheckedImage;
- i.context->drawImage(image, rect);
- return false;
-}
-
-void RenderThemeChromiumLinux::setCheckboxSize(RenderStyle* style) const
-{
- // If the width and height are both specified, then we have nothing to do.
- if (!style->width().isIntrinsicOrAuto() && !style->height().isAuto())
- return;
-
- // FIXME: A hard-coded size of 13 is used. This is wrong but necessary
- // for now. It matches Firefox. At different DPI settings on Windows,
- // querying the theme gives you a larger size that accounts for the higher
- // DPI. Until our entire engine honors a DPI setting other than 96, we
- // can't rely on the theme's metrics.
- const IntSize size(13, 13);
- setSizeIfAuto(style, size);
-}
-
-bool RenderThemeChromiumLinux::paintRadio(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& rect)
-{
- static Image* const checkedImage = Image::loadPlatformResource("linuxRadioOn").releaseRef();
- static Image* const uncheckedImage = Image::loadPlatformResource("linuxRadioOff").releaseRef();
-
- Image* image = this->isChecked(o) ? checkedImage : uncheckedImage;
- i.context->drawImage(image, rect);
- return false;
-}
-
-void RenderThemeChromiumLinux::setRadioSize(RenderStyle* style) const
-{
- // Use same sizing for radio box as checkbox.
- setCheckboxSize(style);
-}
-
-static SkColor brightenColor(double h, double s, double l, float brightenAmount)
-{
- l += brightenAmount;
- if (l > 1.0)
- l = 1.0;
- if (l < 0.0)
- l = 0.0;
-
- return makeRGBAFromHSLA(h, s, l, 1.0);
-}
-
-static void paintButtonLike(RenderTheme* theme, RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& rect)
-{
- SkCanvas* const canvas = i.context->platformContext()->canvas();
- SkPaint paint;
- SkRect skrect;
- const int right = rect.x() + rect.width();
- const int bottom = rect.y() + rect.height();
- SkColor baseColor = SkColorSetARGB(0xff, 0xdd, 0xdd, 0xdd);
- if (o->style()->hasBackground())
- baseColor = o->style()->backgroundColor().rgb();
- double h, s, l;
- Color(baseColor).getHSL(h, s, l);
- // Our standard gradient is from 0xdd to 0xf8. This is the amount of
- // increased luminance between those values.
- SkColor lightColor(brightenColor(h, s, l, 0.105));
-
- // If the button is too small, fallback to drawing a single, solid color
- if (rect.width() < 5 || rect.height() < 5) {
- paint.setColor(baseColor);
- skrect.set(rect.x(), rect.y(), right, bottom);
- canvas->drawRect(skrect, paint);
- return;
- }
-
- const int borderAlpha = theme->isHovered(o) ? 0x80 : 0x55;
- paint.setARGB(borderAlpha, 0, 0, 0);
- canvas->drawLine(rect.x() + 1, rect.y(), right - 1, rect.y(), paint);
- canvas->drawLine(right - 1, rect.y() + 1, right - 1, bottom - 1, paint);
- canvas->drawLine(rect.x() + 1, bottom - 1, right - 1, bottom - 1, paint);
- canvas->drawLine(rect.x(), rect.y() + 1, rect.x(), bottom - 1, paint);
-
- paint.setARGB(0xff, 0, 0, 0);
- SkPoint p[2];
- const int lightEnd = theme->isPressed(o) ? 1 : 0;
- const int darkEnd = !lightEnd;
- p[lightEnd].set(SkIntToScalar(rect.x()), SkIntToScalar(rect.y()));
- p[darkEnd].set(SkIntToScalar(rect.x()), SkIntToScalar(bottom - 1));
- SkColor colors[2];
- colors[0] = lightColor;
- colors[1] = baseColor;
-
- SkShader* shader = SkGradientShader::CreateLinear(
- p, colors, NULL, 2, SkShader::kClamp_TileMode, NULL);
- paint.setStyle(SkPaint::kFill_Style);
- paint.setShader(shader);
- shader->unref();
-
- skrect.set(rect.x() + 1, rect.y() + 1, right - 1, bottom - 1);
- canvas->drawRect(skrect, paint);
-
- paint.setShader(NULL);
- paint.setColor(brightenColor(h, s, l, -0.0588));
- canvas->drawPoint(rect.x() + 1, rect.y() + 1, paint);
- canvas->drawPoint(right - 2, rect.y() + 1, paint);
- canvas->drawPoint(rect.x() + 1, bottom - 2, paint);
- canvas->drawPoint(right - 2, bottom - 2, paint);
-}
-
-bool RenderThemeChromiumLinux::paintButton(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& rect)
-{
- paintButtonLike(this, o, i, rect);
- return false;
-}
-
-bool RenderThemeChromiumLinux::paintTextField(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& rect)
-{
- return true;
-}
-
-void RenderThemeChromiumLinux::adjustSearchFieldCancelButtonStyle(CSSStyleSelector*, RenderStyle* style, Element*) const
-{
- // Scale the button size based on the font size
- float fontScale = style->fontSize() / defaultControlFontPixelSize;
- int cancelButtonSize = lroundf(std::min(std::max(minCancelButtonSize, defaultCancelButtonSize * fontScale), maxCancelButtonSize));
- style->setWidth(Length(cancelButtonSize, Fixed));
- style->setHeight(Length(cancelButtonSize, Fixed));
-}
-
-bool RenderThemeChromiumLinux::paintSearchFieldCancelButton(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& r)
-{
- IntRect bounds = r;
- ASSERT(o->parent());
- if (!o->parent() || !o->parent()->isBox())
- return false;
-
- RenderBox* parentRenderBox = toRenderBox(o->parent());
-
- IntRect parentBox = parentRenderBox->absoluteContentBox();
-
- // Make sure the scaled button stays square and will fit in its parent's box
- bounds.setHeight(std::min(parentBox.width(), std::min(parentBox.height(), bounds.height())));
- bounds.setWidth(bounds.height());
-
- // Center the button vertically. Round up though, so if it has to be one pixel off-center, it will
- // be one pixel closer to the bottom of the field. This tends to look better with the text.
- bounds.setY(parentBox.y() + (parentBox.height() - bounds.height() + 1) / 2);
-
- static Image* cancelImage = Image::loadPlatformResource("searchCancel").releaseRef();
- static Image* cancelPressedImage = Image::loadPlatformResource("searchCancelPressed").releaseRef();
- i.context->drawImage(isPressed(o) ? cancelPressedImage : cancelImage, bounds);
- return false;
-}
-
-void RenderThemeChromiumLinux::adjustSearchFieldDecorationStyle(CSSStyleSelector*, RenderStyle* style, Element*) const
-{
- IntSize emptySize(1, 11);
- style->setWidth(Length(emptySize.width(), Fixed));
- style->setHeight(Length(emptySize.height(), Fixed));
-}
-
-void RenderThemeChromiumLinux::adjustSearchFieldResultsDecorationStyle(CSSStyleSelector*, RenderStyle* style, Element*) const
-{
- // Scale the decoration size based on the font size
- float fontScale = style->fontSize() / defaultControlFontPixelSize;
- int magnifierSize = lroundf(std::min(std::max(minSearchFieldResultsDecorationSize, defaultSearchFieldResultsDecorationSize * fontScale),
- maxSearchFieldResultsDecorationSize));
- style->setWidth(Length(magnifierSize, Fixed));
- style->setHeight(Length(magnifierSize, Fixed));
-}
-
-bool RenderThemeChromiumLinux::paintSearchFieldResultsDecoration(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& r)
-{
- IntRect bounds = r;
- ASSERT(o->parent());
- if (!o->parent() || !o->parent()->isBox())
- return false;
-
- RenderBox* parentRenderBox = toRenderBox(o->parent());
- IntRect parentBox = parentRenderBox->absoluteContentBox();
-
- // Make sure the scaled decoration stays square and will fit in its parent's box
- bounds.setHeight(std::min(parentBox.width(), std::min(parentBox.height(), bounds.height())));
- bounds.setWidth(bounds.height());
-
- // Center the decoration vertically. Round up though, so if it has to be one pixel off-center, it will
- // be one pixel closer to the bottom of the field. This tends to look better with the text.
- bounds.setY(parentBox.y() + (parentBox.height() - bounds.height() + 1) / 2);
-
- static Image* magnifierImage = Image::loadPlatformResource("searchMagnifier").releaseRef();
- i.context->drawImage(magnifierImage, bounds);
- return false;
-}
-
-void RenderThemeChromiumLinux::adjustSearchFieldResultsButtonStyle(CSSStyleSelector*, RenderStyle* style, Element*) const
-{
- // Scale the button size based on the font size
- float fontScale = style->fontSize() / defaultControlFontPixelSize;
- int magnifierHeight = lroundf(std::min(std::max(minSearchFieldResultsDecorationSize, defaultSearchFieldResultsDecorationSize * fontScale),
- maxSearchFieldResultsDecorationSize));
- int magnifierWidth = lroundf(magnifierHeight * defaultSearchFieldResultsButtonWidth / defaultSearchFieldResultsDecorationSize);
- style->setWidth(Length(magnifierWidth, Fixed));
- style->setHeight(Length(magnifierHeight, Fixed));
-}
-
-bool RenderThemeChromiumLinux::paintSearchFieldResultsButton(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& r)
-{
- IntRect bounds = r;
- ASSERT(o->parent());
- if (!o->parent())
- return false;
- if (!o->parent() || !o->parent()->isBox())
- return false;
-
- RenderBox* parentRenderBox = toRenderBox(o->parent());
- IntRect parentBox = parentRenderBox->absoluteContentBox();
-
- // Make sure the scaled decoration will fit in its parent's box
- bounds.setHeight(std::min(parentBox.height(), bounds.height()));
- bounds.setWidth(std::min(parentBox.width(), static_cast<int>(bounds.height() * defaultSearchFieldResultsButtonWidth / defaultSearchFieldResultsDecorationSize)));
-
- // Center the button vertically. Round up though, so if it has to be one pixel off-center, it will
- // be one pixel closer to the bottom of the field. This tends to look better with the text.
- bounds.setY(parentBox.y() + (parentBox.height() - bounds.height() + 1) / 2);
-
- static Image* magnifierImage = Image::loadPlatformResource("searchMagnifierResults").releaseRef();
- i.context->drawImage(magnifierImage, bounds);
- return false;
-}
-
-bool RenderThemeChromiumLinux::paintMediaButtonInternal(GraphicsContext* context, const IntRect& rect, Image* image)
-{
- context->beginTransparencyLayer(defaultMediaControlOpacity);
-
- // Draw background.
- Color oldFill = context->fillColor();
- Color oldStroke = context->strokeColor();
-
- context->setFillColor(Color::black);
- context->setStrokeColor(Color::black);
- context->drawRect(rect);
-
- context->setFillColor(oldFill);
- context->setStrokeColor(oldStroke);
-
- // Create a destination rectangle for the image that is centered in the drawing rectangle, rounded left, and down.
- IntRect imageRect = image->rect();
- imageRect.setY(rect.y() + (rect.height() - image->height() + 1) / 2);
- imageRect.setX(rect.x() + (rect.width() - image->width() + 1) / 2);
-
- context->drawImage(image, imageRect, CompositeSourceAtop);
- context->endTransparencyLayer();
-
- return false;
-}
-
-bool RenderThemeChromiumLinux::paintMediaPlayButton(RenderObject* o, const RenderObject::PaintInfo& paintInfo, const IntRect& rect)
-{
-#if ENABLE(VIDEO)
- HTMLMediaElement* mediaElement = mediaElementParent(o->node());
- if (!mediaElement)
- return false;
-
- static Image* mediaPlay = Image::loadPlatformResource("mediaPlay").releaseRef();
- static Image* mediaPause = Image::loadPlatformResource("mediaPause").releaseRef();
-
- return paintMediaButtonInternal(paintInfo.context, rect, mediaElement->paused() ? mediaPlay : mediaPause);
-#else
- return false;
-#endif
-}
-
-bool RenderThemeChromiumLinux::paintMediaMuteButton(RenderObject* o, const RenderObject::PaintInfo& paintInfo, const IntRect& rect)
-{
-#if ENABLE(VIDEO)
- HTMLMediaElement* mediaElement = mediaElementParent(o->node());
- if (!mediaElement)
- return false;
-
- static Image* soundFull = Image::loadPlatformResource("mediaSoundFull").releaseRef();
- static Image* soundNone = Image::loadPlatformResource("mediaSoundNone").releaseRef();
-
- return paintMediaButtonInternal(paintInfo.context, rect, mediaElement->muted() ? soundNone: soundFull);
-#else
- return false;
-#endif
-}
-
-void RenderThemeChromiumLinux::adjustMenuListStyle(CSSStyleSelector* selector, RenderStyle* style, WebCore::Element* e) const
-{
- // Height is locked to auto on all browsers.
- style->setLineHeight(RenderStyle::initialLineHeight());
-}
-
-bool RenderThemeChromiumLinux::paintMenuList(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& rect)
-{
- SkCanvas* const canvas = i.context->platformContext()->canvas();
- const int right = rect.x() + rect.width();
- const int middle = rect.y() + rect.height() / 2;
-
- paintButtonLike(this, o, i, rect);
-
- SkPaint paint;
- paint.setARGB(0xff, 0, 0, 0);
- paint.setAntiAlias(true);
- paint.setStyle(SkPaint::kFill_Style);
-
- SkPath path;
- path.moveTo(right - 13, middle - 3);
- path.rLineTo(6, 0);
- path.rLineTo(-3, 6);
- path.close();
- canvas->drawPath(path, paint);
-
- return false;
-}
-
-void RenderThemeChromiumLinux::adjustMenuListButtonStyle(CSSStyleSelector* selector, RenderStyle* style, Element* e) const
-{
- adjustMenuListStyle(selector, style, e);
-}
-
-// Used to paint styled menulists (i.e. with a non-default border)
-bool RenderThemeChromiumLinux::paintMenuListButton(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& rect)
-{
- return paintMenuList(o, i, rect);
-}
-
-int RenderThemeChromiumLinux::popupInternalPaddingLeft(RenderStyle* style) const
-{
- return menuListInternalPadding(style, LeftPadding);
-}
-
-int RenderThemeChromiumLinux::popupInternalPaddingRight(RenderStyle* style) const
-{
- return menuListInternalPadding(style, RightPadding);
-}
-
-int RenderThemeChromiumLinux::popupInternalPaddingTop(RenderStyle* style) const
-{
- return menuListInternalPadding(style, TopPadding);
-}
-
-int RenderThemeChromiumLinux::popupInternalPaddingBottom(RenderStyle* style) const
-{
- return menuListInternalPadding(style, BottomPadding);
-}
-
-int RenderThemeChromiumLinux::buttonInternalPaddingLeft() const
-{
- return 3;
-}
-
-int RenderThemeChromiumLinux::buttonInternalPaddingRight() const
-{
- return 3;
-}
-
-int RenderThemeChromiumLinux::buttonInternalPaddingTop() const
-{
- return 1;
-}
-
-int RenderThemeChromiumLinux::buttonInternalPaddingBottom() const
-{
- return 1;
-}
-
bool RenderThemeChromiumLinux::controlSupportsTints(const RenderObject* o) const
{
return isEnabled(o);
@@ -616,22 +91,9 @@ Color RenderThemeChromiumLinux::inactiveListBoxSelectionForegroundColor() const
return Color(0x32, 0x32, 0x32);
}
-int RenderThemeChromiumLinux::menuListInternalPadding(RenderStyle* style, int paddingType) const
+bool RenderThemeChromiumLinux::supportsControlTints() const
{
- // This internal padding is in addition to the user-supplied padding.
- // Matches the FF behavior.
- int padding = styledMenuListInternalPadding[paddingType];
-
- // Reserve the space for right arrow here. The rest of the padding is
- // set by adjustMenuListStyle, since PopMenuWin.cpp uses the padding from
- // RenderMenuList to lay out the individual items in the popup.
- // If the MenuList actually has appearance "NoAppearance", then that means
- // we don't draw a button, so don't reserve space for it.
- const int bar_type = style->direction() == LTR ? RightPadding : LeftPadding;
- if (paddingType == bar_type && style->appearance() != NoControlPart)
- padding += ScrollbarTheme::nativeTheme()->scrollbarThickness();
-
- return padding;
+ return true;
}
-} // namespace WebCore
+} // namespace WebCore