15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * This file is part of the theme implementation for form controls in WebCore. 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2012 Apple Computer, Inc. 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * This library is free software; you can redistribute it and/or 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modify it under the terms of the GNU Library General Public 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * License as published by the Free Software Foundation; either 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * version 2 of the License, or (at your option) any later version. 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * This library is distributed in the hope that it will be useful, 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * but WITHOUT ANY WARRANTY; without even the implied warranty of 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Library General Public License for more details. 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * You should have received a copy of the GNU Library General Public License 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * along with this library; see the file COPYING.LIB. If not, write to 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Boston, MA 02110-1301, USA. 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "config.h" 2353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/rendering/RenderTheme.h" 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 255d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)#include "core/CSSValueKeywords.h" 265d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)#include "core/HTMLNames.h" 275d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)#include "core/InputTypeNames.h" 2853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/dom/Document.h" 2993ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)#include "core/dom/shadow/ElementShadow.h" 3053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/editing/FrameSelection.h" 3153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/fileapi/FileList.h" 32d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "core/frame/LocalFrame.h" 3393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)#include "core/html/HTMLCollection.h" 3493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)#include "core/html/HTMLDataListElement.h" 359e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)#include "core/html/HTMLDataListOptionsCollection.h" 3610f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch#include "core/html/HTMLFormControlElement.h" 3753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/html/HTMLInputElement.h" 3853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/html/HTMLMeterElement.h" 3993ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)#include "core/html/HTMLOptionElement.h" 4093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)#include "core/html/parser/HTMLParserIdioms.h" 4153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/html/shadow/MediaControlElements.h" 42e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)#include "core/html/shadow/ShadowElementNames.h" 4353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/html/shadow/SpinButtonElement.h" 4453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/html/shadow/TextControlInnerElements.h" 4553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/page/FocusController.h" 4653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/page/Page.h" 4709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)#include "core/frame/Settings.h" 4853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/rendering/PaintInfo.h" 4953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/rendering/RenderMeter.h" 5053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/rendering/RenderView.h" 5153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/rendering/style/RenderStyle.h" 521e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)#include "platform/FileMetadata.h" 531e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)#include "platform/FloatConversion.h" 545d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)#include "platform/RuntimeEnabledFeatures.h" 55f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)#include "platform/fonts/FontSelector.h" 56a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)#include "platform/graphics/GraphicsContextStateSaver.h" 571e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)#include "platform/text/PlatformLocale.h" 58a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)#include "platform/text/StringTruncator.h" 595267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#include "public/platform/Platform.h" 605267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#include "public/platform/WebFallbackThemeEngine.h" 615267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#include "public/platform/WebRect.h" 620019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch#include "wtf/text/StringBuilder.h" 635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// The methods in this file are shared by all themes on every platform. 655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 66c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink { 675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)using namespace HTMLNames; 695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 70e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)static WebFallbackThemeEngine::State getWebFallbackThemeState(const RenderTheme* theme, const RenderObject* o) 7193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles){ 7293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) if (!theme->isEnabled(o)) 73e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) return WebFallbackThemeEngine::StateDisabled; 7493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) if (theme->isPressed(o)) 75e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) return WebFallbackThemeEngine::StatePressed; 7693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) if (theme->isHovered(o)) 77e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) return WebFallbackThemeEngine::StateHover; 7893ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 79e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) return WebFallbackThemeEngine::StateNormal; 8093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)} 8193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)RenderTheme::RenderTheme() 8309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) : m_hasCustomFocusRingColor(false) 845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#if USE(NEW_THEME) 8509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) , m_platformTheme(platformTheme()) 865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 905d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)void RenderTheme::adjustStyle(RenderStyle* style, Element* e, const CachedUAStyle* uaStyle) 915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Force inline and table display styles to be inline-block (except for table- which is block) 935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ControlPart part = style->appearance(); 94926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (style->display() == INLINE || style->display() == INLINE_TABLE || style->display() == TABLE_ROW_GROUP 95926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) || style->display() == TABLE_HEADER_GROUP || style->display() == TABLE_FOOTER_GROUP 96926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) || style->display() == TABLE_ROW || style->display() == TABLE_COLUMN_GROUP || style->display() == TABLE_COLUMN 97926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) || style->display() == TABLE_CELL || style->display() == TABLE_CAPTION) 985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) style->setDisplay(INLINE_BLOCK); 9919cde67944066db31e633d9e386f2aa9bf9fadb3Torne (Richard Coles) else if (style->display() == LIST_ITEM || style->display() == TABLE) 1005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) style->setDisplay(BLOCK); 1015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1025d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) if (uaStyle && uaStyle->hasAppearance && isControlStyled(style, uaStyle)) { 1035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (part == MenulistPart) { 1045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) style->setAppearance(MenulistButtonPart); 1055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) part = MenulistButtonPart; 1065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else 1075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) style->setAppearance(NoControlPart); 1085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!style->hasAppearance()) 1115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 1125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) if (shouldUseFallbackTheme(style)) { 1145267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) adjustStyleUsingFallbackTheme(style, e); 11593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) return; 11693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) } 11793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 1185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#if USE(NEW_THEME) 1195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) switch (part) { 120926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case CheckboxPart: 121926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case InnerSpinButtonPart: 122926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case RadioPart: 123926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case PushButtonPart: 124926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case SquareButtonPart: 125926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case ButtonPart: { 126926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) // Border 127926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) LengthBox borderBox(style->borderTopWidth(), style->borderRightWidth(), style->borderBottomWidth(), style->borderLeftWidth()); 128a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) borderBox = m_platformTheme->controlBorder(part, style->font().fontDescription(), borderBox, style->effectiveZoom()); 129926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (borderBox.top().value() != static_cast<int>(style->borderTopWidth())) { 130926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (borderBox.top().value()) 131926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) style->setBorderTopWidth(borderBox.top().value()); 132926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) else 133926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) style->resetBorderTop(); 134926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 135926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (borderBox.right().value() != static_cast<int>(style->borderRightWidth())) { 136926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (borderBox.right().value()) 137926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) style->setBorderRightWidth(borderBox.right().value()); 138926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) else 139926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) style->resetBorderRight(); 140926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 141926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (borderBox.bottom().value() != static_cast<int>(style->borderBottomWidth())) { 142926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) style->setBorderBottomWidth(borderBox.bottom().value()); 143926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (borderBox.bottom().value()) 1445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) style->setBorderBottomWidth(borderBox.bottom().value()); 145926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) else 146926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) style->resetBorderBottom(); 147926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 148926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (borderBox.left().value() != static_cast<int>(style->borderLeftWidth())) { 149926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) style->setBorderLeftWidth(borderBox.left().value()); 150926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (borderBox.left().value()) 1515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) style->setBorderLeftWidth(borderBox.left().value()); 152926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) else 153926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) style->resetBorderLeft(); 154926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 155926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 156926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) // Padding 157a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) LengthBox paddingBox = m_platformTheme->controlPadding(part, style->font().fontDescription(), style->paddingBox(), style->effectiveZoom()); 158926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (paddingBox != style->paddingBox()) 159926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) style->setPaddingBox(paddingBox); 160926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 161926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) // Whitespace 162c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) if (m_platformTheme->controlRequiresPreWhiteSpace(part)) 163926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) style->setWhiteSpace(PRE); 16402772c6a72f1ee0b226341a4f4439970c29fc861Ben Murdoch 165926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) // Width / Height 166926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) // The width and height here are affected by the zoom. 167926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) // FIXME: Check is flawed, since it doesn't take min-width/max-width into account. 168a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) LengthSize controlSize = m_platformTheme->controlSize(part, style->font().fontDescription(), LengthSize(style->width(), style->height()), style->effectiveZoom()); 169926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (controlSize.width() != style->width()) 170926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) style->setWidth(controlSize.width()); 171926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (controlSize.height() != style->height()) 172926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) style->setHeight(controlSize.height()); 17302772c6a72f1ee0b226341a4f4439970c29fc861Ben Murdoch 174926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) // Min-Width / Min-Height 175a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) LengthSize minControlSize = m_platformTheme->minimumControlSize(part, style->font().fontDescription(), style->effectiveZoom()); 176926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (minControlSize.width() != style->minWidth()) 177926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) style->setMinWidth(minControlSize.width()); 178926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (minControlSize.height() != style->minHeight()) 179926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) style->setMinHeight(minControlSize.height()); 18002772c6a72f1ee0b226341a4f4439970c29fc861Ben Murdoch 181926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) // Font 182a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) FontDescription controlFont = m_platformTheme->controlFont(part, style->font().fontDescription(), style->effectiveZoom()); 183926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (controlFont != style->font().fontDescription()) { 184926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) // Reset our line-height 185926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) style->setLineHeight(RenderStyle::initialLineHeight()); 186926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 187926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) // Now update our font. 188926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (style->setFontDescription(controlFont)) 189d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) style->font().update(nullptr); 1905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 191926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 192926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) default: 193926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) break; 1945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 1965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Call the appropriate style adjustment method based off the appearance value. 1985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) switch (style->appearance()) { 1995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#if !USE(NEW_THEME) 200926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case CheckboxPart: 2015267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) return adjustCheckboxStyle(style, e); 202926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case RadioPart: 2035267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) return adjustRadioStyle(style, e); 204926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case PushButtonPart: 205926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case SquareButtonPart: 206926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case ButtonPart: 2075267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) return adjustButtonStyle(style, e); 208926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case InnerSpinButtonPart: 2095267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) return adjustInnerSpinButtonStyle(style, e); 2105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 211926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case MenulistPart: 2125267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) return adjustMenuListStyle(style, e); 213926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case MenulistButtonPart: 2145267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) return adjustMenuListButtonStyle(style, e); 215926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case SliderThumbHorizontalPart: 216926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case SliderThumbVerticalPart: 2175267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) return adjustSliderThumbStyle(style, e); 218926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case SearchFieldPart: 2195267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) return adjustSearchFieldStyle(style, e); 220926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case SearchFieldCancelButtonPart: 2215267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) return adjustSearchFieldCancelButtonStyle(style, e); 222926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case SearchFieldDecorationPart: 2235267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) return adjustSearchFieldDecorationStyle(style, e); 224926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case SearchFieldResultsDecorationPart: 2255267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) return adjustSearchFieldResultsDecorationStyle(style, e); 226926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) default: 227926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) break; 2285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 2305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool RenderTheme::paint(RenderObject* o, const PaintInfo& paintInfo, const IntRect& r) 2325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 2335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ControlPart part = o->style()->appearance(); 2345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 23593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) if (shouldUseFallbackTheme(o->style())) 23693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) return paintUsingFallbackTheme(o, paintInfo, r); 23793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 2385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#if USE(NEW_THEME) 2395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) switch (part) { 240926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case CheckboxPart: 241926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case RadioPart: 242926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case PushButtonPart: 243926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case SquareButtonPart: 244926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case ButtonPart: 245926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case InnerSpinButtonPart: 246c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) m_platformTheme->paint(part, controlStatesForRenderer(o), const_cast<GraphicsContext*>(paintInfo.context), r, o->style()->effectiveZoom(), o->view()->frameView()); 247926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return false; 248926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) default: 249926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) break; 2505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 2525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Call the appropriate paint method based off the appearance value. 2545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) switch (part) { 2555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#if !USE(NEW_THEME) 256926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case CheckboxPart: 257926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return paintCheckbox(o, paintInfo, r); 258926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case RadioPart: 259926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return paintRadio(o, paintInfo, r); 260926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case PushButtonPart: 261926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case SquareButtonPart: 262926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case ButtonPart: 263926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return paintButton(o, paintInfo, r); 264926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case InnerSpinButtonPart: 265926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return paintInnerSpinButton(o, paintInfo, r); 2665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 267926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case MenulistPart: 268926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return paintMenuList(o, paintInfo, r); 269926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case MeterPart: 270926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case RelevancyLevelIndicatorPart: 271926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case ContinuousCapacityLevelIndicatorPart: 272926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case DiscreteCapacityLevelIndicatorPart: 273926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case RatingLevelIndicatorPart: 274926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return paintMeter(o, paintInfo, r); 275926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case ProgressBarPart: 276926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return paintProgressBar(o, paintInfo, r); 277926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case SliderHorizontalPart: 278926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case SliderVerticalPart: 279926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return paintSliderTrack(o, paintInfo, r); 280926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case SliderThumbHorizontalPart: 281926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case SliderThumbVerticalPart: 282926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return paintSliderThumb(o, paintInfo, r); 283926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case MediaEnterFullscreenButtonPart: 284926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case MediaExitFullscreenButtonPart: 285926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return paintMediaFullscreenButton(o, paintInfo, r); 286926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case MediaPlayButtonPart: 287926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return paintMediaPlayButton(o, paintInfo, r); 288926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case MediaOverlayPlayButtonPart: 289926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return paintMediaOverlayPlayButton(o, paintInfo, r); 290926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case MediaMuteButtonPart: 291926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return paintMediaMuteButton(o, paintInfo, r); 292926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case MediaToggleClosedCaptionsButtonPart: 293926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return paintMediaToggleClosedCaptionsButton(o, paintInfo, r); 294926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case MediaSliderPart: 295926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return paintMediaSliderTrack(o, paintInfo, r); 296926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case MediaSliderThumbPart: 297926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return paintMediaSliderThumb(o, paintInfo, r); 298926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case MediaVolumeSliderContainerPart: 299926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return paintMediaVolumeSliderContainer(o, paintInfo, r); 300926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case MediaVolumeSliderPart: 301926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return paintMediaVolumeSliderTrack(o, paintInfo, r); 302926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case MediaVolumeSliderThumbPart: 303926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return paintMediaVolumeSliderThumb(o, paintInfo, r); 304926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case MediaFullScreenVolumeSliderPart: 305926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return paintMediaFullScreenVolumeSliderTrack(o, paintInfo, r); 306926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case MediaFullScreenVolumeSliderThumbPart: 307926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return paintMediaFullScreenVolumeSliderThumb(o, paintInfo, r); 308926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case MediaTimeRemainingPart: 309926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return paintMediaTimeRemaining(o, paintInfo, r); 310926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case MediaCurrentTimePart: 311926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return paintMediaCurrentTime(o, paintInfo, r); 312926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case MediaControlsBackgroundPart: 313926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return paintMediaControlsBackground(o, paintInfo, r); 3147242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci case MediaCastOffButtonPart: 3157242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci return paintMediaCastButton(o, paintInfo, r); 3167242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci case MediaOverlayCastOffButtonPart: 3177242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci return paintMediaCastButton(o, paintInfo, r); 318926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case MenulistButtonPart: 319926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case TextFieldPart: 320926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case TextAreaPart: 321926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return true; 322926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case SearchFieldPart: 323926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return paintSearchField(o, paintInfo, r); 324926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case SearchFieldCancelButtonPart: 325926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return paintSearchFieldCancelButton(o, paintInfo, r); 326926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case SearchFieldDecorationPart: 327926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return paintSearchFieldDecoration(o, paintInfo, r); 328926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case SearchFieldResultsDecorationPart: 329926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return paintSearchFieldResultsDecoration(o, paintInfo, r); 330926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) default: 331926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) break; 3325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; // We don't support the appearance, so let the normal background/border paint. 3355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool RenderTheme::paintBorderOnly(RenderObject* o, const PaintInfo& paintInfo, const IntRect& r) 3385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Call the appropriate paint method based off the appearance value. 3405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) switch (o->style()->appearance()) { 341926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case TextFieldPart: 342926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return paintTextField(o, paintInfo, r); 343926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case TextAreaPart: 344926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return paintTextArea(o, paintInfo, r); 345926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case MenulistButtonPart: 346926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case SearchFieldPart: 347197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch case ListboxPart: 348926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return true; 349926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case CheckboxPart: 350926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case RadioPart: 351926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case PushButtonPart: 352926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case SquareButtonPart: 353926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case ButtonPart: 354926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case MenulistPart: 355926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case MeterPart: 356926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case RelevancyLevelIndicatorPart: 357926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case ContinuousCapacityLevelIndicatorPart: 358926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case DiscreteCapacityLevelIndicatorPart: 359926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case RatingLevelIndicatorPart: 360926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case ProgressBarPart: 361926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case SliderHorizontalPart: 362926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case SliderVerticalPart: 363926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case SliderThumbHorizontalPart: 364926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case SliderThumbVerticalPart: 365926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case SearchFieldCancelButtonPart: 366926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case SearchFieldDecorationPart: 367926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case SearchFieldResultsDecorationPart: 368926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) default: 369926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) break; 3705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 3735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool RenderTheme::paintDecorations(RenderObject* o, const PaintInfo& paintInfo, const IntRect& r) 3765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Call the appropriate paint method based off the appearance value. 3785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) switch (o->style()->appearance()) { 379926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case MenulistButtonPart: 380926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return paintMenuListButton(o, paintInfo, r); 381926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case TextFieldPart: 382926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case TextAreaPart: 383926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case CheckboxPart: 384926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case RadioPart: 385926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case PushButtonPart: 386926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case SquareButtonPart: 387926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case ButtonPart: 388926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case MenulistPart: 389926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case MeterPart: 390926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case RelevancyLevelIndicatorPart: 391926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case ContinuousCapacityLevelIndicatorPart: 392926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case DiscreteCapacityLevelIndicatorPart: 393926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case RatingLevelIndicatorPart: 394926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case ProgressBarPart: 395926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case SliderHorizontalPart: 396926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case SliderVerticalPart: 397926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case SliderThumbHorizontalPart: 398926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case SliderThumbVerticalPart: 399926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case SearchFieldPart: 400926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case SearchFieldCancelButtonPart: 401926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case SearchFieldDecorationPart: 402926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case SearchFieldResultsDecorationPart: 403926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) default: 404926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) break; 4055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 4065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 4085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 4095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 41093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)String RenderTheme::extraDefaultStyleSheet() 41193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles){ 41293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) StringBuilder runtimeCSS; 4137242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci if (RuntimeEnabledFeatures::contextMenuEnabled()) 414e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) runtimeCSS.appendLiteral("menu[type=\"popup\" i] { display: none; }"); 41593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) return runtimeCSS.toString(); 41693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)} 41793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 4185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)String RenderTheme::formatMediaControlsTime(float time) const 4195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 420926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!std::isfinite(time)) 4215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) time = 0; 4225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) int seconds = (int)fabsf(time); 4235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) int hours = seconds / (60 * 60); 4245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) int minutes = (seconds / 60) % 60; 4255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) seconds %= 60; 4265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (hours) { 4275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (hours > 9) 4285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return String::format("%s%02d:%02d:%02d", (time < 0 ? "-" : ""), hours, minutes, seconds); 4295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return String::format("%s%01d:%02d:%02d", (time < 0 ? "-" : ""), hours, minutes, seconds); 4315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 4325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return String::format("%s%02d:%02d", (time < 0 ? "-" : ""), minutes, seconds); 4345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 4355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)String RenderTheme::formatMediaControlsCurrentTime(float currentTime, float /*duration*/) const 4375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 4385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return formatMediaControlsTime(currentTime); 4395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 4405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Color RenderTheme::activeSelectionBackgroundColor() const 4425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 44309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return platformActiveSelectionBackgroundColor().blendWithWhite(); 4445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 4455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Color RenderTheme::inactiveSelectionBackgroundColor() const 4475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 44809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return platformInactiveSelectionBackgroundColor().blendWithWhite(); 4495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 4505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Color RenderTheme::activeSelectionForegroundColor() const 4525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 45309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return platformActiveSelectionForegroundColor(); 4545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 4555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Color RenderTheme::inactiveSelectionForegroundColor() const 4575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 45809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return platformInactiveSelectionForegroundColor(); 4595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 4605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Color RenderTheme::activeListBoxSelectionBackgroundColor() const 4625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 46309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return platformActiveListBoxSelectionBackgroundColor(); 4645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 4655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Color RenderTheme::inactiveListBoxSelectionBackgroundColor() const 4675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 46809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return platformInactiveListBoxSelectionBackgroundColor(); 4695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 4705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Color RenderTheme::activeListBoxSelectionForegroundColor() const 4725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 47309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return platformActiveListBoxSelectionForegroundColor(); 4745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 4755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Color RenderTheme::inactiveListBoxSelectionForegroundColor() const 4775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 47809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return platformInactiveListBoxSelectionForegroundColor(); 4795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 4805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Color RenderTheme::platformActiveSelectionBackgroundColor() const 4825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 4835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Use a blue color by default if the platform theme doesn't define anything. 4845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return Color(0, 0, 255); 4855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 4865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Color RenderTheme::platformActiveSelectionForegroundColor() const 4885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 4895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Use a white color by default if the platform theme doesn't define anything. 4905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return Color::white; 4915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 4925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Color RenderTheme::platformInactiveSelectionBackgroundColor() const 4945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 4955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Use a grey color by default if the platform theme doesn't define anything. 4965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // This color matches Firefox's inactive color. 4975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return Color(176, 176, 176); 4985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 4995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Color RenderTheme::platformInactiveSelectionForegroundColor() const 5015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 5025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Use a black color by default. 5035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return Color::black; 5045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Color RenderTheme::platformActiveListBoxSelectionBackgroundColor() const 5075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 5085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return platformActiveSelectionBackgroundColor(); 5095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Color RenderTheme::platformActiveListBoxSelectionForegroundColor() const 5125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 5135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return platformActiveSelectionForegroundColor(); 5145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Color RenderTheme::platformInactiveListBoxSelectionBackgroundColor() const 5175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 5185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return platformInactiveSelectionBackgroundColor(); 5195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Color RenderTheme::platformInactiveListBoxSelectionForegroundColor() const 5225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 5235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return platformInactiveSelectionForegroundColor(); 5245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)int RenderTheme::baselinePosition(const RenderObject* o) const 5275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 5285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!o->isBox()) 5295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 5305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const RenderBox* box = toRenderBox(o); 5325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#if USE(NEW_THEME) 534c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) return box->height() + box->marginTop() + m_platformTheme->baselinePositionAdjustment(o->style()->appearance()) * o->style()->effectiveZoom(); 5355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#else 5365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return box->height() + box->marginTop(); 5375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 5385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool RenderTheme::isControlContainer(ControlPart appearance) const 5415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 5425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // There are more leaves than this, but we'll patch this function as we add support for 5435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // more controls. 5445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return appearance != CheckboxPart && appearance != RadioPart; 5455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 547e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdochstatic bool isBackgroundOrBorderStyled(const RenderStyle& style, const CachedUAStyle& uaStyle) 54853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles){ 5495267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) // Code below excludes the background-repeat from comparison by resetting it 550e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch FillLayer backgroundCopy = uaStyle.backgroundLayers; 551197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch FillLayer backgroundLayersCopy = style.backgroundLayers(); 5525267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) backgroundCopy.setRepeatX(NoRepeatFill); 5535267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) backgroundCopy.setRepeatY(NoRepeatFill); 5545267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) backgroundLayersCopy.setRepeatX(NoRepeatFill); 5555267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) backgroundLayersCopy.setRepeatY(NoRepeatFill); 55653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) // Test the style to see if the UA border and background match. 557e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch return style.border() != uaStyle.border 5585267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) || backgroundLayersCopy != backgroundCopy 5598abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) || style.visitedDependentColor(CSSPropertyBackgroundColor) != uaStyle.backgroundColor; 56053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)} 56153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 5625d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)bool RenderTheme::isControlStyled(const RenderStyle* style, const CachedUAStyle* uaStyle) const 5635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 5645d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) ASSERT(uaStyle); 5655d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) 5665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) switch (style->appearance()) { 567926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case PushButtonPart: 568926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case SquareButtonPart: 569926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case ButtonPart: 570926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case ProgressBarPart: 571926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case MeterPart: 572926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case RelevancyLevelIndicatorPart: 573926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case ContinuousCapacityLevelIndicatorPart: 574926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case DiscreteCapacityLevelIndicatorPart: 575926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case RatingLevelIndicatorPart: 5765d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) return isBackgroundOrBorderStyled(*style, *uaStyle); 57753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 57853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) case MenulistPart: 57953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) case SearchFieldPart: 580926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case TextAreaPart: 58153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) case TextFieldPart: 5825d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) return isBackgroundOrBorderStyled(*style, *uaStyle) || style->boxShadow(); 58353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 58453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) case SliderHorizontalPart: 58553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) case SliderVerticalPart: 58653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) return style->boxShadow(); 58753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 588926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) default: 589926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return false; 5905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 5915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5939e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)void RenderTheme::adjustPaintInvalidationRect(const RenderObject* o, IntRect& r) 5945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 5955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#if USE(NEW_THEME) 596c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) m_platformTheme->inflateControlPaintRect(o->style()->appearance(), controlStatesForRenderer(o), r, o->style()->effectiveZoom()); 5975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 5985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 600591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdochbool RenderTheme::shouldDrawDefaultFocusRing(RenderObject* renderer) const 601591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch{ 602591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch if (supportsFocusRing(renderer->style())) 603591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch return false; 604591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch Node* node = renderer->node(); 605591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch if (!node) 606591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch return true; 6077242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci if (!renderer->style()->hasAppearance() && !node->isLink()) 6087242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci return true; 609591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch // We can't use RenderTheme::isFocused because outline:auto might be 610591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch // specified to non-:focus rulesets. 611591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch if (node->focused() && !node->shouldHaveFocusAppearance()) 612591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch return false; 613591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch return true; 614591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch} 615591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch 6165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool RenderTheme::supportsFocusRing(const RenderStyle* style) const 6175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 6185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return (style->hasAppearance() && style->appearance() != TextFieldPart && style->appearance() != TextAreaPart && style->appearance() != MenulistButtonPart && style->appearance() != ListboxPart); 6195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 6205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool RenderTheme::stateChanged(RenderObject* o, ControlState state) const 6225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 6235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Default implementation assumes the controls don't respond to changes in :hover state 624d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) if (state == HoverControlState && !supportsHover(o->style())) 6255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 6265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Assume pressed state is only responded to if the control is enabled. 628d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) if (state == PressedControlState && !isEnabled(o)) 6295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 6305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6319e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) o->setShouldDoFullPaintInvalidation(true); 6325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 6335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 6345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)ControlStates RenderTheme::controlStatesForRenderer(const RenderObject* o) const 6365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 6375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ControlStates result = 0; 6385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (isHovered(o)) { 639d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) result |= HoverControlState; 6405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (isSpinUpButtonPartHovered(o)) 641d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) result |= SpinUpControlState; 6425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (isPressed(o)) { 644d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) result |= PressedControlState; 6455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (isSpinUpButtonPartPressed(o)) 646d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) result |= SpinUpControlState; 6475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (isFocused(o) && o->style()->outlineStyleIsAuto()) 649d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) result |= FocusControlState; 6505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (isEnabled(o)) 651d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) result |= EnabledControlState; 6525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (isChecked(o)) 653d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) result |= CheckedControlState; 6545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (isReadOnlyControl(o)) 655d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) result |= ReadOnlyControlState; 6565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!isActive(o)) 657d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) result |= WindowInactiveControlState; 6585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (isIndeterminate(o)) 659d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) result |= IndeterminateControlState; 6605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return result; 6615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 6625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool RenderTheme::isActive(const RenderObject* o) const 6645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 6655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Node* node = o->node(); 6665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!node) 6675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 6685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6698abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) Page* page = node->document().page(); 6705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!page) 6715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 6725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6733c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch return page->focusController().isActive(); 6745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 6755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool RenderTheme::isChecked(const RenderObject* o) const 6775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 678d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) if (!isHTMLInputElement(o->node())) 6795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 680521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return toHTMLInputElement(o->node())->shouldAppearChecked(); 6815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 6825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool RenderTheme::isIndeterminate(const RenderObject* o) const 6845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 685d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) if (!isHTMLInputElement(o->node())) 6865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 687521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return toHTMLInputElement(o->node())->shouldAppearIndeterminate(); 6885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 6895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool RenderTheme::isEnabled(const RenderObject* o) const 6915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 6925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Node* node = o->node(); 6935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!node || !node->isElementNode()) 6945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 69553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) return !toElement(node)->isDisabledFormControl(); 6965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 6975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool RenderTheme::isFocused(const RenderObject* o) const 6995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 7005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Node* node = o->node(); 7015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!node) 7025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 7035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) node = node->focusDelegate(); 7058abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) Document& document = node->document(); 706d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) LocalFrame* frame = document.frame(); 70710f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch return node == document.focusedElement() && node->focused() && node->shouldHaveFocusAppearance() && frame && frame->selection().isFocusedAndActive(); 7085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 7095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool RenderTheme::isPressed(const RenderObject* o) const 7115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 7125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!o->node()) 7135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 7145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return o->node()->active(); 7155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 7165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool RenderTheme::isSpinUpButtonPartPressed(const RenderObject* o) const 7185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 7195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Node* node = o->node(); 7205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!node || !node->active() || !node->isElementNode() 721926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) || !toElement(node)->isSpinButtonElement()) 7225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 72306f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) SpinButtonElement* element = toSpinButtonElement(node); 7245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return element->upDownState() == SpinButtonElement::Up; 7255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 7265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool RenderTheme::isReadOnlyControl(const RenderObject* o) const 7285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 7295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Node* node = o->node(); 73010f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch if (!node || !node->isElementNode() || !toElement(node)->isFormControlElement()) 7315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 73210f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch HTMLFormControlElement* element = toHTMLFormControlElement(node); 73310f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch return element->isReadOnly(); 7345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 7355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool RenderTheme::isHovered(const RenderObject* o) const 7375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 7385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Node* node = o->node(); 7395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!node) 7405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 741926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!node->isElementNode() || !toElement(node)->isSpinButtonElement()) 7425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return node->hovered(); 74306f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) SpinButtonElement* element = toSpinButtonElement(node); 7445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return element->hovered() && element->upDownState() != SpinButtonElement::Indeterminate; 7455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 7465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool RenderTheme::isSpinUpButtonPartHovered(const RenderObject* o) const 7485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 7495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Node* node = o->node(); 750926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!node || !node->isElementNode() || !toElement(node)->isSpinButtonElement()) 7515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 75206f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) SpinButtonElement* element = toSpinButtonElement(node); 7535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return element->upDownState() == SpinButtonElement::Up; 7545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 7555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#if !USE(NEW_THEME) 7575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7585267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)void RenderTheme::adjustCheckboxStyle(RenderStyle* style, Element*) const 7595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 7605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // A summary of the rules for checkbox designed to match WinIE: 7615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // width/height - honored (WinIE actually scales its control for small widths, but lets it overflow for small heights.) 7625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // font-size - not honored (control has no text), but we use it to decide which control size to use. 7635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setCheckboxSize(style); 7645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // padding - not honored by WinIE, needs to be removed. 7665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) style->resetPadding(); 7675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // border - honored by WinIE, but looks terrible (just paints in the control box and turns off the Windows XP theme) 7695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // for now, we will not honor it. 7705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) style->resetBorder(); 7715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 7725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7735267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)void RenderTheme::adjustRadioStyle(RenderStyle* style, Element*) const 7745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 7755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // A summary of the rules for checkbox designed to match WinIE: 7765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // width/height - honored (WinIE actually scales its control for small widths, but lets it overflow for small heights.) 7775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // font-size - not honored (control has no text), but we use it to decide which control size to use. 7785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setRadioSize(style); 7795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // padding - not honored by WinIE, needs to be removed. 7815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) style->resetPadding(); 7825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // border - honored by WinIE, but looks terrible (just paints in the control box and turns off the Windows XP theme) 7845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // for now, we will not honor it. 7855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) style->resetBorder(); 7865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 7875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7885267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)void RenderTheme::adjustButtonStyle(RenderStyle* style, Element*) const 7895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 7905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 7915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7925267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)void RenderTheme::adjustInnerSpinButtonStyle(RenderStyle*, Element*) const 7935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 7945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 7955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 7965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7975267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)void RenderTheme::adjustMenuListStyle(RenderStyle*, Element*) const 7985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 7995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 8005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)IntSize RenderTheme::meterSizeForBounds(const RenderMeter*, const IntRect& bounds) const 8025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 8035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return bounds.size(); 8045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 8055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool RenderTheme::supportsMeter(ControlPart) const 8075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 8085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 8095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 8105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool RenderTheme::paintMeter(RenderObject*, const PaintInfo&, const IntRect&) 8125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 8135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 8145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 8155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void RenderTheme::paintSliderTicks(RenderObject* o, const PaintInfo& paintInfo, const IntRect& rect) 8175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 8185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Node* node = o->node(); 819d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) if (!isHTMLInputElement(node)) 8205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 8215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 822521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) HTMLInputElement* input = toHTMLInputElement(node); 8237242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci if (input->type() != InputTypeNames::range) 82407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch return; 82507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 826521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) HTMLDataListElement* dataList = input->dataList(); 8275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!dataList) 8285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 8295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) double min = input->minimum(); 8315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) double max = input->maximum(); 8325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ControlPart part = o->style()->appearance(); 8335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // We don't support ticks on alternate sliders like MediaVolumeSliders. 8345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (part != SliderHorizontalPart && part != SliderVerticalPart) 8355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 8365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool isHorizontal = part == SliderHorizontalPart; 8375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) IntSize thumbSize; 839e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) RenderObject* thumbRenderer = input->userAgentShadowRoot()->getElementById(ShadowElementNames::sliderThumb())->renderer(); 8405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (thumbRenderer) { 8415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) RenderStyle* thumbStyle = thumbRenderer->style(); 8425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) int thumbWidth = thumbStyle->width().intValue(); 8435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) int thumbHeight = thumbStyle->height().intValue(); 8445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) thumbSize.setWidth(isHorizontal ? thumbWidth : thumbHeight); 8455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) thumbSize.setHeight(isHorizontal ? thumbHeight : thumbWidth); 8465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 8475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) IntSize tickSize = sliderTickSize(); 8495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) float zoomFactor = o->style()->effectiveZoom(); 8505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) FloatRect tickRect; 8515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) int tickRegionSideMargin = 0; 8525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) int tickRegionWidth = 0; 8535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) IntRect trackBounds; 854e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) RenderObject* trackRenderer = input->userAgentShadowRoot()->getElementById(ShadowElementNames::sliderTrack())->renderer(); 8555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // We can ignoring transforms because transform is handled by the graphics context. 8565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (trackRenderer) 8575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) trackBounds = trackRenderer->absoluteBoundingBoxRectIgnoringTransforms(); 8585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) IntRect sliderBounds = o->absoluteBoundingBoxRectIgnoringTransforms(); 8595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make position relative to the transformed ancestor element. 8615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) trackBounds.setX(trackBounds.x() - sliderBounds.x() + rect.x()); 8625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) trackBounds.setY(trackBounds.y() - sliderBounds.y() + rect.y()); 8635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (isHorizontal) { 8655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) tickRect.setWidth(floor(tickSize.width() * zoomFactor)); 8665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) tickRect.setHeight(floor(tickSize.height() * zoomFactor)); 8675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) tickRect.setY(floor(rect.y() + rect.height() / 2.0 + sliderTickOffsetFromTrackCenter() * zoomFactor)); 868926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) tickRegionSideMargin = trackBounds.x() + (thumbSize.width() - tickSize.width() * zoomFactor) / 2.0; 869926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) tickRegionWidth = trackBounds.width() - thumbSize.width(); 8705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 8715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) tickRect.setWidth(floor(tickSize.height() * zoomFactor)); 8725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) tickRect.setHeight(floor(tickSize.width() * zoomFactor)); 8735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) tickRect.setX(floor(rect.x() + rect.width() / 2.0 + sliderTickOffsetFromTrackCenter() * zoomFactor)); 8745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) tickRegionSideMargin = trackBounds.y() + (thumbSize.width() - tickSize.width() * zoomFactor) / 2.0; 875926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) tickRegionWidth = trackBounds.height() - thumbSize.width(); 8765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 8779e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) RefPtrWillBeRawPtr<HTMLDataListOptionsCollection> options = dataList->options(); 8785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) GraphicsContextStateSaver stateSaver(*paintInfo.context); 8797757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch paintInfo.context->setFillColor(o->resolveColor(CSSPropertyColor)); 8809e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) for (unsigned i = 0; HTMLOptionElement* optionElement = options->item(i); i++) { 8819e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) String value = optionElement->value(); 8825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!input->isValidValue(value)) 8835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) continue; 8845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) double parsedValue = parseToDoubleForNumberType(input->sanitizeValue(value)); 8855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) double tickFraction = (parsedValue - min) / (max - min); 8865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) double tickRatio = isHorizontal && o->style()->isLeftToRightDirection() ? tickFraction : 1.0 - tickFraction; 8875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) double tickPosition = round(tickRegionSideMargin + tickRegionWidth * tickRatio); 8885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (isHorizontal) 8895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) tickRect.setX(tickPosition); 8905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else 8915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) tickRect.setY(tickPosition); 8925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) paintInfo.context->fillRect(tickRect); 8935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 8945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 8955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)double RenderTheme::animationRepeatIntervalForProgressBar(RenderProgress*) const 8975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 8985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 8995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 9005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)double RenderTheme::animationDurationForProgressBar(RenderProgress*) const 9025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 9035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 9045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 9055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool RenderTheme::shouldHaveSpinButton(HTMLInputElement* inputElement) const 9075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 9087242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci return inputElement->isSteppable() && inputElement->type() != InputTypeNames::range; 9095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 9105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9115267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)void RenderTheme::adjustMenuListButtonStyle(RenderStyle*, Element*) const 9125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 9135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 9145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9155267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)void RenderTheme::adjustSliderThumbStyle(RenderStyle* style, Element* element) const 9165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 9175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) adjustSliderThumbSize(style, element); 9185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 9195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void RenderTheme::adjustSliderThumbSize(RenderStyle*, Element*) const 9215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 9225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 9235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9245267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)void RenderTheme::adjustSearchFieldStyle(RenderStyle*, Element*) const 9255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 9265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 9275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9285267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)void RenderTheme::adjustSearchFieldCancelButtonStyle(RenderStyle*, Element*) const 9295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 9305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 9315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9325267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)void RenderTheme::adjustSearchFieldDecorationStyle(RenderStyle*, Element*) const 9335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 9345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 9355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9365267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)void RenderTheme::adjustSearchFieldResultsDecorationStyle(RenderStyle*, Element*) const 9375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 9385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 9395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void RenderTheme::platformColorsDidChange() 9415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 9425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Page::scheduleForcedStyleRecalcForAllPages(); 9435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 9445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9455267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)Color RenderTheme::systemColor(CSSValueID cssValueId) const 9465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 9475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) switch (cssValueId) { 948926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case CSSValueActiveborder: 949926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return 0xFFFFFFFF; 950926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case CSSValueActivecaption: 951926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return 0xFFCCCCCC; 952926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case CSSValueAppworkspace: 953926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return 0xFFFFFFFF; 954926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case CSSValueBackground: 955926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return 0xFF6363CE; 956926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case CSSValueButtonface: 957926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return 0xFFC0C0C0; 958926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case CSSValueButtonhighlight: 959926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return 0xFFDDDDDD; 960926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case CSSValueButtonshadow: 961926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return 0xFF888888; 962926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case CSSValueButtontext: 963926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return 0xFF000000; 964926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case CSSValueCaptiontext: 965926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return 0xFF000000; 966926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case CSSValueGraytext: 967926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return 0xFF808080; 968926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case CSSValueHighlight: 969926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return 0xFFB5D5FF; 970926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case CSSValueHighlighttext: 971926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return 0xFF000000; 972926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case CSSValueInactiveborder: 973926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return 0xFFFFFFFF; 974926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case CSSValueInactivecaption: 975926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return 0xFFFFFFFF; 976926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case CSSValueInactivecaptiontext: 977926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return 0xFF7F7F7F; 978926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case CSSValueInfobackground: 979926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return 0xFFFBFCC5; 980926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case CSSValueInfotext: 981926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return 0xFF000000; 982926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case CSSValueMenu: 983926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return 0xFFC0C0C0; 984926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case CSSValueMenutext: 985926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return 0xFF000000; 986926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case CSSValueScrollbar: 987926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return 0xFFFFFFFF; 988926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case CSSValueText: 989926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return 0xFF000000; 990926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case CSSValueThreeddarkshadow: 991926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return 0xFF666666; 992926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case CSSValueThreedface: 993926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return 0xFFC0C0C0; 994926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case CSSValueThreedhighlight: 995926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return 0xFFDDDDDD; 996926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case CSSValueThreedlightshadow: 997926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return 0xFFC0C0C0; 998926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case CSSValueThreedshadow: 999926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return 0xFF888888; 1000926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case CSSValueWindow: 1001926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return 0xFFFFFFFF; 1002926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case CSSValueWindowframe: 1003926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return 0xFFCCCCCC; 1004926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case CSSValueWindowtext: 1005926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return 0xFF000000; 10065267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) case CSSValueInternalActiveListBoxSelection: 10075267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) return activeListBoxSelectionBackgroundColor(); 10085267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) break; 10095267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) case CSSValueInternalActiveListBoxSelectionText: 10105267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) return activeListBoxSelectionForegroundColor(); 10115267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) break; 10125267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) case CSSValueInternalInactiveListBoxSelection: 10135267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) return inactiveListBoxSelectionBackgroundColor(); 10145267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) break; 10155267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) case CSSValueInternalInactiveListBoxSelectionText: 10165267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) return inactiveListBoxSelectionForegroundColor(); 10175267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) break; 10185267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) default: 10195267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) break; 10205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 102109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) ASSERT_NOT_REACHED(); 10225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return Color(); 10235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 10245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Color RenderTheme::platformActiveTextSearchHighlightColor() const 10265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 10275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return Color(255, 150, 50); // Orange. 10285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 10295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Color RenderTheme::platformInactiveTextSearchHighlightColor() const 10315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 10325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return Color(255, 255, 0); // Yellow. 10335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 10345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Color RenderTheme::tapHighlightColor() 10365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1037c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) return theme().platformTapHighlightColor(); 10385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 10395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void RenderTheme::setCustomFocusRingColor(const Color& c) 10415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 104209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) m_customFocusRingColor = c; 104309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) m_hasCustomFocusRingColor = true; 10445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 10455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 104609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)Color RenderTheme::focusRingColor() const 10475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 104809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return m_hasCustomFocusRingColor ? m_customFocusRingColor : theme().platformFocusRingColor(); 10495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 10505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10511e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)String RenderTheme::fileListNameForWidth(Locale& locale, const FileList* fileList, const Font& font, int width) const 10525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 10535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (width <= 0) 10545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return String(); 10555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) String string; 10571e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) if (fileList->isEmpty()) { 1058e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) string = locale.queryString(WebLocalizedString::FileButtonNoFileSelectedLabel); 10591e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) } else if (fileList->length() == 1) { 10605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) string = fileList->item(0)->name(); 10611e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) } else { 10621e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) // FIXME: Localization of fileList->length(). 1063e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) return StringTruncator::rightTruncate(locale.queryString(WebLocalizedString::MultipleFileUploadText, String::number(fileList->length())), width, font); 10641e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) } 10655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1066197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch return StringTruncator::centerTruncate(string, width, font); 10675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 10685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool RenderTheme::shouldOpenPickerWithF4Key() const 10705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 10715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 10725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 10735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 107493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)#if ENABLE(INPUT_MULTIPLE_FIELDS_UI) 107593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)bool RenderTheme::supportsCalendarPicker(const AtomicString& type) const 107693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles){ 107751b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) return type == InputTypeNames::date 107851b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) || type == InputTypeNames::datetime 107951b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) || type == InputTypeNames::datetime_local 108051b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) || type == InputTypeNames::month 108151b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) || type == InputTypeNames::week; 108293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)} 108393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)#endif 108493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 108593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)bool RenderTheme::shouldUseFallbackTheme(RenderStyle*) const 108693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles){ 108793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) return false; 108893ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)} 108993ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 10905267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)void RenderTheme::adjustStyleUsingFallbackTheme(RenderStyle* style, Element* e) 109193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles){ 109293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) ControlPart part = style->appearance(); 109393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) switch (part) { 109493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) case CheckboxPart: 10955267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) return adjustCheckboxStyleUsingFallbackTheme(style, e); 109693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) case RadioPart: 10975267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) return adjustRadioStyleUsingFallbackTheme(style, e); 109893ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) default: 109993ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) break; 110093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) } 110193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)} 110293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 110393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)bool RenderTheme::paintUsingFallbackTheme(RenderObject* o, const PaintInfo& i, const IntRect& r) 110493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles){ 110593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) ControlPart part = o->style()->appearance(); 110693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) switch (part) { 110793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) case CheckboxPart: 110893ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) return paintCheckboxUsingFallbackTheme(o, i, r); 110993ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) case RadioPart: 111093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) return paintRadioUsingFallbackTheme(o, i, r); 111193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) default: 111293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) break; 111393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) } 111493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) return true; 111593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)} 111693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 111793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)// static 111893ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)void RenderTheme::setSizeIfAuto(RenderStyle* style, const IntSize& size) 111993ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles){ 112093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) if (style->width().isIntrinsicOrAuto()) 112193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) style->setWidth(Length(size.width(), Fixed)); 112293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) if (style->height().isAuto()) 112393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) style->setHeight(Length(size.height(), Fixed)); 112493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)} 112593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 112693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)bool RenderTheme::paintCheckboxUsingFallbackTheme(RenderObject* o, const PaintInfo& i, const IntRect& r) 112793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles){ 1128e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) WebFallbackThemeEngine::ExtraParams extraParams; 1129e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) WebCanvas* canvas = i.context->canvas(); 113093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) extraParams.button.checked = isChecked(o); 113193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) extraParams.button.indeterminate = isIndeterminate(o); 113293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 113393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) float zoomLevel = o->style()->effectiveZoom(); 113493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) GraphicsContextStateSaver stateSaver(*i.context); 113593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) IntRect unzoomedRect = r; 113693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) if (zoomLevel != 1) { 113793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) unzoomedRect.setWidth(unzoomedRect.width() / zoomLevel); 113893ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) unzoomedRect.setHeight(unzoomedRect.height() / zoomLevel); 113993ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) i.context->translate(unzoomedRect.x(), unzoomedRect.y()); 11405d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) i.context->scale(zoomLevel, zoomLevel); 114193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) i.context->translate(-unzoomedRect.x(), -unzoomedRect.y()); 114293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) } 114393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 1144e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) Platform::current()->fallbackThemeEngine()->paint(canvas, WebFallbackThemeEngine::PartCheckbox, getWebFallbackThemeState(this, o), WebRect(unzoomedRect), &extraParams); 114593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) return false; 114693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)} 114793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 11485267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)void RenderTheme::adjustCheckboxStyleUsingFallbackTheme(RenderStyle* style, Element*) const 114993ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles){ 115093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) // If the width and height are both specified, then we have nothing to do. 115193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) if (!style->width().isIntrinsicOrAuto() && !style->height().isAuto()) 115293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) return; 115393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 1154e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) IntSize size = Platform::current()->fallbackThemeEngine()->getSize(WebFallbackThemeEngine::PartCheckbox); 115593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) float zoomLevel = style->effectiveZoom(); 115693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) size.setWidth(size.width() * zoomLevel); 115793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) size.setHeight(size.height() * zoomLevel); 115893ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) setSizeIfAuto(style, size); 115993ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 116093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) // padding - not honored by WinIE, needs to be removed. 116193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) style->resetPadding(); 116293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 116393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) // border - honored by WinIE, but looks terrible (just paints in the control box and turns off the Windows XP theme) 116493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) // for now, we will not honor it. 116593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) style->resetBorder(); 116693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)} 116793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 116893ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)bool RenderTheme::paintRadioUsingFallbackTheme(RenderObject* o, const PaintInfo& i, const IntRect& r) 116993ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles){ 1170e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) WebFallbackThemeEngine::ExtraParams extraParams; 1171e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) WebCanvas* canvas = i.context->canvas(); 117293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) extraParams.button.checked = isChecked(o); 117393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) extraParams.button.indeterminate = isIndeterminate(o); 117493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 117593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) float zoomLevel = o->style()->effectiveZoom(); 117693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) GraphicsContextStateSaver stateSaver(*i.context); 117793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) IntRect unzoomedRect = r; 117893ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) if (zoomLevel != 1) { 117993ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) unzoomedRect.setWidth(unzoomedRect.width() / zoomLevel); 118093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) unzoomedRect.setHeight(unzoomedRect.height() / zoomLevel); 118193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) i.context->translate(unzoomedRect.x(), unzoomedRect.y()); 11825d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) i.context->scale(zoomLevel, zoomLevel); 118393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) i.context->translate(-unzoomedRect.x(), -unzoomedRect.y()); 118493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) } 118593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 1186e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) Platform::current()->fallbackThemeEngine()->paint(canvas, WebFallbackThemeEngine::PartRadio, getWebFallbackThemeState(this, o), WebRect(unzoomedRect), &extraParams); 118793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) return false; 118893ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)} 118993ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 11905267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)void RenderTheme::adjustRadioStyleUsingFallbackTheme(RenderStyle* style, Element*) const 119193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles){ 119293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) // If the width and height are both specified, then we have nothing to do. 119393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) if (!style->width().isIntrinsicOrAuto() && !style->height().isAuto()) 119493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) return; 119593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 1196e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) IntSize size = Platform::current()->fallbackThemeEngine()->getSize(WebFallbackThemeEngine::PartRadio); 119793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) float zoomLevel = style->effectiveZoom(); 119893ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) size.setWidth(size.width() * zoomLevel); 119993ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) size.setHeight(size.height() * zoomLevel); 120093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) setSizeIfAuto(style, size); 120193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 120293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) // padding - not honored by WinIE, needs to be removed. 120393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) style->resetPadding(); 120493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 120593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) // border - honored by WinIE, but looks terrible (just paints in the control box and turns off the Windows XP theme) 120693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) // for now, we will not honor it. 120793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) style->resetBorder(); 120893ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)} 120993ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 1210c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink 1211