18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2007 Kevin Ollivier <kevino@theolliviers.com> 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met: 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1. Redistributions of source code must retain the above copyright 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer. 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer in the 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * documentation and/or other materials provided with the distribution. 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "config.h" 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "RenderTheme.h" 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "Document.h" 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "FrameView.h" 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "GraphicsContext.h" 32231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#include "HostWindow.h" 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "NotImplemented.h" 342fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "PaintInfo.h" 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "RenderView.h" 368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 375f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#include <wx/defs.h> 388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 395f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#include <wx/dc.h> 40635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#include <wx/dcgraph.h> 418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <wx/renderer.h> 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <wx/dcclient.h> 438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <wx/scrolwin.h> 448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <wx/settings.h> 458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass RenderThemeWx : public RenderTheme { 490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochprivate: 508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project RenderThemeWx() : RenderTheme() { } 510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch virtual ~RenderThemeWx(); 520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochpublic: 540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch static PassRefPtr<RenderTheme> create(); 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // A method asking if the theme's controls actually care about redrawing when hovered. 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool supportsHover(const RenderStyle*) const { return true; } 588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 59ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual bool paintCheckbox(RenderObject* o, const PaintInfo& i, const IntRect& r) 608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return paintButton(o, i, r); 628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void setCheckboxSize(RenderStyle*) const; 658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 66ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual bool paintRadio(RenderObject* o, const PaintInfo& i, const IntRect& r) 678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return paintButton(o, i, r); 698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void setRadioSize(RenderStyle*) const; 728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void adjustRepaintRect(const RenderObject*, IntRect&); 748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void adjustButtonStyle(CSSStyleSelector*, RenderStyle*, Element*) const; 76ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual bool paintButton(RenderObject*, const PaintInfo&, const IntRect&); 778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void adjustTextFieldStyle(CSSStyleSelector*, RenderStyle*, Element*) const; 79ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual bool paintTextField(RenderObject*, const PaintInfo&, const IntRect&); 808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual int minimumMenuListSize(RenderStyle*) const; 828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void adjustMenuListStyle(CSSStyleSelector*, RenderStyle*, Element*) const; 84ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual bool paintMenuList(RenderObject*, const PaintInfo&, const IntRect&); 858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void adjustMenuListButtonStyle(CSSStyleSelector*, RenderStyle*, Element*) const; 87ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual bool paintMenuListButton(RenderObject*, const PaintInfo&, const IntRect&); 888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool isControlStyled(const RenderStyle*, const BorderData&, 908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project const FillLayer&, const Color&) const; 918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool controlSupportsTints(const RenderObject*) const; 938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void systemFont(int propId, FontDescription&) const; 958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual Color platformActiveSelectionBackgroundColor() const; 978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual Color platformInactiveSelectionBackgroundColor() const; 988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual Color platformActiveSelectionForegroundColor() const; 1008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual Color platformInactiveSelectionForegroundColor() const; 1018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual int popupInternalPaddingLeft(RenderStyle*) const; 1038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual int popupInternalPaddingRight(RenderStyle*) const; 1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual int popupInternalPaddingTop(RenderStyle*) const; 1058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual int popupInternalPaddingBottom(RenderStyle*) const; 1068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprivate: 1088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void addIntrinsicMargins(RenderStyle*) const; 1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void close(); 1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool supportsFocus(ControlPart) const; 1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}; 1138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// Constants 1168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define MINIMUM_MENU_LIST_SIZE 21 1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define POPUP_INTERNAL_PADDING_LEFT 6 1198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define POPUP_INTERNAL_PADDING_TOP 2 1208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define POPUP_INTERNAL_PADDING_BOTTOM 2 1218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifdef __WXMAC__ 1238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define POPUP_INTERNAL_PADDING_RIGHT 22 1248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#else 1258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define POPUP_INTERNAL_PADDING_RIGHT 20 1268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 1278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochRenderThemeWx::~RenderThemeWx() 1290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 1300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 1310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochPassRefPtr<RenderTheme> RenderThemeWx::create() 1330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 1340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return adoptRef(new RenderThemeWx()); 1350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 1360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochPassRefPtr<RenderTheme> RenderTheme::themeForPage(Page* page) 1388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch static RenderTheme* rt = RenderThemeWx::create().releaseRef(); 1400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return rt; 1418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 143231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve BlockwxWindow* nativeWindowForRenderObject(RenderObject* o) 144231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{ 145231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block FrameView* frameView = o->view()->frameView(); 146231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block ASSERT(frameView); 147231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block ASSERT(frameView->hostWindow()); 148231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block return frameView->hostWindow()->platformPageClient(); 149231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 150231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 151231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 1528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectbool RenderThemeWx::isControlStyled(const RenderStyle* style, const BorderData& border, 1538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project const FillLayer& background, const Color& backgroundColor) const 1548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (style->appearance() == TextFieldPart || style->appearance() == TextAreaPart) 1568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return style->border() != border; 1578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 158635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project // Normally CSS can be used to set properties of form controls (such as adding a background bitmap). 159635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project // However, for this to work RenderThemeWx needs to adjust uncustomized elements (e.g. buttons) to reflect the 160635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project // changes made by CSS. Since we don't do that right now, the native parts of form elements appear in odd places. 161635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project // Until we have time to implement that support, we return false here, so that we ignore customizations 162635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project // and always use the native theme drawing to draw form controls. 163635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project return false; 1648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid RenderThemeWx::adjustRepaintRect(const RenderObject* o, IntRect& r) 1678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project switch (o->style()->appearance()) { 1698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project case MenulistPart: { 1708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project r.setWidth(r.width() + 100); 1718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project break; 1728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project default: 1748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project break; 1758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectbool RenderThemeWx::controlSupportsTints(const RenderObject* o) const 1798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!isEnabled(o)) 1818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return false; 1828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Checkboxes only have tint when checked. 1848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (o->style()->appearance() == CheckboxPart) 1858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return isChecked(o); 1868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // For now assume other controls have tint if enabled. 1888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return true; 1898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid RenderThemeWx::systemFont(int propId, FontDescription& fontDescription) const 1928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // no-op 1948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid RenderThemeWx::addIntrinsicMargins(RenderStyle* style) const 1978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Cut out the intrinsic margins completely if we end up using a small font size 1998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (style->fontSize() < 11) 2008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return; 2018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Intrinsic margin value. 2038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project const int m = 2; 2048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // FIXME: Using width/height alone and not also dealing with min-width/max-width is flawed. 2068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (style->width().isIntrinsicOrAuto()) { 2078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (style->marginLeft().quirk()) 2088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project style->setMarginLeft(Length(m, Fixed)); 2098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (style->marginRight().quirk()) 2118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project style->setMarginRight(Length(m, Fixed)); 2128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (style->height().isAuto()) { 2158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (style->marginTop().quirk()) 2168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project style->setMarginTop(Length(m, Fixed)); 2178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (style->marginBottom().quirk()) 2198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project style->setMarginBottom(Length(m, Fixed)); 2208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid RenderThemeWx::setCheckboxSize(RenderStyle* style) const 2248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // If the width and height are both specified, then we have nothing to do. 2268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!style->width().isIntrinsicOrAuto() && !style->height().isAuto()) 2278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return; 2288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // FIXME: A hard-coded size of 13 is used. This is wrong but necessary for now. It matches Firefox. 2308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // At different DPI settings on Windows, querying the theme gives you a larger size that accounts for 2318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // the higher DPI. Until our entire engine honors a DPI setting other than 96, we can't rely on the theme's 2328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // metrics. 2338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (style->width().isIntrinsicOrAuto()) 2348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project style->setWidth(Length(13, Fixed)); 2358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (style->height().isAuto()) 2378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project style->setHeight(Length(13, Fixed)); 2388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid RenderThemeWx::setRadioSize(RenderStyle* style) const 2418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // This is the same as checkboxes. 2438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project setCheckboxSize(style); 2448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectbool RenderThemeWx::supportsFocus(ControlPart part) const 2478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project switch (part) { 2498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project case PushButtonPart: 2508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project case ButtonPart: 2518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project case TextFieldPart: 2528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return true; 2538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project default: // No for all others... 2548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return false; 2558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid RenderThemeWx::adjustButtonStyle(CSSStyleSelector* selector, RenderStyle* style, Element* e) const 2598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addIntrinsicMargins(style); 2618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 263ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Blockbool RenderThemeWx::paintButton(RenderObject* o, const PaintInfo& i, const IntRect& r) 2648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 265231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block wxWindow* window = nativeWindowForRenderObject(o); 2668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project wxDC* dc = static_cast<wxDC*>(i.context->platformContext()); 2678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int flags = 0; 2688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 269231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block IntRect rect = r; 270231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 271d0825bca7fe65beaee391d30da42e937db621564Steve Block// On Mac, wxGraphicsContext and wxDC share the same native implementation, 272d0825bca7fe65beaee391d30da42e937db621564Steve Block// and so transformations are available. 273d0825bca7fe65beaee391d30da42e937db621564Steve Block// On Win and Linux, however, this is not true and transforms are lost, 274d0825bca7fe65beaee391d30da42e937db621564Steve Block// so we need to restore them here. 275d0825bca7fe65beaee391d30da42e937db621564Steve Block#if USE(WXGC) && !defined(__WXMAC__) 276231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block double xtrans = 0; 277231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block double ytrans = 0; 278231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 279231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block wxGCDC* gcdc = static_cast<wxGCDC*>(dc); 280231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block wxGraphicsContext* gc = gcdc->GetGraphicsContext(); 281231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block gc->GetTransform().TransformPoint(&xtrans, &ytrans); 282231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block rect.setX(r.x() + (int)xtrans); 283231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block rect.setY(r.y() + (int)ytrans); 284231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif 285231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 2868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!isEnabled(o)) 2878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project flags |= wxCONTROL_DISABLED; 2888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ControlPart part = o->style()->appearance(); 2908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (supportsFocus(part) && isFocused(o)) 2918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project flags |= wxCONTROL_FOCUSED; 2928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (isPressed(o)) 2948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project flags |= wxCONTROL_PRESSED; 2958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (part == PushButtonPart || part == ButtonPart) 297231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block wxRendererNative::Get().DrawPushButton(window, *dc, rect, flags); 2988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project else if(part == RadioPart) { 2998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (isChecked(o)) 300635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project flags |= wxCONTROL_CHECKED; 301231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#if wxCHECK_VERSION(2,9,1) 302d0825bca7fe65beaee391d30da42e937db621564Steve Block wxRendererNative::Get().DrawRadioBitmap(window, *dc, rect, flags); 303231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#elif wxCHECK_VERSION(2,9,0) 304231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block wxRendererNative::Get().DrawRadioButton(window, *dc, rect, flags); 305635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#else 306231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block wxRenderer_DrawRadioButton(window, *dc, rect, flags); 307635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#endif 3088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 3098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project else if(part == CheckboxPart) { 3108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (isChecked(o)) 3118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project flags |= wxCONTROL_CHECKED; 312231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block wxRendererNative::Get().DrawCheckBox(window, *dc, rect, flags); 3138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 3148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return false; 3158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 3168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid RenderThemeWx::adjustTextFieldStyle(CSSStyleSelector*, RenderStyle* style, Element*) const 3188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 3198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 3218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 322ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Blockbool RenderThemeWx::paintTextField(RenderObject* o, const PaintInfo& i, const IntRect& r) 3238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 324231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block wxWindow* window = nativeWindowForRenderObject(o); 3258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project wxDC* dc = static_cast<wxDC*>(i.context->platformContext()); 326635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#if wxCHECK_VERSION(2,9,0) 327635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project wxRendererNative::Get().DrawTextCtrl(window, *dc, r, 0); 328635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#else 3298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project wxRenderer_DrawTextCtrl(window, *dc, r, 0); 330635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#endif 331635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 3328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return false; 3338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 3348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectint RenderThemeWx::minimumMenuListSize(RenderStyle*) const 3368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 3378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return MINIMUM_MENU_LIST_SIZE; 3388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 3398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid RenderThemeWx::adjustMenuListStyle(CSSStyleSelector*, RenderStyle* style, Element*) const 3418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 3428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 3438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 344ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Blockbool RenderThemeWx::paintMenuList(RenderObject* o, const PaintInfo& i, const IntRect& r) 3458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 346231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block wxWindow* window = nativeWindowForRenderObject(o); 3478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project wxDC* dc = static_cast<wxDC*>(i.context->platformContext()); 3488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int flags = 0; 3508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!isEnabled(o)) 3518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project flags |= wxCONTROL_DISABLED; 3528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (supportsFocus(o->style()->appearance()) && isFocused(o)) 3548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project flags |= wxCONTROL_FOCUSED; 3558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (isPressed(o)) 3578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project flags |= wxCONTROL_PRESSED; 3588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 359635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#if wxCHECK_VERSION(2,9,0) 360635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project wxRendererNative::Get().DrawChoice(window, *dc, r, flags); 361635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#else 3628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project wxRenderer_DrawChoice(window, *dc, r, flags); 363635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#endif 3648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return false; 3668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 3678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid RenderThemeWx::adjustMenuListButtonStyle(CSSStyleSelector*, RenderStyle*, Element*) const 3698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 3708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project notImplemented(); 3718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 3728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 373ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Blockbool RenderThemeWx::paintMenuListButton(RenderObject* o, const PaintInfo& i, const IntRect& r) 3748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 375231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block wxWindow* window = nativeWindowForRenderObject(o); 3768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project wxDC* dc = static_cast<wxDC*>(i.context->platformContext()); 3778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int flags = 0; 3798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!isEnabled(o)) 3808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project flags |= wxCONTROL_DISABLED; 3818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (supportsFocus(o->style()->appearance()) && isFocused(o)) 3838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project flags |= wxCONTROL_FOCUSED; 3848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (isPressed(o)) 3868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project flags |= wxCONTROL_PRESSED; 3878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project wxRendererNative::Get().DrawComboBoxDropButton(window, *dc, r, flags); 3898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return false; 3918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 3928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectColor RenderThemeWx::platformActiveSelectionBackgroundColor() const 3958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 3968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHT); 3978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 3988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectColor RenderThemeWx::platformInactiveSelectionBackgroundColor() const 4008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 4018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return wxSystemSettings::GetColour(wxSYS_COLOUR_BTNSHADOW); 4028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 4038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectColor RenderThemeWx::platformActiveSelectionForegroundColor() const 4058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 4068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // FIXME: Get wx to return the correct value for each platform. 4078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if __WXMAC__ 4088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return Color(); 4098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#else 4108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return Color(255, 255, 255); 4118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 4128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 4138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectColor RenderThemeWx::platformInactiveSelectionForegroundColor() const 4158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 4168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if __WXMAC__ 4178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return Color(); 4188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#else 4198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return Color(255, 255, 255); 4208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 4218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 4228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectint RenderThemeWx::popupInternalPaddingLeft(RenderStyle*) const 4248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 4258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return POPUP_INTERNAL_PADDING_LEFT; 4268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 4278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectint RenderThemeWx::popupInternalPaddingRight(RenderStyle*) const 4298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 4308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return POPUP_INTERNAL_PADDING_RIGHT; 4318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 4328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectint RenderThemeWx::popupInternalPaddingTop(RenderStyle*) const 4348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 4358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return POPUP_INTERNAL_PADDING_TOP; 4368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 4378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectint RenderThemeWx::popupInternalPaddingBottom(RenderStyle*) const 4398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 4408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return POPUP_INTERNAL_PADDING_BOTTOM; 4418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 4428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 4448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 445