Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(162)

Side by Side Diff: rendering/RenderThemeChromiumMac.mm

Issue 174242: Bring the Mac Chromium render theme up to date and easier to keep merged. DO ... (Closed) Base URL: http://svn.webkit.org/repository/webkit/trunk/WebCore/
Patch Set: '' Created 11 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « rendering/RenderThemeChromiumMac.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. 2 * Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
3 * Copyright (C) 2008, 2009 Google, Inc. 3 * Copyright (C) 2008, 2009 Google, Inc.
4 * Copyright (C) 2009 Kenneth Rohde Christiansen
5 * 4 *
6 * This library is free software; you can redistribute it and/or 5 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public 6 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either 7 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version. 8 * version 2 of the License, or (at your option) any later version.
10 * 9 *
11 * This library is distributed in the hope that it will be useful, 10 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Library General Public License for more details. 13 * Library General Public License for more details.
15 * 14 *
16 * You should have received a copy of the GNU Library General Public License 15 * You should have received a copy of the GNU Library General Public License
17 * along with this library; see the file COPYING.LIB. If not, write to 16 * along with this library; see the file COPYING.LIB. If not, write to
18 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 17 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19 * Boston, MA 02110-1301, USA. 18 * Boston, MA 02110-1301, USA.
20 */ 19 */
21 20
22 // FIXME: we still need to figure out if passing a null view to the cell
23 // drawing routines will work. I expect not, and if that's the case we'll have
24 // to figure out something else. For now, at least leave the lines commented
25 // in, but the procurement of the view if 0'd.
26
27 #import "config.h" 21 #import "config.h"
28 #import "RenderThemeChromiumMac.h" 22 #import "RenderThemeChromiumMac.h"
29 23
30 #import <Carbon/Carbon.h>
31 #import <Cocoa/Cocoa.h>
32 #import <math.h>
33
34 #import "BitmapImage.h" 24 #import "BitmapImage.h"
35 #import "ChromiumBridge.h" 25 #import "ChromiumBridge.h"
36 #import "ColorMac.h" 26 #import "ColorMac.h"
37 #import "CSSStyleSelector.h" 27 #import "CSSStyleSelector.h"
38 #import "CSSValueKeywords.h" 28 #import "CSSValueKeywords.h"
29 #import "Document.h"
39 #import "Element.h" 30 #import "Element.h"
40 #import "FoundationExtras.h"
41 #import "FrameView.h" 31 #import "FrameView.h"
42 #import "GraphicsContext.h" 32 #import "GraphicsContext.h"
43 #import "HTMLInputElement.h" 33 #import "HTMLInputElement.h"
44 #import "HTMLMediaElement.h" 34 #import "HTMLMediaElement.h"
45 #import "HTMLNames.h" 35 #import "HTMLNames.h"
46 #import "Image.h" 36 #import "Image.h"
47 #import "LocalCurrentGraphicsContext.h" 37 #import "LocalCurrentGraphicsContext.h"
48 #import "MediaControlElements.h" 38 #import "MediaControlElements.h"
49 #import "RenderMedia.h" 39 #import "RenderMedia.h"
50 #import "RenderSlider.h" 40 #import "RenderSlider.h"
51 #import "RenderView.h" 41 #import "RenderView.h"
52 #import "SharedBuffer.h" 42 #import "SharedBuffer.h"
53 #import "WebCoreSystemInterface.h" 43 #import "WebCoreSystemInterface.h"
44 #import "UserAgentStyleSheets.h"
45 #import <Carbon/Carbon.h>
46 #import <Cocoa/Cocoa.h>
54 #import <wtf/RetainPtr.h> 47 #import <wtf/RetainPtr.h>
48 #import <wtf/StdLibExtras.h>
49 #import <math.h>
55 50
56 #ifdef BUILDING_ON_TIGER 51 #ifdef BUILDING_ON_TIGER
57 typedef int NSInteger; 52 typedef int NSInteger;
58 typedef unsigned NSUInteger; 53 typedef unsigned NSUInteger;
59 #endif 54 #endif
60 55
61 using std::min; 56 using std::min;
62 57
58 // This file (and its associated .h file) is a clone of RenderThemeMac.mm.
59 // Because the original file is designed to run in-process inside a Cocoa view,
60 // we must maintain a fork. Please maintain this file by performing parallel
61 // changes to it.
62 //
63 // The only changes from RenderThemeMac should be:
64 // - The classname change from RenderThemeMac to RenderThemeChromiumMac.
65 // - The introduction of RTCMFlippedView and FlippedView() and its use as the
66 // parent view for cell rendering.
67 // - In platformFocusRingColor(), the use of ChromiumBridge to determine if
68 // we're in layout test mode.
69 // - updateActiveState() and its use to update the cells' visual appearance.
70 //
71 // For all other differences, if it was introduced in this file, then the
72 // maintainer forgot to include it in the list; otherwise it is an update that
73 // should have been applied to this file but was not.
74
63 // The methods in this file are specific to the Mac OS X platform. 75 // The methods in this file are specific to the Mac OS X platform.
64 76
65 // FIXME: The platform-independent code in this class should be factored out and merged with RenderThemeSafari. 77 // FIXME: The platform-independent code in this class should be factored out and merged with RenderThemeSafari.
66 78
67 @interface WebCoreRenderThemeNotificationObserver : NSObject 79 @interface WebCoreRenderThemeNotificationObserver : NSObject
68 { 80 {
69 WebCore::RenderTheme *_theme; 81 WebCore::RenderTheme *_theme;
70 } 82 }
71 83
72 - (id)initWithTheme:(WebCore::RenderTheme *)theme; 84 - (id)initWithTheme:(WebCore::RenderTheme *)theme;
73 - (void)systemColorsDidChange:(NSNotification *)notification; 85 - (void)systemColorsDidChange:(NSNotification *)notification;
74 86
75 @end 87 @end
76 88
77 @implementation WebCoreRenderThemeNotificationObserver 89 @implementation WebCoreRenderThemeNotificationObserver
78 90
79 - (id)initWithTheme:(WebCore::RenderTheme *)theme 91 - (id)initWithTheme:(WebCore::RenderTheme *)theme
80 { 92 {
81 [super init]; 93 [super init];
82 _theme = theme; 94 _theme = theme;
83 95
84 return self; 96 return self;
85 } 97 }
86 98
87 - (void)systemColorsDidChange:(NSNotification *)notification 99 - (void)systemColorsDidChange:(NSNotification *)unusedNotification
88 { 100 {
89 ASSERT([[notification name] isEqualToString:NSSystemColorsDidChangeNotificat ion]); 101 ASSERT_UNUSED(unusedNotification, [[unusedNotification name] isEqualToString :NSSystemColorsDidChangeNotification]);
90 _theme->platformColorsDidChange(); 102 _theme->platformColorsDidChange();
91 } 103 }
92 104
93 @end 105 @end
94 106
107 @interface RTCMFlippedView : NSView
108 {}
109
110 - (BOOL)isFlipped;
111 - (NSText *)currentEditor;
112
113 @end
114
115 @implementation RTCMFlippedView
116
117 - (BOOL)isFlipped {
118 return [[NSGraphicsContext currentContext] isFlipped];
119 }
120
121 - (NSText *)currentEditor {
122 return nil;
123 }
124
125 @end
126
95 namespace WebCore { 127 namespace WebCore {
96 128
97 using namespace HTMLNames; 129 using namespace HTMLNames;
98 130
99 enum { 131 enum {
100 TopMargin, 132 topMargin,
101 RightMargin, 133 rightMargin,
102 BottomMargin, 134 bottomMargin,
103 LeftMargin 135 leftMargin
104 }; 136 };
105 137
106 enum { 138 enum {
107 TopPadding, 139 topPadding,
108 RightPadding, 140 rightPadding,
109 BottomPadding, 141 bottomPadding,
110 LeftPadding 142 leftPadding
111 }; 143 };
112 144
113 // In our Mac port, we don't define PLATFORM(MAC) and thus don't pick up the 145 // In Snow Leopard, many cells only check to see if the view they're passed is
114 // |operator NSRect()| on WebCore::IntRect and FloatRect. This substitues for 146 // flipped, and if a nil view is passed, neglect to check if the current
115 // that missing conversion operator. 147 // graphics context is flipped. Thus we pass a sham view to them, one whose
116 NSRect IntRectToNSRect(const IntRect & rect) 148 // flipped state just reflects the state of the context.
149 NSView* FlippedView()
117 { 150 {
118 return NSMakeRect(rect.x(), rect.y(), rect.width(), rect.height()); 151 static NSView* view = [[RTCMFlippedView alloc] init];
152 return view;
119 } 153 }
120 154
121 NSRect FloatRectToNSRect(const FloatRect & rect) 155 PassRefPtr<RenderTheme> RenderTheme::themeForPage(Page*)
122 { 156 {
123 return NSMakeRect(rect.x(), rect.y(), rect.width(), rect.height()); 157 static RenderTheme* rt = RenderThemeChromiumMac::create().releaseRef();
124 } 158 return rt;
125
126 IntRect NSRectToIntRect(const NSRect & rect)
127 {
128 return IntRect(rect.origin.x, rect.origin.y, rect.size.width, rect.size.heig ht);
129 } 159 }
130 160
131 PassRefPtr<RenderTheme> RenderThemeChromiumMac::create() 161 PassRefPtr<RenderTheme> RenderThemeChromiumMac::create()
132 { 162 {
133 return adoptRef(new RenderThemeChromiumMac); 163 return adoptRef(new RenderThemeChromiumMac);
134 } 164 }
135 165
136 PassRefPtr<RenderTheme> RenderTheme::themeForPage(Page* page)
137 {
138 static RenderTheme* rt = RenderThemeChromiumMac::create().releaseRef();
139 return rt;
140 }
141
142 RenderThemeChromiumMac::RenderThemeChromiumMac() 166 RenderThemeChromiumMac::RenderThemeChromiumMac()
143 : m_isSliderThumbHorizontalPressed(false) 167 : m_isSliderThumbHorizontalPressed(false)
144 , m_isSliderThumbVerticalPressed(false) 168 , m_isSliderThumbVerticalPressed(false)
145 , m_notificationObserver(AdoptNS, [[WebCoreRenderThemeNotificationObserver a lloc] initWithTheme:this]) 169 , m_notificationObserver(AdoptNS, [[WebCoreRenderThemeNotificationObserver a lloc] initWithTheme:this])
146 { 170 {
147 [[NSNotificationCenter defaultCenter] addObserver:m_notificationObserver.get () 171 [[NSNotificationCenter defaultCenter] addObserver:m_notificationObserver.get ()
148 selector:@selector(syste mColorsDidChange:) 172 selector:@selector(syste mColorsDidChange:)
149 name:NSSystemColorsD idChangeNotification 173 name:NSSystemColorsD idChangeNotification
150 object:nil]; 174 object:nil];
151 } 175 }
(...skipping 14 matching lines...) Expand all
166 NSColor* color = [[NSColor secondarySelectedControlColor] colorUsingColorSpa ceName:NSDeviceRGBColorSpace]; 190 NSColor* color = [[NSColor secondarySelectedControlColor] colorUsingColorSpa ceName:NSDeviceRGBColorSpace];
167 return Color(static_cast<int>(255.0 * [color redComponent]), static_cast<int >(255.0 * [color greenComponent]), static_cast<int>(255.0 * [color blueComponent ])); 191 return Color(static_cast<int>(255.0 * [color redComponent]), static_cast<int >(255.0 * [color greenComponent]), static_cast<int>(255.0 * [color blueComponent ]));
168 } 192 }
169 193
170 Color RenderThemeChromiumMac::platformActiveListBoxSelectionBackgroundColor() co nst 194 Color RenderThemeChromiumMac::platformActiveListBoxSelectionBackgroundColor() co nst
171 { 195 {
172 NSColor* color = [[NSColor alternateSelectedControlColor] colorUsingColorSpa ceName:NSDeviceRGBColorSpace]; 196 NSColor* color = [[NSColor alternateSelectedControlColor] colorUsingColorSpa ceName:NSDeviceRGBColorSpace];
173 return Color(static_cast<int>(255.0 * [color redComponent]), static_cast<int >(255.0 * [color greenComponent]), static_cast<int>(255.0 * [color blueComponent ])); 197 return Color(static_cast<int>(255.0 * [color redComponent]), static_cast<int >(255.0 * [color greenComponent]), static_cast<int>(255.0 * [color blueComponent ]));
174 } 198 }
175 199
200 Color RenderThemeChromiumMac::platformActiveListBoxSelectionForegroundColor() co nst
201 {
202 return Color::white;
203 }
204
205 Color RenderThemeChromiumMac::platformInactiveListBoxSelectionForegroundColor() const
206 {
207 return Color::black;
208 }
209
176 Color RenderThemeChromiumMac::platformFocusRingColor() const 210 Color RenderThemeChromiumMac::platformFocusRingColor() const
177 { 211 {
178 if (ChromiumBridge::layoutTestMode()) 212 if (ChromiumBridge::layoutTestMode())
179 return oldAquaFocusRingColor(); 213 return oldAquaFocusRingColor();
180 214
181 return systemColor(CSSValueWebkitFocusRingColor); 215 return systemColor(CSSValueWebkitFocusRingColor);
182 } 216 }
183 217
218 Color RenderThemeChromiumMac::platformInactiveListBoxSelectionBackgroundColor() const
219 {
220 return platformInactiveSelectionBackgroundColor();
221 }
222
184 static FontWeight toFontWeight(NSInteger appKitFontWeight) 223 static FontWeight toFontWeight(NSInteger appKitFontWeight)
185 { 224 {
186 ASSERT(appKitFontWeight > 0 && appKitFontWeight < 15); 225 ASSERT(appKitFontWeight > 0 && appKitFontWeight < 15);
187 if (appKitFontWeight > 14) 226 if (appKitFontWeight > 14)
188 appKitFontWeight = 14; 227 appKitFontWeight = 14;
189 else if (appKitFontWeight < 1) 228 else if (appKitFontWeight < 1)
190 appKitFontWeight = 1; 229 appKitFontWeight = 1;
191 230
192 static FontWeight fontWeights[] = { 231 static FontWeight fontWeights[] = {
193 FontWeight100, 232 FontWeight100,
194 FontWeight100, 233 FontWeight100,
195 FontWeight200, 234 FontWeight200,
196 FontWeight300, 235 FontWeight300,
197 FontWeight400, 236 FontWeight400,
198 FontWeight500, 237 FontWeight500,
199 FontWeight600, 238 FontWeight600,
200 FontWeight600, 239 FontWeight600,
201 FontWeight700, 240 FontWeight700,
202 FontWeight800, 241 FontWeight800,
203 FontWeight800, 242 FontWeight800,
204 FontWeight900, 243 FontWeight900,
205 FontWeight900, 244 FontWeight900,
206 FontWeight900 245 FontWeight900
207 }; 246 };
208 return fontWeights[appKitFontWeight - 1]; 247 return fontWeights[appKitFontWeight - 1];
209 } 248 }
210 249
211 void RenderThemeChromiumMac::systemFont(int cssValueId, FontDescription& fontDes cription) const 250 void RenderThemeChromiumMac::systemFont(int cssValueId, FontDescription& fontDes cription) const
212 { 251 {
213 static FontDescription systemFont; 252 DEFINE_STATIC_LOCAL(FontDescription, systemFont, ());
214 static FontDescription smallSystemFont; 253 DEFINE_STATIC_LOCAL(FontDescription, smallSystemFont, ());
215 static FontDescription menuFont; 254 DEFINE_STATIC_LOCAL(FontDescription, menuFont, ());
216 static FontDescription labelFont; 255 DEFINE_STATIC_LOCAL(FontDescription, labelFont, ());
217 static FontDescription miniControlFont; 256 DEFINE_STATIC_LOCAL(FontDescription, miniControlFont, ());
218 static FontDescription smallControlFont; 257 DEFINE_STATIC_LOCAL(FontDescription, smallControlFont, ());
219 static FontDescription controlFont; 258 DEFINE_STATIC_LOCAL(FontDescription, controlFont, ());
220 259
221 FontDescription* cachedDesc; 260 FontDescription* cachedDesc;
222 NSFont* font = nil; 261 NSFont* font = nil;
223 switch (cssValueId) { 262 switch (cssValueId) {
224 case CSSValueSmallCaption: 263 case CSSValueSmallCaption:
225 cachedDesc = &smallSystemFont; 264 cachedDesc = &smallSystemFont;
226 if (!smallSystemFont.isAbsoluteSize()) 265 if (!smallSystemFont.isAbsoluteSize())
227 font = [NSFont systemFontOfSize:[NSFont smallSystemFontSize]]; 266 font = [NSFont systemFontOfSize:[NSFont smallSystemFontSize]];
228 break; 267 break;
229 case CSSValueMenu: 268 case CSSValueMenu:
230 cachedDesc = &menuFont; 269 cachedDesc = &menuFont;
231 if (!menuFont.isAbsoluteSize()) 270 if (!menuFont.isAbsoluteSize())
232 font = [NSFont menuFontOfSize:[NSFont systemFontSize]]; 271 font = [NSFont menuFontOfSize:[NSFont systemFontSize]];
233 break; 272 break;
234 case CSSValueStatusBar: 273 case CSSValueStatusBar:
235 cachedDesc = &labelFont; 274 cachedDesc = &labelFont;
236 if (!labelFont.isAbsoluteSize()) 275 if (!labelFont.isAbsoluteSize())
237 font = [NSFont labelFontOfSize:[NSFont labelFontSize]]; 276 font = [NSFont labelFontOfSize:[NSFont labelFontSize]];
238 break; 277 break;
239 case CSSValueWebkitMiniControl: 278 case CSSValueWebkitMiniControl:
240 cachedDesc = &miniControlFont; 279 cachedDesc = &miniControlFont;
241 if (!miniControlFont.isAbsoluteSize()) 280 if (!miniControlFont.isAbsoluteSize())
242 font = [NSFont systemFontOfSize:[NSFont systemFontSizeForControlSize :NSMiniControlSize]]; 281 font = [NSFont systemFontOfSize:[NSFont systemFontSizeForControl Size:NSMiniControlSize]];
243 break; 282 break;
244 case CSSValueWebkitSmallControl: 283 case CSSValueWebkitSmallControl:
245 cachedDesc = &smallControlFont; 284 cachedDesc = &smallControlFont;
246 if (!smallControlFont.isAbsoluteSize()) 285 if (!smallControlFont.isAbsoluteSize())
247 font = [NSFont systemFontOfSize:[NSFont systemFontSizeForControlSize :NSSmallControlSize]]; 286 font = [NSFont systemFontOfSize:[NSFont systemFontSizeForControl Size:NSSmallControlSize]];
248 break; 287 break;
249 case CSSValueWebkitControl: 288 case CSSValueWebkitControl:
250 cachedDesc = &controlFont; 289 cachedDesc = &controlFont;
251 if (!controlFont.isAbsoluteSize()) 290 if (!controlFont.isAbsoluteSize())
252 font = [NSFont systemFontOfSize:[NSFont systemFontSizeForControlSize :NSRegularControlSize]]; 291 font = [NSFont systemFontOfSize:[NSFont systemFontSizeForControl Size:NSRegularControlSize]];
253 break; 292 break;
254 default: 293 default:
255 cachedDesc = &systemFont; 294 cachedDesc = &systemFont;
256 if (!systemFont.isAbsoluteSize()) 295 if (!systemFont.isAbsoluteSize())
257 font = [NSFont systemFontOfSize:[NSFont systemFontSize]]; 296 font = [NSFont systemFontOfSize:[NSFont systemFontSize]];
258 } 297 }
259 298
260 if (font) { 299 if (font) {
261 NSFontManager *fontManager = [NSFontManager sharedFontManager]; 300 NSFontManager *fontManager = [NSFontManager sharedFontManager];
262 cachedDesc->setIsAbsoluteSize(true); 301 cachedDesc->setIsAbsoluteSize(true);
263 cachedDesc->setGenericFamily(FontDescription::NoFamily); 302 cachedDesc->setGenericFamily(FontDescription::NoFamily);
264 cachedDesc->firstFamily().setFamily([font familyName]); 303 cachedDesc->firstFamily().setFamily([font familyName]);
265 cachedDesc->setSpecifiedSize([font pointSize]); 304 cachedDesc->setSpecifiedSize([font pointSize]);
266 cachedDesc->setWeight(toFontWeight([fontManager weightOfFont:font])); 305 cachedDesc->setWeight(toFontWeight([fontManager weightOfFont:font]));
267 cachedDesc->setItalic([fontManager traitsOfFont:font] & NSItalicFontMask ); 306 cachedDesc->setItalic([fontManager traitsOfFont:font] & NSItalicFontMask );
268 } 307 }
269 fontDescription = *cachedDesc; 308 fontDescription = *cachedDesc;
270 } 309 }
271 310
272 static RGBA32 convertNSColorToColor(NSColor *color) 311 static RGBA32 convertNSColorToColor(NSColor *color)
273 { 312 {
274 NSColor *colorInColorSpace = [color colorUsingColorSpaceName:NSCalibratedRGB ColorSpace]; 313 NSColor *colorInColorSpace = [color colorUsingColorSpaceName:NSDeviceRGBColo rSpace];
275 if (colorInColorSpace) { 314 if (colorInColorSpace) {
276 static const double scaleFactor = nextafter(256.0, 0.0); 315 static const double scaleFactor = nextafter(256.0, 0.0);
277 return makeRGB(static_cast<int>(scaleFactor * [colorInColorSpace redComp onent]), 316 return makeRGB(static_cast<int>(scaleFactor * [colorInColorSpace redComp onent]),
278 static_cast<int>(scaleFactor * [colorInColorSpace greenComponent]), 317 static_cast<int>(scaleFactor * [colorInColorSpace greenComponent]),
279 static_cast<int>(scaleFactor * [colorInColorSpace blueComponent])); 318 static_cast<int>(scaleFactor * [colorInColorSpace blueComponent]));
280 } 319 }
281 320
282 // This conversion above can fail if the NSColor in question is an NSPattern Color 321 // This conversion above can fail if the NSColor in question is an NSPattern Color
283 // (as many system colors are). These colors are actually a repeating patter n 322 // (as many system colors are). These colors are actually a repeating patter n
284 // not just a solid color. To work around this we simply draw a 1x1 image of 323 // not just a solid color. To work around this we simply draw a 1x1 image of
285 // the color and use that pixel's color. It might be better to use an averag e of 324 // the color and use that pixel's color. It might be better to use an averag e of
286 // the colors in the pattern instead. 325 // the colors in the pattern instead.
287 NSBitmapImageRep *offscreenRep = [[NSBitmapImageRep alloc] initWithBitmapDat aPlanes:nil 326 NSBitmapImageRep *offscreenRep = [[NSBitmapImageRep alloc] initWithBitmapDat aPlanes:nil
288 pix elsWide:1 327 pix elsWide:1
289 pix elsHigh:1 328 pix elsHigh:1
290 bitsPe rSample:8 329 bitsPe rSample:8
291 samplesP erPixel:4 330 samplesP erPixel:4
292 h asAlpha:YES 331 h asAlpha:YES
293 i sPlanar:NO 332 i sPlanar:NO
294 colorSp aceName:NSCalibratedRGBColorSpace 333 colorSp aceName:NSDeviceRGBColorSpace
295 byte sPerRow:4 334 byte sPerRow:4
296 bitsP erPixel:32]; 335 bitsP erPixel:32];
297 336
298 [NSGraphicsContext saveGraphicsState]; 337 [NSGraphicsContext saveGraphicsState];
299 [NSGraphicsContext setCurrentContext:[NSGraphicsContext graphicsContextWithB itmapImageRep:offscreenRep]]; 338 [NSGraphicsContext setCurrentContext:[NSGraphicsContext graphicsContextWithB itmapImageRep:offscreenRep]];
300 NSEraseRect(NSMakeRect(0, 0, 1, 1)); 339 NSEraseRect(NSMakeRect(0, 0, 1, 1));
301 [color drawSwatchInRect:NSMakeRect(0, 0, 1, 1)]; 340 [color drawSwatchInRect:NSMakeRect(0, 0, 1, 1)];
302 [NSGraphicsContext restoreGraphicsState]; 341 [NSGraphicsContext restoreGraphicsState];
303 342
304 NSUInteger pixel[4]; 343 NSUInteger pixel[4];
305 [offscreenRep getPixel:pixel atX:0 y:0]; 344 [offscreenRep getPixel:pixel atX:0 y:0];
306 345
307 [offscreenRep release]; 346 [offscreenRep release];
308 347
309 return makeRGB(pixel[0], pixel[1], pixel[2]); 348 return makeRGB(pixel[0], pixel[1], pixel[2]);
310 } 349 }
311 350
312 static RGBA32 menuBackgroundColor() 351 static RGBA32 menuBackgroundColor()
313 { 352 {
314 NSBitmapImageRep *offscreenRep = [[NSBitmapImageRep alloc] initWithBitmapDat aPlanes:nil 353 NSBitmapImageRep *offscreenRep = [[NSBitmapImageRep alloc] initWithBitmapDat aPlanes:nil
315 pix elsWide:1 354 pix elsWide:1
316 pix elsHigh:1 355 pix elsHigh:1
317 bitsPe rSample:8 356 bitsPe rSample:8
318 samplesP erPixel:4 357 samplesP erPixel:4
319 h asAlpha:YES 358 h asAlpha:YES
320 i sPlanar:NO 359 i sPlanar:NO
321 colorSp aceName:NSCalibratedRGBColorSpace 360 colorSp aceName:NSDeviceRGBColorSpace
322 byte sPerRow:4 361 byte sPerRow:4
323 bitsP erPixel:32]; 362 bitsP erPixel:32];
324 363
325 CGContextRef context = static_cast<CGContextRef>([[NSGraphicsContext graphic sContextWithBitmapImageRep:offscreenRep] graphicsPort]); 364 CGContextRef context = static_cast<CGContextRef>([[NSGraphicsContext graphic sContextWithBitmapImageRep:offscreenRep] graphicsPort]);
326 CGRect rect = CGRectMake(0, 0, 1, 1); 365 CGRect rect = CGRectMake(0, 0, 1, 1);
327 HIThemeMenuDrawInfo drawInfo; 366 HIThemeMenuDrawInfo drawInfo;
328 drawInfo.version = 0; 367 drawInfo.version = 0;
329 drawInfo.menuType = kThemeMenuTypePopUp; 368 drawInfo.menuType = kThemeMenuTypePopUp;
330 HIThemeDrawMenuBackground(&rect, &drawInfo, context, kHIThemeOrientationInve rted); 369 HIThemeDrawMenuBackground(&rect, &drawInfo, context, kHIThemeOrientationInve rted);
331 370
(...skipping 11 matching lines...) Expand all
343 RenderTheme::platformColorsDidChange(); 382 RenderTheme::platformColorsDidChange();
344 } 383 }
345 384
346 Color RenderThemeChromiumMac::systemColor(int cssValueId) const 385 Color RenderThemeChromiumMac::systemColor(int cssValueId) const
347 { 386 {
348 if (m_systemColorCache.contains(cssValueId)) 387 if (m_systemColorCache.contains(cssValueId))
349 return m_systemColorCache.get(cssValueId); 388 return m_systemColorCache.get(cssValueId);
350 389
351 Color color; 390 Color color;
352 switch (cssValueId) { 391 switch (cssValueId) {
353 case CSSValueActiveborder: 392 case CSSValueActiveborder:
354 color = convertNSColorToColor([NSColor keyboardFocusIndicatorColor]); 393 color = convertNSColorToColor([NSColor keyboardFocusIndicatorColor]) ;
355 break; 394 break;
356 case CSSValueActivecaption: 395 case CSSValueActivecaption:
357 color = convertNSColorToColor([NSColor windowFrameTextColor]); 396 color = convertNSColorToColor([NSColor windowFrameTextColor]);
358 break; 397 break;
359 case CSSValueAppworkspace: 398 case CSSValueAppworkspace:
360 color = convertNSColorToColor([NSColor headerColor]); 399 color = convertNSColorToColor([NSColor headerColor]);
361 break; 400 break;
362 case CSSValueBackground: 401 case CSSValueBackground:
363 // Use theme independent default 402 // Use theme independent default
364 break; 403 break;
365 case CSSValueButtonface: 404 case CSSValueButtonface:
366 // We use this value instead of NSColor's controlColor to avoid website incompatibilities. 405 // We use this value instead of NSColor's controlColor to avoid webs ite incompatibilities.
367 // We may want to change this to use the NSColor in future. 406 // We may want to change this to use the NSColor in future.
368 color = 0xFFC0C0C0; 407 color = 0xFFC0C0C0;
369 break; 408 break;
370 case CSSValueButtonhighlight: 409 case CSSValueButtonhighlight:
371 color = convertNSColorToColor([NSColor controlHighlightColor]); 410 color = convertNSColorToColor([NSColor controlHighlightColor]);
372 break; 411 break;
373 case CSSValueButtonshadow: 412 case CSSValueButtonshadow:
374 color = convertNSColorToColor([NSColor controlShadowColor]); 413 color = convertNSColorToColor([NSColor controlShadowColor]);
375 break; 414 break;
376 case CSSValueButtontext: 415 case CSSValueButtontext:
377 color = convertNSColorToColor([NSColor controlTextColor]); 416 color = convertNSColorToColor([NSColor controlTextColor]);
378 break; 417 break;
379 case CSSValueCaptiontext: 418 case CSSValueCaptiontext:
380 color = convertNSColorToColor([NSColor textColor]); 419 color = convertNSColorToColor([NSColor textColor]);
381 break; 420 break;
382 case CSSValueGraytext: 421 case CSSValueGraytext:
383 color = convertNSColorToColor([NSColor disabledControlTextColor]); 422 color = convertNSColorToColor([NSColor disabledControlTextColor]);
384 break; 423 break;
385 case CSSValueHighlight: 424 case CSSValueHighlight:
386 color = convertNSColorToColor([NSColor selectedTextBackgroundColor]); 425 color = convertNSColorToColor([NSColor selectedTextBackgroundColor]) ;
387 break; 426 break;
388 case CSSValueHighlighttext: 427 case CSSValueHighlighttext:
389 color = convertNSColorToColor([NSColor selectedTextColor]); 428 color = convertNSColorToColor([NSColor selectedTextColor]);
390 break; 429 break;
391 case CSSValueInactiveborder: 430 case CSSValueInactiveborder:
392 color = convertNSColorToColor([NSColor controlBackgroundColor]); 431 color = convertNSColorToColor([NSColor controlBackgroundColor]);
393 break; 432 break;
394 case CSSValueInactivecaption: 433 case CSSValueInactivecaption:
395 color = convertNSColorToColor([NSColor controlBackgroundColor]); 434 color = convertNSColorToColor([NSColor controlBackgroundColor]);
396 break; 435 break;
397 case CSSValueInactivecaptiontext: 436 case CSSValueInactivecaptiontext:
398 color = convertNSColorToColor([NSColor textColor]); 437 color = convertNSColorToColor([NSColor textColor]);
399 break; 438 break;
400 case CSSValueInfobackground: 439 case CSSValueInfobackground:
401 // There is no corresponding NSColor for this so we use a hard coded val ue. 440 // There is no corresponding NSColor for this so we use a hard coded value.
402 color = 0xFFFBFCC5; 441 color = 0xFFFBFCC5;
403 break; 442 break;
404 case CSSValueInfotext: 443 case CSSValueInfotext:
405 color = convertNSColorToColor([NSColor textColor]); 444 color = convertNSColorToColor([NSColor textColor]);
406 break; 445 break;
407 case CSSValueMenu: 446 case CSSValueMenu:
408 color = menuBackgroundColor(); 447 color = menuBackgroundColor();
409 break; 448 break;
410 case CSSValueMenutext: 449 case CSSValueMenutext:
411 color = convertNSColorToColor([NSColor selectedMenuItemTextColor]); 450 color = convertNSColorToColor([NSColor selectedMenuItemTextColor]);
412 break; 451 break;
413 case CSSValueScrollbar: 452 case CSSValueScrollbar:
414 color = convertNSColorToColor([NSColor scrollBarColor]); 453 color = convertNSColorToColor([NSColor scrollBarColor]);
415 break; 454 break;
416 case CSSValueText: 455 case CSSValueText:
417 color = convertNSColorToColor([NSColor textColor]); 456 color = convertNSColorToColor([NSColor textColor]);
418 break; 457 break;
419 case CSSValueThreeddarkshadow: 458 case CSSValueThreeddarkshadow:
420 color = convertNSColorToColor([NSColor controlDarkShadowColor]); 459 color = convertNSColorToColor([NSColor controlDarkShadowColor]);
421 break; 460 break;
422 case CSSValueThreedshadow: 461 case CSSValueThreedshadow:
423 color = convertNSColorToColor([NSColor shadowColor]); 462 color = convertNSColorToColor([NSColor shadowColor]);
424 break; 463 break;
425 case CSSValueThreedface: 464 case CSSValueThreedface:
426 // We use this value instead of NSColor's controlColor to avoid website incompatibilities. 465 // We use this value instead of NSColor's controlColor to avoid webs ite incompatibilities.
427 // We may want to change this to use the NSColor in future. 466 // We may want to change this to use the NSColor in future.
428 color = 0xFFC0C0C0; 467 color = 0xFFC0C0C0;
429 break; 468 break;
430 case CSSValueThreedhighlight: 469 case CSSValueThreedhighlight:
431 color = convertNSColorToColor([NSColor highlightColor]); 470 color = convertNSColorToColor([NSColor highlightColor]);
432 break; 471 break;
433 case CSSValueThreedlightshadow: 472 case CSSValueThreedlightshadow:
434 color = convertNSColorToColor([NSColor controlLightHighlightColor]); 473 color = convertNSColorToColor([NSColor controlLightHighlightColor]);
435 break; 474 break;
436 case CSSValueWebkitFocusRingColor: 475 case CSSValueWebkitFocusRingColor:
437 color = convertNSColorToColor([NSColor keyboardFocusIndicatorColor]); 476 color = convertNSColorToColor([NSColor keyboardFocusIndicatorColor]) ;
438 break; 477 break;
439 case CSSValueWindow: 478 case CSSValueWindow:
440 color = convertNSColorToColor([NSColor windowBackgroundColor]); 479 color = convertNSColorToColor([NSColor windowBackgroundColor]);
441 break; 480 break;
442 case CSSValueWindowframe: 481 case CSSValueWindowframe:
443 color = convertNSColorToColor([NSColor windowFrameColor]); 482 color = convertNSColorToColor([NSColor windowFrameColor]);
444 break; 483 break;
445 case CSSValueWindowtext: 484 case CSSValueWindowtext:
446 color = convertNSColorToColor([NSColor windowFrameTextColor]); 485 color = convertNSColorToColor([NSColor windowFrameTextColor]);
447 break; 486 break;
448 } 487 }
449 488
450 if (!color.isValid()) 489 if (!color.isValid())
451 color = RenderTheme::systemColor(cssValueId); 490 color = RenderTheme::systemColor(cssValueId);
452 491
453 if (color.isValid()) 492 if (color.isValid())
454 m_systemColorCache.set(cssValueId, color.rgb()); 493 m_systemColorCache.set(cssValueId, color.rgb());
455 494
456 return color; 495 return color;
457 } 496 }
458 497
459 bool RenderThemeChromiumMac::isControlStyled(const RenderStyle* style, const Bor derData& border, 498 bool RenderThemeChromiumMac::isControlStyled(const RenderStyle* style, const Bor derData& border,
460 const FillLayer& background, const Color& backgroundColor) const 499 const FillLayer& background, const Color& b ackgroundColor) const
461 { 500 {
462 if (style->appearance() == TextFieldPart || style->appearance() == TextAreaP art || style->appearance() == ListboxPart) 501 if (style->appearance() == TextFieldPart || style->appearance() == TextAreaP art || style->appearance() == ListboxPart)
463 return style->border() != border; 502 return style->border() != border;
464 503
465 // FIXME: This is horrible, but there is not much else that can be done. Me nu lists cannot draw properly when 504 // FIXME: This is horrible, but there is not much else that can be done. Me nu lists cannot draw properly when
466 // scaled. They can't really draw properly when transformed either. We can 't detect the transform case at style 505 // scaled. They can't really draw properly when transformed either. We can 't detect the transform case at style
467 // adjustment time so that will just have to stay broken. We can however de tect that we're zooming. If zooming 506 // adjustment time so that will just have to stay broken. We can however de tect that we're zooming. If zooming
468 // is in effect we treat it like the control is styled. 507 // is in effect we treat it like the control is styled.
469 if (style->appearance() == MenulistPart && style->effectiveZoom() != 1.0f) 508 if (style->appearance() == MenulistPart && style->effectiveZoom() != 1.0f)
470 return true; 509 return true;
471 510
472 return RenderTheme::isControlStyled(style, border, background, backgroundCol or); 511 return RenderTheme::isControlStyled(style, border, background, backgroundCol or);
473 } 512 }
474 513
475 // FIXME: Use the code from the old upstream version, before it was converted to the new theme API in r37731.
476 void RenderThemeChromiumMac::adjustRepaintRect(const RenderObject* o, IntRect& r ) 514 void RenderThemeChromiumMac::adjustRepaintRect(const RenderObject* o, IntRect& r )
477 { 515 {
516 ControlPart part = o->style()->appearance();
517
518 #if USE(NEW_THEME)
519 switch (part) {
520 case CheckboxPart:
521 case RadioPart:
522 case PushButtonPart:
523 case SquareButtonPart:
524 case DefaultButtonPart:
525 case ButtonPart:
526 return RenderTheme::adjustRepaintRect(o, r);
527 default:
528 break;
529 }
530 #endif
531
478 float zoomLevel = o->style()->effectiveZoom(); 532 float zoomLevel = o->style()->effectiveZoom();
479 533
480 switch (o->style()->appearance()) { 534 if (part == MenulistPart) {
481 case CheckboxPart: {
482 // Since we query the prototype cell, we need to update its state to mat ch.
483 setCheckboxCellState(o, r);
484
485 // We inflate the rect as needed to account for padding included in the cell to accommodate the checkbox
486 // shadow" and the check. We don't consider this part of the bounds of the control in WebKit.
487 IntSize size = checkboxSizes()[[checkbox() controlSize]];
488 size.setHeight(size.height() * zoomLevel);
489 size.setWidth(size.width() * zoomLevel);
490 r = inflateRect(r, size, checkboxMargins(), zoomLevel);
491 break;
492 }
493 case RadioPart: {
494 // Since we query the prototype cell, we need to update its state to mat ch.
495 setRadioCellState(o, r);
496
497 // We inflate the rect as needed to account for padding included in the cell to accommodate the checkbox
498 // shadow" and the check. We don't consider this part of the bounds of the control in WebKit.
499 IntSize size = radioSizes()[[radio() controlSize]];
500 size.setHeight(size.height() * zoomLevel);
501 size.setWidth(size.width() * zoomLevel);
502 r = inflateRect(r, size, radioMargins(), zoomLevel);
503 break;
504 }
505 case PushButtonPart:
506 case DefaultButtonPart:
507 case ButtonPart: {
508 // Since we query the prototype cell, we need to update its state to mat ch.
509 setButtonCellState(o, r);
510
511 // We inflate the rect as needed to account for padding included in the cell to accommodate the checkbox
512 // shadow" and the check. We don't consider this part of the bounds of the control in WebKit.
513 if ([button() bezelStyle] == NSRoundedBezelStyle) {
514 IntSize size = buttonSizes()[[button() controlSize]];
515 size.setHeight(size.height() * zoomLevel);
516 size.setWidth(r.width());
517 r = inflateRect(r, size, buttonMargins(), zoomLevel);
518 }
519 break;
520 }
521 case MenulistPart: {
522 setPopupButtonCellState(o, r); 535 setPopupButtonCellState(o, r);
523 IntSize size = popupButtonSizes()[[popupButton() controlSize]]; 536 IntSize size = popupButtonSizes()[[popupButton() controlSize]];
524 size.setHeight(size.height() * zoomLevel); 537 size.setHeight(size.height() * zoomLevel);
525 size.setWidth(r.width()); 538 size.setWidth(r.width());
526 r = inflateRect(r, size, popupButtonMargins(), zoomLevel); 539 r = inflateRect(r, size, popupButtonMargins(), zoomLevel);
527 break;
528 }
529 default:
530 break;
531 } 540 }
532 } 541 }
533 542
534 IntRect RenderThemeChromiumMac::inflateRect(const IntRect& r, const IntSize& siz e, const int* margins, float zoomLevel) const 543 IntRect RenderThemeChromiumMac::inflateRect(const IntRect& r, const IntSize& siz e, const int* margins, float zoomLevel) const
535 { 544 {
536 // Only do the inflation if the available width/height are too small. Other wise try to 545 // Only do the inflation if the available width/height are too small. Other wise try to
537 // fit the glow/check space into the available box's width/height. 546 // fit the glow/check space into the available box's width/height.
538 int widthDelta = r.width() - (size.width() + margins[LeftMargin] * zoomLevel + margins[RightMargin] * zoomLevel); 547 int widthDelta = r.width() - (size.width() + margins[leftMargin] * zoomLevel + margins[rightMargin] * zoomLevel);
539 int heightDelta = r.height() - (size.height() + margins[TopMargin] * zoomLev el + margins[BottomMargin] * zoomLevel); 548 int heightDelta = r.height() - (size.height() + margins[topMargin] * zoomLev el + margins[bottomMargin] * zoomLevel);
540 IntRect result(r); 549 IntRect result(r);
541 if (widthDelta < 0) { 550 if (widthDelta < 0) {
542 result.setX(result.x() - margins[LeftMargin] * zoomLevel); 551 result.setX(result.x() - margins[leftMargin] * zoomLevel);
543 result.setWidth(result.width() - widthDelta); 552 result.setWidth(result.width() - widthDelta);
544 } 553 }
545 if (heightDelta < 0) { 554 if (heightDelta < 0) {
546 result.setY(result.y() - margins[TopMargin] * zoomLevel); 555 result.setY(result.y() - margins[topMargin] * zoomLevel);
547 result.setHeight(result.height() - heightDelta); 556 result.setHeight(result.height() - heightDelta);
548 } 557 }
549 return result; 558 return result;
550 } 559 }
551 560
561 FloatRect RenderThemeChromiumMac::convertToPaintingRect(const RenderObject* inpu tRenderer, const RenderObject* partRenderer, const FloatRect& inputRect, const I ntRect& r) const
562 {
563 FloatRect partRect(inputRect);
564
565 // Compute an offset between the part renderer and the input renderer
566 FloatSize offsetFromInputRenderer;
567 const RenderObject* renderer = partRenderer;
568 while (renderer && renderer != inputRenderer) {
569 RenderObject* containingRenderer = renderer->container();
570 offsetFromInputRenderer -= renderer->offsetFromContainer(containingRende rer);
571 renderer = containingRenderer;
572 }
573 // If the input renderer was not a container, something went wrong
574 ASSERT(renderer == inputRenderer);
575 // Move the rect into partRenderer's coords
576 partRect.move(offsetFromInputRenderer);
577 // Account for the local drawing offset (tx, ty)
578 partRect.move(r.x(), r.y());
579
580 return partRect;
581 }
582
552 // Updates the control tint (a.k.a. active state) of |cell| (from |o|). 583 // Updates the control tint (a.k.a. active state) of |cell| (from |o|).
553 // In the Chromium port, the renderer runs as a background process and controls' 584 // In the Chromium port, the renderer runs as a background process and controls'
554 // NSCell(s) lack a parent NSView. Therefore controls don't have their tint 585 // NSCell(s) lack a parent NSView. Therefore controls don't have their tint
555 // color updated correctly when the application is activated/deactivated. 586 // color updated correctly when the application is activated/deactivated.
556 // FocusController's setActive() is called when the application is 587 // FocusController's setActive() is called when the application is
557 // activated/deactivated, which causes a repaint at which time this code is 588 // activated/deactivated, which causes a repaint at which time this code is
558 // called. 589 // called.
559 // This function should be called before drawing any NSCell-derived controls, 590 // This function should be called before drawing any NSCell-derived controls,
560 // unless you're sure it isn't needed. 591 // unless you're sure it isn't needed.
561 void RenderThemeChromiumMac::updateActiveState(NSCell* cell, const RenderObject* o) 592 void RenderThemeChromiumMac::updateActiveState(NSCell* cell, const RenderObject* o)
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
601 } 632 }
602 633
603 void RenderThemeChromiumMac::updatePressedState(NSCell* cell, const RenderObject * o) 634 void RenderThemeChromiumMac::updatePressedState(NSCell* cell, const RenderObject * o)
604 { 635 {
605 bool oldPressed = [cell isHighlighted]; 636 bool oldPressed = [cell isHighlighted];
606 bool pressed = (o->node() && o->node()->active()); 637 bool pressed = (o->node() && o->node()->active());
607 if (pressed != oldPressed) 638 if (pressed != oldPressed)
608 [cell setHighlighted:pressed]; 639 [cell setHighlighted:pressed];
609 } 640 }
610 641
611 // FIXME: This used to be in the upstream version until it was converted to the new theme API in r37731.
612 int RenderThemeChromiumMac::baselinePosition(const RenderObject* o) const
613 {
614 if (!o->isBox())
615 return 0;
616
617 if (o->style()->appearance() == CheckboxPart || o->style()->appearance() == RadioPart) {
618 const RenderBox* box = toRenderBox(o);
619 return box->marginTop() + box->height() - 2 * o->style()->effectiveZoom( ); // The baseline is 2px up from the bottom of the checkbox/radio in AppKit.
620 }
621 return RenderTheme::baselinePosition(o);
622 }
623
624 bool RenderThemeChromiumMac::controlSupportsTints(const RenderObject* o) const 642 bool RenderThemeChromiumMac::controlSupportsTints(const RenderObject* o) const
625 { 643 {
626 // An alternate way to implement this would be to get the appropriate cell o bject 644 // An alternate way to implement this would be to get the appropriate cell o bject
627 // and call the private _needRedrawOnWindowChangedKeyState method. An advant age of 645 // and call the private _needRedrawOnWindowChangedKeyState method. An advant age of
628 // that would be that we would match AppKit behavior more closely, but a dis advantage 646 // that would be that we would match AppKit behavior more closely, but a dis advantage
629 // would be that we would rely on an AppKit SPI method. 647 // would be that we would rely on an AppKit SPI method.
630 648
631 if (!isEnabled(o)) 649 if (!isEnabled(o))
632 return false; 650 return false;
633 651
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
685 void RenderThemeChromiumMac::setSizeFromFont(RenderStyle* style, const IntSize* sizes) const 703 void RenderThemeChromiumMac::setSizeFromFont(RenderStyle* style, const IntSize* sizes) const
686 { 704 {
687 // FIXME: Check is flawed, since it doesn't take min-width/max-width into ac count. 705 // FIXME: Check is flawed, since it doesn't take min-width/max-width into ac count.
688 IntSize size = sizeForFont(style, sizes); 706 IntSize size = sizeForFont(style, sizes);
689 if (style->width().isIntrinsicOrAuto() && size.width() > 0) 707 if (style->width().isIntrinsicOrAuto() && size.width() > 0)
690 style->setWidth(Length(size.width(), Fixed)); 708 style->setWidth(Length(size.width(), Fixed));
691 if (style->height().isAuto() && size.height() > 0) 709 if (style->height().isAuto() && size.height() > 0)
692 style->setHeight(Length(size.height(), Fixed)); 710 style->setHeight(Length(size.height(), Fixed));
693 } 711 }
694 712
695 void RenderThemeChromiumMac::setFontFromControlSize(CSSStyleSelector* selector, RenderStyle* style, NSControlSize controlSize) const 713 void RenderThemeChromiumMac::setFontFromControlSize(CSSStyleSelector*, RenderSty le* style, NSControlSize controlSize) const
696 { 714 {
697 FontDescription fontDescription; 715 FontDescription fontDescription;
698 fontDescription.setIsAbsoluteSize(true); 716 fontDescription.setIsAbsoluteSize(true);
699 fontDescription.setGenericFamily(FontDescription::SerifFamily); 717 fontDescription.setGenericFamily(FontDescription::SerifFamily);
700 718
701 NSFont* font = [NSFont systemFontOfSize:[NSFont systemFontSizeForControlSize :controlSize]]; 719 NSFont* font = [NSFont systemFontOfSize:[NSFont systemFontSizeForControlSize :controlSize]];
702 fontDescription.firstFamily().setFamily([font familyName]); 720 fontDescription.firstFamily().setFamily([font familyName]);
703 fontDescription.setComputedSize([font pointSize] * style->effectiveZoom()); 721 fontDescription.setComputedSize([font pointSize] * style->effectiveZoom());
704 fontDescription.setSpecifiedSize([font pointSize] * style->effectiveZoom()); 722 fontDescription.setSpecifiedSize([font pointSize] * style->effectiveZoom());
705 723
706 // Reset line height 724 // Reset line height
707 style->setLineHeight(RenderStyle::initialLineHeight()); 725 style->setLineHeight(RenderStyle::initialLineHeight());
708 726
709 if (style->setFontDescription(fontDescription)) 727 if (style->setFontDescription(fontDescription))
710 style->font().update(0); 728 style->font().update(0);
711 } 729 }
712 730
713 NSControlSize RenderThemeChromiumMac::controlSizeForSystemFont(RenderStyle* styl e) const 731 NSControlSize RenderThemeChromiumMac::controlSizeForSystemFont(RenderStyle* styl e) const
714 { 732 {
715 int fontSize = style->fontSize(); 733 int fontSize = style->fontSize();
716 if (fontSize >= [NSFont systemFontSizeForControlSize:NSRegularControlSize]) 734 if (fontSize >= [NSFont systemFontSizeForControlSize:NSRegularControlSize])
717 return NSRegularControlSize; 735 return NSRegularControlSize;
718 if (fontSize >= [NSFont systemFontSizeForControlSize:NSSmallControlSize]) 736 if (fontSize >= [NSFont systemFontSizeForControlSize:NSSmallControlSize])
719 return NSSmallControlSize; 737 return NSSmallControlSize;
720 return NSMiniControlSize; 738 return NSMiniControlSize;
721 } 739 }
722 740
723 // FIXME: This used to be in the upstream version until it was converted to the new theme API in r37731.
724 bool RenderThemeChromiumMac::paintCheckbox(RenderObject* o, const RenderObject:: PaintInfo& paintInfo, const IntRect& r)
725 {
726 LocalCurrentGraphicsContext localContext(paintInfo.context);
727
728 // Determine the width and height needed for the control and prepare the cel l for painting.
729 setCheckboxCellState(o, r);
730
731 paintInfo.context->save();
732
733 float zoomLevel = o->style()->effectiveZoom();
734
735 // We inflate the rect as needed to account for padding included in the cell to accommodate the checkbox
736 // shadow" and the check. We don't consider this part of the bounds of the control in WebKit.
737 NSButtonCell* checkbox = this->checkbox();
738 IntSize size = checkboxSizes()[[checkbox controlSize]];
739 size.setWidth(size.width() * zoomLevel);
740 size.setHeight(size.height() * zoomLevel);
741 IntRect inflatedRect = inflateRect(r, size, checkboxMargins(), zoomLevel);
742
743 if (zoomLevel != 1.0f) {
744 inflatedRect.setWidth(inflatedRect.width() / zoomLevel);
745 inflatedRect.setHeight(inflatedRect.height() / zoomLevel);
746 paintInfo.context->translate(inflatedRect.x(), inflatedRect.y());
747 paintInfo.context->scale(FloatSize(zoomLevel, zoomLevel));
748 paintInfo.context->translate(-inflatedRect.x(), -inflatedRect.y());
749 }
750
751 [checkbox drawWithFrame:NSRect(IntRectToNSRect(inflatedRect)) inView:nil];
752 [checkbox setControlView:nil];
753
754 paintInfo.context->restore();
755
756 return false;
757 }
758
759 // FIXME: This used to be in the upstream version until it was converted to the new theme API in r37731.
760 const IntSize* RenderThemeChromiumMac::checkboxSizes() const
761 {
762 static const IntSize sizes[3] = { IntSize(14, 14), IntSize(12, 12), IntSize( 10, 10) };
763 return sizes;
764 }
765
766 // FIXME: This used to be in the upstream version until it was converted to the new theme API in r37731.
767 const int* RenderThemeChromiumMac::checkboxMargins() const
768 {
769 static const int margins[3][4] =
770 {
771 { 3, 4, 4, 2 },
772 { 4, 3, 3, 3 },
773 { 4, 3, 3, 3 },
774 };
775 return margins[[checkbox() controlSize]];
776 }
777
778 // FIXME: This used to be in the upstream version until it was converted to the new theme API in r37731.
779 void RenderThemeChromiumMac::setCheckboxCellState(const RenderObject* o, const I ntRect& r)
780 {
781 NSButtonCell* checkbox = this->checkbox();
782
783 // Set the control size based off the rectangle we're painting into.
784 setControlSize(checkbox, checkboxSizes(), r.size(), o->style()->effectiveZoo m());
785
786 // Update the various states we respond to.
787 updateActiveState(checkbox, o);
788 updateCheckedState(checkbox, o);
789 updateEnabledState(checkbox, o);
790 updatePressedState(checkbox, o);
791 updateFocusedState(checkbox, o);
792 }
793
794 // FIXME: This used to be in the upstream version until it was converted to the new theme API in r37731.
795 void RenderThemeChromiumMac::setCheckboxSize(RenderStyle* style) const
796 {
797 // If the width and height are both specified, then we have nothing to do.
798 if (!style->width().isIntrinsicOrAuto() && !style->height().isAuto())
799 return;
800
801 // Use the font size to determine the intrinsic width of the control.
802 setSizeFromFont(style, checkboxSizes());
803 }
804
805 // FIXME: This used to be in the upstream version until it was converted to the new theme API in r37731.
806 bool RenderThemeChromiumMac::paintRadio(RenderObject* o, const RenderObject::Pai ntInfo& paintInfo, const IntRect& r)
807 {
808 LocalCurrentGraphicsContext localContext(paintInfo.context);
809
810 // Determine the width and height needed for the control and prepare the cel l for painting.
811 setRadioCellState(o, r);
812
813 paintInfo.context->save();
814
815 float zoomLevel = o->style()->effectiveZoom();
816
817 // We inflate the rect as needed to account for padding included in the cell to accommodate the checkbox
818 // shadow" and the check. We don't consider this part of the bounds of the control in WebKit.
819 NSButtonCell* radio = this->radio();
820 IntSize size = radioSizes()[[radio controlSize]];
821 size.setWidth(size.width() * zoomLevel);
822 size.setHeight(size.height() * zoomLevel);
823 IntRect inflatedRect = inflateRect(r, size, radioMargins(), zoomLevel);
824
825 if (zoomLevel != 1.0f) {
826 inflatedRect.setWidth(inflatedRect.width() / zoomLevel);
827 inflatedRect.setHeight(inflatedRect.height() / zoomLevel);
828 paintInfo.context->translate(inflatedRect.x(), inflatedRect.y());
829 paintInfo.context->scale(FloatSize(zoomLevel, zoomLevel));
830 paintInfo.context->translate(-inflatedRect.x(), -inflatedRect.y());
831 }
832
833 [radio drawWithFrame:NSRect(IntRectToNSRect(inflatedRect)) inView:nil];
834 [radio setControlView:nil];
835
836 paintInfo.context->restore();
837
838 return false;
839 }
840
841 // FIXME: This used to be in the upstream version until it was converted to the new theme API in r37731.
842 const IntSize* RenderThemeChromiumMac::radioSizes() const
843 {
844 static const IntSize sizes[3] = { IntSize(14, 15), IntSize(12, 13), IntSize( 10, 10) };
845 return sizes;
846 }
847
848 // FIXME: This used to be in the upstream version until it was converted to the new theme API in r37731.
849 const int* RenderThemeChromiumMac::radioMargins() const
850 {
851 static const int margins[3][4] =
852 {
853 { 2, 2, 4, 2 },
854 { 3, 2, 3, 2 },
855 { 1, 0, 2, 0 },
856 };
857 return margins[[radio() controlSize]];
858 }
859
860 // FIXME: This used to be in the upstream version until it was converted to the new theme API in r37731.
861 void RenderThemeChromiumMac::setRadioCellState(const RenderObject* o, const IntR ect& r)
862 {
863 NSButtonCell* radio = this->radio();
864
865 // Set the control size based off the rectangle we're painting into.
866 setControlSize(radio, radioSizes(), r.size(), o->style()->effectiveZoom());
867
868 // Update the various states we respond to.
869 updateActiveState(radio, o);
870 updateCheckedState(radio, o);
871 updateEnabledState(radio, o);
872 updatePressedState(radio, o);
873 updateFocusedState(radio, o);
874 }
875
876 // FIXME: This used to be in the upstream version until it was converted to the new theme API in r37731.
877 void RenderThemeChromiumMac::setRadioSize(RenderStyle* style) const
878 {
879 // If the width and height are both specified, then we have nothing to do.
880 if (!style->width().isIntrinsicOrAuto() && !style->height().isAuto())
881 return;
882
883 // Use the font size to determine the intrinsic width of the control.
884 setSizeFromFont(style, radioSizes());
885 }
886
887 // FIXME: This used to be in the upstream version until it was converted to the new theme API in r37731.
888 void RenderThemeChromiumMac::setButtonPaddingFromControlSize(RenderStyle* style, NSControlSize size) const
889 {
890 // Just use 8px. AppKit wants to use 11px for mini buttons, but that paddin g is just too large
891 // for real-world Web sites (creating a huge necessary minimum width for but tons whose space is
892 // by definition constrained, since we select mini only for small cramped en vironments.
893 // This also guarantees the HTML4 <button> will match our rendering by defau lt, since we're using a consistent
894 // padding.
895 const int padding = 8 * style->effectiveZoom();
896 style->setPaddingLeft(Length(padding, Fixed));
897 style->setPaddingRight(Length(padding, Fixed));
898 style->setPaddingTop(Length(0, Fixed));
899 style->setPaddingBottom(Length(0, Fixed));
900 }
901
902 // FIXME: This used to be in the upstream version until it was converted to the new theme API in r37731.
903 void RenderThemeChromiumMac::adjustButtonStyle(CSSStyleSelector* selector, Rende rStyle* style, Element* e) const
904 {
905 // There are three appearance constants for buttons.
906 // (1) Push-button is the constant for the default Aqua system button. Push buttons will not scale vertically and will not allow
907 // custom fonts or colors. <input>s use this constant. This button will al low custom colors and font weights/variants but won't
908 // scale vertically.
909 // (2) square-button is the constant for the square button. This button wil l allow custom fonts and colors and will scale vertically.
910 // (3) Button is the constant that means "pick the best button as appropriat e." <button>s use this constant. This button will
911 // also scale vertically and allow custom fonts and colors. It will attempt to use Aqua if possible and will make this determination
912 // solely on the rectangle of the control.
913
914 // Determine our control size based off our font.
915 NSControlSize controlSize = controlSizeForFont(style);
916
917 if (style->appearance() == PushButtonPart) {
918 // Ditch the border.
919 style->resetBorder();
920
921 // Height is locked to auto.
922 style->setHeight(Length(Auto));
923
924 // White-space is locked to pre
925 style->setWhiteSpace(PRE);
926
927 // Set the button's vertical size.
928 setButtonSize(style);
929
930 // Add in the padding that we'd like to use.
931 setButtonPaddingFromControlSize(style, controlSize);
932
933 // Our font is locked to the appropriate system font size for the contro l. To clarify, we first use the CSS-specified font to figure out
934 // a reasonable control size, but once that control size is determined, we throw that font away and use the appropriate
935 // system font for the control size instead.
936 setFontFromControlSize(selector, style, controlSize);
937 } else {
938 // Set a min-height so that we can't get smaller than the mini button.
939 style->setMinHeight(Length(static_cast<int>(15 * style->effectiveZoom()) , Fixed));
940
941 // Reset the top and bottom borders.
942 style->resetBorderTop();
943 style->resetBorderBottom();
944 }
945
946 style->setBoxShadow(0);
947 }
948
949 // FIXME: This used to be in the upstream version until it was converted to the new theme API in r37731.
950 const IntSize* RenderThemeChromiumMac::buttonSizes() const
951 {
952 static const IntSize sizes[3] = { IntSize(0, 21), IntSize(0, 18), IntSize(0, 15) };
953 return sizes;
954 }
955
956 // FIXME: This used to be in the upstream version until it was converted to the new theme API in r37731.
957 const int* RenderThemeChromiumMac::buttonMargins() const
958 {
959 static const int margins[3][4] =
960 {
961 { 4, 6, 7, 6 },
962 { 4, 5, 6, 5 },
963 { 0, 1, 1, 1 },
964 };
965 return margins[[button() controlSize]];
966 }
967
968 // FIXME: This used to be in the upstream version until it was converted to the new theme API in r37731.
969 void RenderThemeChromiumMac::setButtonSize(RenderStyle* style) const
970 {
971 // If the width and height are both specified, then we have nothing to do.
972 if (!style->width().isIntrinsicOrAuto() && !style->height().isAuto())
973 return;
974
975 // Use the font size to determine the intrinsic width of the control.
976 setSizeFromFont(style, buttonSizes());
977 }
978
979 // FIXME: This used to be in the upstream version until it was converted to the new theme API in r37731.
980 void RenderThemeChromiumMac::setButtonCellState(const RenderObject* o, const Int Rect& r)
981 {
982 NSButtonCell* button = this->button();
983
984 // Set the control size based off the rectangle we're painting into.
985 if (o->style()->appearance() == SquareButtonPart ||
986 r.height() > buttonSizes()[NSRegularControlSize].height() * o->style()-> effectiveZoom()) {
987 // Use the square button
988 if ([button bezelStyle] != NSShadowlessSquareBezelStyle)
989 [button setBezelStyle:NSShadowlessSquareBezelStyle];
990 } else if ([button bezelStyle] != NSRoundedBezelStyle)
991 [button setBezelStyle:NSRoundedBezelStyle];
992
993 setControlSize(button, buttonSizes(), r.size(), o->style()->effectiveZoom()) ;
994
995 NSWindow *window = [nil window];
996 BOOL isDefaultButton = (isDefault(o) && [window isKeyWindow]);
997 [button setKeyEquivalent:(isDefaultButton ? @"\r" : @"")];
998
999 // Update the various states we respond to.
1000 updateActiveState(button, o);
1001 updateCheckedState(button, o);
1002 updateEnabledState(button, o);
1003 updatePressedState(button, o);
1004 updateFocusedState(button, o);
1005 }
1006
1007 // FIXME: This used to be in the upstream version until it was converted to the new theme API in r37731.
1008 bool RenderThemeChromiumMac::paintButton(RenderObject* o, const RenderObject::Pa intInfo& paintInfo, const IntRect& r)
1009 {
1010 NSButtonCell* button = this->button();
1011 LocalCurrentGraphicsContext localContext(paintInfo.context);
1012
1013 // Determine the width and height needed for the control and prepare the cel l for painting.
1014 setButtonCellState(o, r);
1015
1016 paintInfo.context->save();
1017
1018 // We inflate the rect as needed to account for padding included in the cell to accommodate the button
1019 // shadow. We don't consider this part of the bounds of the control in WebK it.
1020 float zoomLevel = o->style()->effectiveZoom();
1021 IntSize size = buttonSizes()[[button controlSize]];
1022 size.setWidth(r.width());
1023 size.setHeight(size.height() * zoomLevel);
1024 IntRect inflatedRect = r;
1025 if ([button bezelStyle] == NSRoundedBezelStyle) {
1026 // Center the button within the available space.
1027 if (inflatedRect.height() > size.height()) {
1028 inflatedRect.setY(inflatedRect.y() + (inflatedRect.height() - size.h eight()) / 2);
1029 inflatedRect.setHeight(size.height());
1030 }
1031
1032 // Now inflate it to account for the shadow.
1033 inflatedRect = inflateRect(inflatedRect, size, buttonMargins(), zoomLeve l);
1034
1035 if (zoomLevel != 1.0f) {
1036 inflatedRect.setWidth(inflatedRect.width() / zoomLevel);
1037 inflatedRect.setHeight(inflatedRect.height() / zoomLevel);
1038 paintInfo.context->translate(inflatedRect.x(), inflatedRect.y());
1039 paintInfo.context->scale(FloatSize(zoomLevel, zoomLevel));
1040 paintInfo.context->translate(-inflatedRect.x(), -inflatedRect.y());
1041 }
1042 }
1043
1044 NSView *view = nil;
1045 NSWindow *window = [view window];
1046 NSButtonCell *previousDefaultButtonCell = [window defaultButtonCell];
1047
1048 if (isDefault(o) && [window isKeyWindow]) {
1049 [window setDefaultButtonCell:button];
1050 wkAdvanceDefaultButtonPulseAnimation(button);
1051 } else if ([previousDefaultButtonCell isEqual:button])
1052 [window setDefaultButtonCell:nil];
1053
1054 [button drawWithFrame:NSRect(IntRectToNSRect(inflatedRect)) inView:view];
1055 [button setControlView:nil];
1056
1057 if (![previousDefaultButtonCell isEqual:button])
1058 [window setDefaultButtonCell:previousDefaultButtonCell];
1059
1060 paintInfo.context->restore();
1061
1062 return false;
1063 }
1064
1065 bool RenderThemeChromiumMac::paintTextField(RenderObject* o, const RenderObject: :PaintInfo& paintInfo, const IntRect& r) 741 bool RenderThemeChromiumMac::paintTextField(RenderObject* o, const RenderObject: :PaintInfo& paintInfo, const IntRect& r)
1066 { 742 {
1067 LocalCurrentGraphicsContext localContext(paintInfo.context); 743 LocalCurrentGraphicsContext localContext(paintInfo.context);
1068 wkDrawBezeledTextFieldCell(IntRectToNSRect(r), isEnabled(o) && !isReadOnlyCo ntrol(o)); 744 wkDrawBezeledTextFieldCell(r, isEnabled(o) && !isReadOnlyControl(o));
1069 return false; 745 return false;
1070 } 746 }
1071 747
1072 void RenderThemeChromiumMac::adjustTextFieldStyle(CSSStyleSelector*, RenderStyle *, Element*) const 748 void RenderThemeChromiumMac::adjustTextFieldStyle(CSSStyleSelector*, RenderStyle *, Element*) const
1073 { 749 {
1074 } 750 }
1075 751
1076 bool RenderThemeChromiumMac::paintCapsLockIndicator(RenderObject* o, const Rende rObject::PaintInfo& paintInfo, const IntRect& r) 752 bool RenderThemeChromiumMac::paintCapsLockIndicator(RenderObject*, const RenderO bject::PaintInfo& paintInfo, const IntRect& r)
1077 { 753 {
1078 if (paintInfo.context->paintingDisabled()) 754 if (paintInfo.context->paintingDisabled())
1079 return true; 755 return true;
1080 756
1081 LocalCurrentGraphicsContext localContext(paintInfo.context); 757 LocalCurrentGraphicsContext localContext(paintInfo.context);
1082 wkDrawCapsLockIndicator(paintInfo.context->platformContext(), r); 758 wkDrawCapsLockIndicator(paintInfo.context->platformContext(), r);
1083 759
1084 return false; 760 return false;
1085 } 761 }
1086 762
1087 bool RenderThemeChromiumMac::paintTextArea(RenderObject* o, const RenderObject:: PaintInfo& paintInfo, const IntRect& r) 763 bool RenderThemeChromiumMac::paintTextArea(RenderObject* o, const RenderObject:: PaintInfo& paintInfo, const IntRect& r)
1088 { 764 {
1089 LocalCurrentGraphicsContext localContext(paintInfo.context); 765 LocalCurrentGraphicsContext localContext(paintInfo.context);
1090 wkDrawBezeledTextArea(IntRectToNSRect(r), isEnabled(o) && !isReadOnlyControl (o)); 766 wkDrawBezeledTextArea(r, isEnabled(o) && !isReadOnlyControl(o));
1091 return false; 767 return false;
1092 } 768 }
1093 769
1094 void RenderThemeChromiumMac::adjustTextAreaStyle(CSSStyleSelector*, RenderStyle* , Element*) const 770 void RenderThemeChromiumMac::adjustTextAreaStyle(CSSStyleSelector*, RenderStyle* , Element*) const
1095 { 771 {
1096 } 772 }
1097 773
1098 const int* RenderThemeChromiumMac::popupButtonMargins() const 774 const int* RenderThemeChromiumMac::popupButtonMargins() const
1099 { 775 {
1100 static const int margins[3][4] = 776 static const int margins[3][4] =
(...skipping 17 matching lines...) Expand all
1118 { 794 {
1119 { 2, 26, 3, 8 }, 795 { 2, 26, 3, 8 },
1120 { 2, 23, 3, 8 }, 796 { 2, 23, 3, 8 },
1121 { 2, 22, 3, 10 } 797 { 2, 22, 3, 10 }
1122 }; 798 };
1123 return padding[size]; 799 return padding[size];
1124 } 800 }
1125 801
1126 bool RenderThemeChromiumMac::paintMenuList(RenderObject* o, const RenderObject:: PaintInfo& paintInfo, const IntRect& r) 802 bool RenderThemeChromiumMac::paintMenuList(RenderObject* o, const RenderObject:: PaintInfo& paintInfo, const IntRect& r)
1127 { 803 {
1128 LocalCurrentGraphicsContext localContext(paintInfo.context);
1129
1130 setPopupButtonCellState(o, r); 804 setPopupButtonCellState(o, r);
1131 805
1132 NSPopUpButtonCell* popupButton = this->popupButton(); 806 NSPopUpButtonCell* popupButton = this->popupButton();
1133 807
1134 float zoomLevel = o->style()->effectiveZoom(); 808 float zoomLevel = o->style()->effectiveZoom();
1135 IntSize size = popupButtonSizes()[[popupButton controlSize]]; 809 IntSize size = popupButtonSizes()[[popupButton controlSize]];
1136 size.setHeight(size.height() * zoomLevel); 810 size.setHeight(size.height() * zoomLevel);
1137 size.setWidth(r.width()); 811 size.setWidth(r.width());
1138 812
1139 // Now inflate it to account for the shadow. 813 // Now inflate it to account for the shadow.
1140 IntRect inflatedRect = r; 814 IntRect inflatedRect = r;
1141 if (r.width() >= minimumMenuListSize(o->style())) 815 if (r.width() >= minimumMenuListSize(o->style()))
1142 inflatedRect = inflateRect(inflatedRect, size, popupButtonMargins(), zoo mLevel); 816 inflatedRect = inflateRect(inflatedRect, size, popupButtonMargins(), zoo mLevel);
1143 817
1144 paintInfo.context->save(); 818 paintInfo.context->save();
1145 819
1146 #ifndef BUILDING_ON_TIGER 820 #ifndef BUILDING_ON_TIGER
1147 // On Leopard, the cell will draw outside of the given rect, so we have to c lip to the rect 821 // On Leopard, the cell will draw outside of the given rect, so we have to c lip to the rect
1148 paintInfo.context->clip(inflatedRect); 822 paintInfo.context->clip(inflatedRect);
1149 #endif 823 #endif
1150 824
1151 if (zoomLevel != 1.0f) { 825 if (zoomLevel != 1.0f) {
1152 inflatedRect.setWidth(inflatedRect.width() / zoomLevel); 826 inflatedRect.setWidth(inflatedRect.width() / zoomLevel);
1153 inflatedRect.setHeight(inflatedRect.height() / zoomLevel); 827 inflatedRect.setHeight(inflatedRect.height() / zoomLevel);
1154 paintInfo.context->translate(inflatedRect.x(), inflatedRect.y()); 828 paintInfo.context->translate(inflatedRect.x(), inflatedRect.y());
1155 paintInfo.context->scale(FloatSize(zoomLevel, zoomLevel)); 829 paintInfo.context->scale(FloatSize(zoomLevel, zoomLevel));
1156 paintInfo.context->translate(-inflatedRect.x(), -inflatedRect.y()); 830 paintInfo.context->translate(-inflatedRect.x(), -inflatedRect.y());
1157 } 831 }
1158 832
1159 [popupButton drawWithFrame:IntRectToNSRect(inflatedRect) inView:nil]; 833 [popupButton drawWithFrame:inflatedRect inView:FlippedView()];
1160 [popupButton setControlView:nil]; 834 [popupButton setControlView:nil];
1161 835
1162 paintInfo.context->restore(); 836 paintInfo.context->restore();
1163 837
1164 return false; 838 return false;
1165 } 839 }
1166 840
1167 static const float baseFontSize = 11.0f; 841 const float baseFontSize = 11.0f;
1168 static const float baseArrowHeight = 4.0f; 842 const float baseArrowHeight = 4.0f;
1169 static const float baseArrowWidth = 5.0f; 843 const float baseArrowWidth = 5.0f;
1170 static const float baseSpaceBetweenArrows = 2.0f; 844 const float baseSpaceBetweenArrows = 2.0f;
1171 static const int arrowPaddingLeft = 6; 845 const int arrowPaddingLeft = 6;
1172 static const int arrowPaddingRight = 6; 846 const int arrowPaddingRight = 6;
1173 static const int paddingBeforeSeparator = 4; 847 const int paddingBeforeSeparator = 4;
1174 static const int baseBorderRadius = 5; 848 const int baseBorderRadius = 5;
1175 static const int styledPopupPaddingLeft = 8; 849 const int styledPopupPaddingLeft = 8;
1176 static const int styledPopupPaddingTop = 1; 850 const int styledPopupPaddingTop = 1;
1177 static const int styledPopupPaddingBottom = 2; 851 const int styledPopupPaddingBottom = 2;
1178 852
1179 static void TopGradientInterpolate(void* info, const CGFloat* inData, CGFloat* o utData) 853 static void TopGradientInterpolate(void*, const CGFloat* inData, CGFloat* outDat a)
1180 { 854 {
1181 static float dark[4] = { 1.0f, 1.0f, 1.0f, 0.4f }; 855 static float dark[4] = { 1.0f, 1.0f, 1.0f, 0.4f };
1182 static float light[4] = { 1.0f, 1.0f, 1.0f, 0.15f }; 856 static float light[4] = { 1.0f, 1.0f, 1.0f, 0.15f };
1183 float a = inData[0]; 857 float a = inData[0];
1184 int i = 0; 858 int i = 0;
1185 for (i = 0; i < 4; i++) 859 for (i = 0; i < 4; i++)
1186 outData[i] = (1.0f - a) * dark[i] + a * light[i]; 860 outData[i] = (1.0f - a) * dark[i] + a * light[i];
1187 } 861 }
1188 862
1189 static void BottomGradientInterpolate(void* info, const CGFloat* inData, CGFloat * outData) 863 static void BottomGradientInterpolate(void*, const CGFloat* inData, CGFloat* out Data)
1190 { 864 {
1191 static float dark[4] = { 1.0f, 1.0f, 1.0f, 0.0f }; 865 static float dark[4] = { 1.0f, 1.0f, 1.0f, 0.0f };
1192 static float light[4] = { 1.0f, 1.0f, 1.0f, 0.3f }; 866 static float light[4] = { 1.0f, 1.0f, 1.0f, 0.3f };
1193 float a = inData[0]; 867 float a = inData[0];
1194 int i = 0; 868 int i = 0;
1195 for (i = 0; i < 4; i++) 869 for (i = 0; i < 4; i++)
1196 outData[i] = (1.0f - a) * dark[i] + a * light[i]; 870 outData[i] = (1.0f - a) * dark[i] + a * light[i];
1197 } 871 }
1198 872
1199 static void MainGradientInterpolate(void* info, const CGFloat* inData, CGFloat* outData) 873 static void MainGradientInterpolate(void*, const CGFloat* inData, CGFloat* outDa ta)
1200 { 874 {
1201 static float dark[4] = { 0.0f, 0.0f, 0.0f, 0.15f }; 875 static float dark[4] = { 0.0f, 0.0f, 0.0f, 0.15f };
1202 static float light[4] = { 0.0f, 0.0f, 0.0f, 0.0f }; 876 static float light[4] = { 0.0f, 0.0f, 0.0f, 0.0f };
1203 float a = inData[0]; 877 float a = inData[0];
1204 int i = 0; 878 int i = 0;
1205 for (i = 0; i < 4; i++) 879 for (i = 0; i < 4; i++)
1206 outData[i] = (1.0f - a) * dark[i] + a * light[i]; 880 outData[i] = (1.0f - a) * dark[i] + a * light[i];
1207 } 881 }
1208 882
1209 static void TrackGradientInterpolate(void* info, const CGFloat* inData, CGFloat* outData) 883 static void TrackGradientInterpolate(void*, const CGFloat* inData, CGFloat* outD ata)
1210 { 884 {
1211 static float dark[4] = { 0.0f, 0.0f, 0.0f, 0.678f }; 885 static float dark[4] = { 0.0f, 0.0f, 0.0f, 0.678f };
1212 static float light[4] = { 0.0f, 0.0f, 0.0f, 0.13f }; 886 static float light[4] = { 0.0f, 0.0f, 0.0f, 0.13f };
1213 float a = inData[0]; 887 float a = inData[0];
1214 int i = 0; 888 int i = 0;
1215 for (i = 0; i < 4; i++) 889 for (i = 0; i < 4; i++)
1216 outData[i] = (1.0f - a) * dark[i] + a * light[i]; 890 outData[i] = (1.0f - a) * dark[i] + a * light[i];
1217 } 891 }
1218 892
1219 void RenderThemeChromiumMac::paintMenuListButtonGradients(RenderObject* o, const RenderObject::PaintInfo& paintInfo, const IntRect& r) 893 void RenderThemeChromiumMac::paintMenuListButtonGradients(RenderObject* o, const RenderObject::PaintInfo& paintInfo, const IntRect& r)
1220 { 894 {
895 if (r.isEmpty())
896 return;
897
1221 CGContextRef context = paintInfo.context->platformContext(); 898 CGContextRef context = paintInfo.context->platformContext();
1222 899
1223 paintInfo.context->save(); 900 paintInfo.context->save();
1224 901
1225 int radius = o->style()->borderTopLeftRadius().width(); 902 IntSize topLeftRadius;
903 IntSize topRightRadius;
904 IntSize bottomLeftRadius;
905 IntSize bottomRightRadius;
906
907 o->style()->getBorderRadiiForRect(r, topLeftRadius, topRightRadius, bottomLe ftRadius, bottomRightRadius);
908
909 int radius = topLeftRadius.width();
1226 910
1227 RetainPtr<CGColorSpaceRef> cspace(AdoptCF, CGColorSpaceCreateDeviceRGB()); 911 RetainPtr<CGColorSpaceRef> cspace(AdoptCF, CGColorSpaceCreateDeviceRGB());
1228 912
1229 FloatRect topGradient(r.x(), r.y(), r.width(), r.height() / 2.0f); 913 FloatRect topGradient(r.x(), r.y(), r.width(), r.height() / 2.0f);
1230 struct CGFunctionCallbacks topCallbacks = { 0, TopGradientInterpolate, NULL }; 914 struct CGFunctionCallbacks topCallbacks = { 0, TopGradientInterpolate, NULL };
1231 RetainPtr<CGFunctionRef> topFunction(AdoptCF, CGFunctionCreate(NULL, 1, NULL , 4, NULL, &topCallbacks)); 915 RetainPtr<CGFunctionRef> topFunction(AdoptCF, CGFunctionCreate(NULL, 1, NULL , 4, NULL, &topCallbacks));
1232 RetainPtr<CGShadingRef> topShading(AdoptCF, CGShadingCreateAxial(cspace.get( ), CGPointMake(topGradient.x(), topGradient.y()), CGPointMake(topGradient.x(), t opGradient.bottom()), topFunction.get(), false, false)); 916 RetainPtr<CGShadingRef> topShading(AdoptCF, CGShadingCreateAxial(cspace.get( ), CGPointMake(topGradient.x(), topGradient.y()), CGPointMake(topGradient.x(), t opGradient.bottom()), topFunction.get(), false, false));
1233 917
1234 FloatRect bottomGradient(r.x() + radius, r.y() + r.height() / 2.0f, r.width( ) - 2.0f * radius, r.height() / 2.0f); 918 FloatRect bottomGradient(r.x() + radius, r.y() + r.height() / 2.0f, r.width( ) - 2.0f * radius, r.height() / 2.0f);
1235 struct CGFunctionCallbacks bottomCallbacks = { 0, BottomGradientInterpolate, NULL }; 919 struct CGFunctionCallbacks bottomCallbacks = { 0, BottomGradientInterpolate, NULL };
1236 RetainPtr<CGFunctionRef> bottomFunction(AdoptCF, CGFunctionCreate(NULL, 1, N ULL, 4, NULL, &bottomCallbacks)); 920 RetainPtr<CGFunctionRef> bottomFunction(AdoptCF, CGFunctionCreate(NULL, 1, N ULL, 4, NULL, &bottomCallbacks));
1237 RetainPtr<CGShadingRef> bottomShading(AdoptCF, CGShadingCreateAxial(cspace.g et(), CGPointMake(bottomGradient.x(), bottomGradient.y()), CGPointMake(bottomGr adient.x(), bottomGradient.bottom()), bottomFunction.get(), false, false)); 921 RetainPtr<CGShadingRef> bottomShading(AdoptCF, CGShadingCreateAxial(cspace.g et(), CGPointMake(bottomGradient.x(), bottomGradient.y()), CGPointMake(bottomGr adient.x(), bottomGradient.bottom()), bottomFunction.get(), false, false));
1238 922
1239 struct CGFunctionCallbacks mainCallbacks = { 0, MainGradientInterpolate, NUL L }; 923 struct CGFunctionCallbacks mainCallbacks = { 0, MainGradientInterpolate, NUL L };
1240 RetainPtr<CGFunctionRef> mainFunction(AdoptCF, CGFunctionCreate(NULL, 1, NUL L, 4, NULL, &mainCallbacks)); 924 RetainPtr<CGFunctionRef> mainFunction(AdoptCF, CGFunctionCreate(NULL, 1, NUL L, 4, NULL, &mainCallbacks));
1241 RetainPtr<CGShadingRef> mainShading(AdoptCF, CGShadingCreateAxial(cspace.get (), CGPointMake(r.x(), r.y()), CGPointMake(r.x(), r.bottom()), mainFunction.get (), false, false)); 925 RetainPtr<CGShadingRef> mainShading(AdoptCF, CGShadingCreateAxial(cspace.get (), CGPointMake(r.x(), r.y()), CGPointMake(r.x(), r.bottom()), mainFunction.get (), false, false));
1242 926
1243 RetainPtr<CGShadingRef> leftShading(AdoptCF, CGShadingCreateAxial(cspace.get (), CGPointMake(r.x(), r.y()), CGPointMake(r.x() + radius, r.y()), mainFunction .get(), false, false)); 927 RetainPtr<CGShadingRef> leftShading(AdoptCF, CGShadingCreateAxial(cspace.get (), CGPointMake(r.x(), r.y()), CGPointMake(r.x() + radius, r.y()), mainFunction .get(), false, false));
1244 928
1245 RetainPtr<CGShadingRef> rightShading(AdoptCF, CGShadingCreateAxial(cspace.ge t(), CGPointMake(r.right(), r.y()), CGPointMake(r.right() - radius, r.y()), mai nFunction.get(), false, false)); 929 RetainPtr<CGShadingRef> rightShading(AdoptCF, CGShadingCreateAxial(cspace.ge t(), CGPointMake(r.right(), r.y()), CGPointMake(r.right() - radius, r.y()), mai nFunction.get(), false, false));
1246 paintInfo.context->save(); 930 paintInfo.context->save();
1247 CGContextClipToRect(context, r); 931 CGContextClipToRect(context, r);
1248 paintInfo.context->addRoundedRectClip(r, 932 paintInfo.context->addRoundedRectClip(r, topLeftRadius, topRightRadius, bott omLeftRadius, bottomRightRadius);
1249 o->style()->borderTopLeftRadius(), o->style()->borderTopRightRadius(),
1250 o->style()->borderBottomLeftRadius(), o->style()->borderBottomRightRadiu s());
1251 CGContextDrawShading(context, mainShading.get()); 933 CGContextDrawShading(context, mainShading.get());
1252 paintInfo.context->restore(); 934 paintInfo.context->restore();
1253 935
1254 paintInfo.context->save(); 936 paintInfo.context->save();
1255 CGContextClipToRect(context, topGradient); 937 CGContextClipToRect(context, topGradient);
1256 paintInfo.context->addRoundedRectClip(enclosingIntRect(topGradient), 938 paintInfo.context->addRoundedRectClip(enclosingIntRect(topGradient), topLeft Radius, topRightRadius, IntSize(), IntSize());
1257 o->style()->borderTopLeftRadius(), o->style()->borderTopRightRadius(),
1258 IntSize(), IntSize());
1259 CGContextDrawShading(context, topShading.get()); 939 CGContextDrawShading(context, topShading.get());
1260 paintInfo.context->restore(); 940 paintInfo.context->restore();
1261 941
1262 paintInfo.context->save(); 942 if (!bottomGradient.isEmpty()) {
1263 CGContextClipToRect(context, bottomGradient); 943 paintInfo.context->save();
1264 paintInfo.context->addRoundedRectClip(enclosingIntRect(bottomGradient), 944 CGContextClipToRect(context, bottomGradient);
1265 IntSize(), IntSize(), 945 paintInfo.context->addRoundedRectClip(enclosingIntRect(bottomGradient), IntSize(), IntSize(), bottomLeftRadius, bottomRightRadius);
1266 o->style()->borderBottomLeftRadius(), o->style()->borderBottomRightRadiu s()); 946 CGContextDrawShading(context, bottomShading.get());
1267 CGContextDrawShading(context, bottomShading.get()); 947 paintInfo.context->restore();
1268 paintInfo.context->restore(); 948 }
1269 949
1270 paintInfo.context->save(); 950 paintInfo.context->save();
1271 CGContextClipToRect(context, r); 951 CGContextClipToRect(context, r);
1272 paintInfo.context->addRoundedRectClip(r, 952 paintInfo.context->addRoundedRectClip(r, topLeftRadius, topRightRadius, bott omLeftRadius, bottomRightRadius);
1273 o->style()->borderTopLeftRadius(), o->style()->borderTopRightRadius(),
1274 o->style()->borderBottomLeftRadius(), o->style()->borderBottomRightRadiu s());
1275 CGContextDrawShading(context, leftShading.get()); 953 CGContextDrawShading(context, leftShading.get());
1276 CGContextDrawShading(context, rightShading.get()); 954 CGContextDrawShading(context, rightShading.get());
1277 paintInfo.context->restore(); 955 paintInfo.context->restore();
1278 956
1279 paintInfo.context->restore(); 957 paintInfo.context->restore();
1280 } 958 }
1281 959
1282 bool RenderThemeChromiumMac::paintMenuListButton(RenderObject* o, const RenderOb ject::PaintInfo& paintInfo, const IntRect& r) 960 bool RenderThemeChromiumMac::paintMenuListButton(RenderObject* o, const RenderOb ject::PaintInfo& paintInfo, const IntRect& r)
1283 { 961 {
1284 paintInfo.context->save();
1285
1286 IntRect bounds = IntRect(r.x() + o->style()->borderLeftWidth(), 962 IntRect bounds = IntRect(r.x() + o->style()->borderLeftWidth(),
1287 r.y() + o->style()->borderTopWidth(), 963 r.y() + o->style()->borderTopWidth(),
1288 r.width() - o->style()->borderLeftWidth() - o->styl e()->borderRightWidth(), 964 r.width() - o->style()->borderLeftWidth() - o->styl e()->borderRightWidth(),
1289 r.height() - o->style()->borderTopWidth() - o->styl e()->borderBottomWidth()); 965 r.height() - o->style()->borderTopWidth() - o->styl e()->borderBottomWidth());
1290 // Draw the gradients to give the styled popup menu a button appearance 966 // Draw the gradients to give the styled popup menu a button appearance
1291 paintMenuListButtonGradients(o, paintInfo, bounds); 967 paintMenuListButtonGradients(o, paintInfo, bounds);
1292 968
1293 // Since we actually know the size of the control here, we restrict the font scale to make sure the arrows will fit vertically in the bounds 969 // Since we actually know the size of the control here, we restrict the font scale to make sure the arrows will fit vertically in the bounds
1294 float fontScale = min(o->style()->fontSize() / baseFontSize, bounds.height() / (baseArrowHeight * 2 + baseSpaceBetweenArrows)); 970 float fontScale = min(o->style()->fontSize() / baseFontSize, bounds.height() / (baseArrowHeight * 2 + baseSpaceBetweenArrows));
1295 float centerY = bounds.y() + bounds.height() / 2.0f; 971 float centerY = bounds.y() + bounds.height() / 2.0f;
1296 float arrowHeight = baseArrowHeight * fontScale; 972 float arrowHeight = baseArrowHeight * fontScale;
1297 float arrowWidth = baseArrowWidth * fontScale; 973 float arrowWidth = baseArrowWidth * fontScale;
1298 float leftEdge = bounds.right() - arrowPaddingRight * o->style()->effectiveZ oom() - arrowWidth; 974 float leftEdge = bounds.right() - arrowPaddingRight * o->style()->effectiveZ oom() - arrowWidth;
1299 float spaceBetweenArrows = baseSpaceBetweenArrows * fontScale; 975 float spaceBetweenArrows = baseSpaceBetweenArrows * fontScale;
1300 976
1301 if (bounds.width() < arrowWidth + arrowPaddingLeft * o->style()->effectiveZo om()) 977 if (bounds.width() < arrowWidth + arrowPaddingLeft * o->style()->effectiveZo om())
1302 return false; 978 return false;
1303 979
980 paintInfo.context->save();
981
1304 paintInfo.context->setFillColor(o->style()->color()); 982 paintInfo.context->setFillColor(o->style()->color());
1305 paintInfo.context->setStrokeStyle(NoStroke); 983 paintInfo.context->setStrokeStyle(NoStroke);
1306 984
1307 FloatPoint arrow1[3]; 985 FloatPoint arrow1[3];
1308 arrow1[0] = FloatPoint(leftEdge, centerY - spaceBetweenArrows / 2.0f); 986 arrow1[0] = FloatPoint(leftEdge, centerY - spaceBetweenArrows / 2.0f);
1309 arrow1[1] = FloatPoint(leftEdge + arrowWidth, centerY - spaceBetweenArrows / 2.0f); 987 arrow1[1] = FloatPoint(leftEdge + arrowWidth, centerY - spaceBetweenArrows / 2.0f);
1310 arrow1[2] = FloatPoint(leftEdge + arrowWidth / 2.0f, centerY - spaceBetweenA rrows / 2.0f - arrowHeight); 988 arrow1[2] = FloatPoint(leftEdge + arrowWidth / 2.0f, centerY - spaceBetweenA rrows / 2.0f - arrowHeight);
1311 989
1312 // Draw the top arrow 990 // Draw the top arrow
1313 paintInfo.context->drawConvexPolygon(3, arrow1, true); 991 paintInfo.context->drawConvexPolygon(3, arrow1, true);
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
1372 // a reasonable control size, but once that control size is determined, we t hrow that font away and use the appropriate 1050 // a reasonable control size, but once that control size is determined, we t hrow that font away and use the appropriate
1373 // system font for the control size instead. 1051 // system font for the control size instead.
1374 setFontFromControlSize(selector, style, controlSize); 1052 setFontFromControlSize(selector, style, controlSize);
1375 1053
1376 style->setBoxShadow(0); 1054 style->setBoxShadow(0);
1377 } 1055 }
1378 1056
1379 int RenderThemeChromiumMac::popupInternalPaddingLeft(RenderStyle* style) const 1057 int RenderThemeChromiumMac::popupInternalPaddingLeft(RenderStyle* style) const
1380 { 1058 {
1381 if (style->appearance() == MenulistPart) 1059 if (style->appearance() == MenulistPart)
1382 return popupButtonPadding(controlSizeForFont(style))[LeftPadding] * styl e->effectiveZoom(); 1060 return popupButtonPadding(controlSizeForFont(style))[leftPadding] * styl e->effectiveZoom();
1383 if (style->appearance() == MenulistButtonPart) 1061 if (style->appearance() == MenulistButtonPart)
1384 return styledPopupPaddingLeft * style->effectiveZoom(); 1062 return styledPopupPaddingLeft * style->effectiveZoom();
1385 return 0; 1063 return 0;
1386 } 1064 }
1387 1065
1388 int RenderThemeChromiumMac::popupInternalPaddingRight(RenderStyle* style) const 1066 int RenderThemeChromiumMac::popupInternalPaddingRight(RenderStyle* style) const
1389 { 1067 {
1390 if (style->appearance() == MenulistPart) 1068 if (style->appearance() == MenulistPart)
1391 return popupButtonPadding(controlSizeForFont(style))[RightPadding] * sty le->effectiveZoom(); 1069 return popupButtonPadding(controlSizeForFont(style))[rightPadding] * sty le->effectiveZoom();
1392 if (style->appearance() == MenulistButtonPart) { 1070 if (style->appearance() == MenulistButtonPart) {
1393 float fontScale = style->fontSize() / baseFontSize; 1071 float fontScale = style->fontSize() / baseFontSize;
1394 float arrowWidth = baseArrowWidth * fontScale; 1072 float arrowWidth = baseArrowWidth * fontScale;
1395 return static_cast<int>(ceilf(arrowWidth + (arrowPaddingLeft + arrowPadd ingRight + paddingBeforeSeparator) * style->effectiveZoom())); 1073 return static_cast<int>(ceilf(arrowWidth + (arrowPaddingLeft + arrowPadd ingRight + paddingBeforeSeparator) * style->effectiveZoom()));
1396 } 1074 }
1397 return 0; 1075 return 0;
1398 } 1076 }
1399 1077
1400 int RenderThemeChromiumMac::popupInternalPaddingTop(RenderStyle* style) const 1078 int RenderThemeChromiumMac::popupInternalPaddingTop(RenderStyle* style) const
1401 { 1079 {
1402 if (style->appearance() == MenulistPart) 1080 if (style->appearance() == MenulistPart)
1403 return popupButtonPadding(controlSizeForFont(style))[TopPadding] * style ->effectiveZoom(); 1081 return popupButtonPadding(controlSizeForFont(style))[topPadding] * style ->effectiveZoom();
1404 if (style->appearance() == MenulistButtonPart) 1082 if (style->appearance() == MenulistButtonPart)
1405 return styledPopupPaddingTop * style->effectiveZoom(); 1083 return styledPopupPaddingTop * style->effectiveZoom();
1406 return 0; 1084 return 0;
1407 } 1085 }
1408 1086
1409 int RenderThemeChromiumMac::popupInternalPaddingBottom(RenderStyle* style) const 1087 int RenderThemeChromiumMac::popupInternalPaddingBottom(RenderStyle* style) const
1410 { 1088 {
1411 if (style->appearance() == MenulistPart) 1089 if (style->appearance() == MenulistPart)
1412 return popupButtonPadding(controlSizeForFont(style))[BottomPadding] * st yle->effectiveZoom(); 1090 return popupButtonPadding(controlSizeForFont(style))[bottomPadding] * st yle->effectiveZoom();
1413 if (style->appearance() == MenulistButtonPart) 1091 if (style->appearance() == MenulistButtonPart)
1414 return styledPopupPaddingBottom * style->effectiveZoom(); 1092 return styledPopupPaddingBottom * style->effectiveZoom();
1415 return 0; 1093 return 0;
1416 } 1094 }
1417 1095
1418 void RenderThemeChromiumMac::adjustMenuListButtonStyle(CSSStyleSelector* selecto r, RenderStyle* style, Element* e) const 1096 void RenderThemeChromiumMac::adjustMenuListButtonStyle(CSSStyleSelector*, Render Style* style, Element*) const
1419 { 1097 {
1420 float fontScale = style->fontSize() / baseFontSize; 1098 float fontScale = style->fontSize() / baseFontSize;
1421 1099
1422 style->resetPadding(); 1100 style->resetPadding();
1423 style->setBorderRadius(IntSize(int(baseBorderRadius + fontScale - 1), int(ba seBorderRadius + fontScale - 1))); // FIXME: Round up? 1101 style->setBorderRadius(IntSize(int(baseBorderRadius + fontScale - 1), int(ba seBorderRadius + fontScale - 1))); // FIXME: Round up?
1424 1102
1425 const int minHeight = 15; 1103 const int minHeight = 15;
1426 style->setMinHeight(Length(minHeight, Fixed)); 1104 style->setMinHeight(Length(minHeight, Fixed));
1427 1105
1428 style->setLineHeight(RenderStyle::initialLineHeight()); 1106 style->setLineHeight(RenderStyle::initialLineHeight());
(...skipping 18 matching lines...) Expand all
1447 { 1125 {
1448 static const IntSize sizes[3] = { IntSize(9, 0), IntSize(5, 0), IntSize(0, 0 ) }; 1126 static const IntSize sizes[3] = { IntSize(9, 0), IntSize(5, 0), IntSize(0, 0 ) };
1449 return sizes; 1127 return sizes;
1450 } 1128 }
1451 1129
1452 int RenderThemeChromiumMac::minimumMenuListSize(RenderStyle* style) const 1130 int RenderThemeChromiumMac::minimumMenuListSize(RenderStyle* style) const
1453 { 1131 {
1454 return sizeForSystemFont(style, menuListSizes()).width(); 1132 return sizeForSystemFont(style, menuListSizes()).width();
1455 } 1133 }
1456 1134
1457 static const int trackWidth = 5; 1135 const int trackWidth = 5;
1458 static const int trackRadius = 2; 1136 const int trackRadius = 2;
1459 1137
1460 void RenderThemeChromiumMac::adjustSliderTrackStyle(CSSStyleSelector* selector, RenderStyle* style, Element* e) const 1138 void RenderThemeChromiumMac::adjustSliderTrackStyle(CSSStyleSelector*, RenderSty le* style, Element*) const
1461 { 1139 {
1462 style->setBoxShadow(0); 1140 style->setBoxShadow(0);
1463 } 1141 }
1464 1142
1465 bool RenderThemeChromiumMac::paintSliderTrack(RenderObject* o, const RenderObjec t::PaintInfo& paintInfo, const IntRect& r) 1143 bool RenderThemeChromiumMac::paintSliderTrack(RenderObject* o, const RenderObjec t::PaintInfo& paintInfo, const IntRect& r)
1466 { 1144 {
1467 IntRect bounds = r; 1145 IntRect bounds = r;
1468 float zoomLevel = o->style()->effectiveZoom(); 1146 float zoomLevel = o->style()->effectiveZoom();
1469 float zoomedTrackWidth = trackWidth * zoomLevel; 1147 float zoomedTrackWidth = trackWidth * zoomLevel;
1470 1148
(...skipping 23 matching lines...) Expand all
1494 IntSize radius(trackRadius, trackRadius); 1172 IntSize radius(trackRadius, trackRadius);
1495 paintInfo.context->addRoundedRectClip(bounds, 1173 paintInfo.context->addRoundedRectClip(bounds,
1496 radius, radius, 1174 radius, radius,
1497 radius, radius); 1175 radius, radius);
1498 CGContextDrawShading(context, mainShading.get()); 1176 CGContextDrawShading(context, mainShading.get());
1499 paintInfo.context->restore(); 1177 paintInfo.context->restore();
1500 1178
1501 return false; 1179 return false;
1502 } 1180 }
1503 1181
1504 void RenderThemeChromiumMac::adjustSliderThumbStyle(CSSStyleSelector* selector, RenderStyle* style, Element* e) const 1182 void RenderThemeChromiumMac::adjustSliderThumbStyle(CSSStyleSelector*, RenderSty le* style, Element*) const
1505 { 1183 {
1506 style->setBoxShadow(0); 1184 style->setBoxShadow(0);
1507 } 1185 }
1508 1186
1509 static const float verticalSliderHeightPadding = 0.1f; 1187 const float verticalSliderHeightPadding = 0.1f;
1510 1188
1511 bool RenderThemeChromiumMac::paintSliderThumb(RenderObject* o, const RenderObjec t::PaintInfo& paintInfo, const IntRect& r) 1189 bool RenderThemeChromiumMac::paintSliderThumb(RenderObject* o, const RenderObjec t::PaintInfo& paintInfo, const IntRect& r)
1512 { 1190 {
1513 ASSERT(o->parent()->isSlider()); 1191 ASSERT(o->parent()->isSlider());
1514 1192
1515 NSSliderCell* sliderThumbCell = o->style()->appearance() == SliderThumbVerti calPart 1193 NSSliderCell* sliderThumbCell = o->style()->appearance() == SliderThumbVerti calPart
1516 ? sliderThumbVertical() 1194 ? sliderThumbVertical()
1517 : sliderThumbHorizontal(); 1195 : sliderThumbHorizontal();
1518 1196
1519 LocalCurrentGraphicsContext localContext(paintInfo.context); 1197 LocalCurrentGraphicsContext localContext(paintInfo.context);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1554 1232
1555 FloatRect unzoomedRect = bounds; 1233 FloatRect unzoomedRect = bounds;
1556 if (zoomLevel != 1.0f) { 1234 if (zoomLevel != 1.0f) {
1557 unzoomedRect.setWidth(unzoomedRect.width() / zoomLevel); 1235 unzoomedRect.setWidth(unzoomedRect.width() / zoomLevel);
1558 unzoomedRect.setHeight(unzoomedRect.height() / zoomLevel); 1236 unzoomedRect.setHeight(unzoomedRect.height() / zoomLevel);
1559 paintInfo.context->translate(unzoomedRect.x(), unzoomedRect.y()); 1237 paintInfo.context->translate(unzoomedRect.x(), unzoomedRect.y());
1560 paintInfo.context->scale(FloatSize(zoomLevel, zoomLevel)); 1238 paintInfo.context->scale(FloatSize(zoomLevel, zoomLevel));
1561 paintInfo.context->translate(-unzoomedRect.x(), -unzoomedRect.y()); 1239 paintInfo.context->translate(-unzoomedRect.x(), -unzoomedRect.y());
1562 } 1240 }
1563 1241
1564 [sliderThumbCell drawWithFrame:FloatRectToNSRect(unzoomedRect) inView:nil]; 1242 [sliderThumbCell drawWithFrame:unzoomedRect inView:FlippedView()];
1565 [sliderThumbCell setControlView:nil]; 1243 [sliderThumbCell setControlView:nil];
1566 1244
1567 paintInfo.context->restore(); 1245 paintInfo.context->restore();
1568 1246
1569 return false; 1247 return false;
1570 } 1248 }
1571 1249
1572 const int sliderThumbWidth = 15;
1573 const int sliderThumbHeight = 15;
1574 const int mediaSliderThumbWidth = 13;
1575 const int mediaSliderThumbHeight = 14;
1576
1577 void RenderThemeChromiumMac::adjustSliderThumbSize(RenderObject* o) const
1578 {
1579 float zoomLevel = o->style()->effectiveZoom();
1580 if (o->style()->appearance() == SliderThumbHorizontalPart || o->style()->app earance() == SliderThumbVerticalPart) {
1581 o->style()->setWidth(Length(static_cast<int>(sliderThumbWidth * zoomLeve l), Fixed));
1582 o->style()->setHeight(Length(static_cast<int>(sliderThumbHeight * zoomLe vel), Fixed));
1583 } else if (o->style()->appearance() == MediaSliderThumbPart) {
1584 o->style()->setWidth(Length(mediaSliderThumbWidth, Fixed));
1585 o->style()->setHeight(Length(mediaSliderThumbHeight, Fixed));
1586 }
1587 }
1588
1589 bool RenderThemeChromiumMac::paintSearchField(RenderObject* o, const RenderObjec t::PaintInfo& paintInfo, const IntRect& r) 1250 bool RenderThemeChromiumMac::paintSearchField(RenderObject* o, const RenderObjec t::PaintInfo& paintInfo, const IntRect& r)
1590 { 1251 {
1591 NSSearchFieldCell* search = this->search(); 1252 NSSearchFieldCell* search = this->search();
1592 LocalCurrentGraphicsContext localContext(paintInfo.context); 1253 LocalCurrentGraphicsContext localContext(paintInfo.context);
1593 1254
1594 setSearchCellState(o, r); 1255 setSearchCellState(o, r);
1595 1256
1596 paintInfo.context->save(); 1257 paintInfo.context->save();
1597 1258
1598 float zoomLevel = o->style()->effectiveZoom(); 1259 float zoomLevel = o->style()->effectiveZoom();
1599 1260
1600 IntRect unzoomedRect = r; 1261 IntRect unzoomedRect = r;
1601 1262
1602 if (zoomLevel != 1.0f) { 1263 if (zoomLevel != 1.0f) {
1603 unzoomedRect.setWidth(unzoomedRect.width() / zoomLevel); 1264 unzoomedRect.setWidth(unzoomedRect.width() / zoomLevel);
1604 unzoomedRect.setHeight(unzoomedRect.height() / zoomLevel); 1265 unzoomedRect.setHeight(unzoomedRect.height() / zoomLevel);
1605 paintInfo.context->translate(unzoomedRect.x(), unzoomedRect.y()); 1266 paintInfo.context->translate(unzoomedRect.x(), unzoomedRect.y());
1606 paintInfo.context->scale(FloatSize(zoomLevel, zoomLevel)); 1267 paintInfo.context->scale(FloatSize(zoomLevel, zoomLevel));
1607 paintInfo.context->translate(-unzoomedRect.x(), -unzoomedRect.y()); 1268 paintInfo.context->translate(-unzoomedRect.x(), -unzoomedRect.y());
1608 } 1269 }
1609 1270
1610 // Set the search button to nil before drawing. Then reset it so we can dra w it later. 1271 // Set the search button to nil before drawing. Then reset it so we can dra w it later.
1611 [search setSearchButtonCell:nil]; 1272 [search setSearchButtonCell:nil];
1612 1273
1613 [search drawWithFrame:NSRect(IntRectToNSRect(unzoomedRect)) inView:nil]; 1274 [search drawWithFrame:NSRect(unzoomedRect) inView:FlippedView()];
1614 #ifdef BUILDING_ON_TIGER 1275 #ifdef BUILDING_ON_TIGER
1615 if ([search showsFirstResponder]) 1276 if ([search showsFirstResponder])
1616 wkDrawTextFieldCellFocusRing(search, NSRect(unzoomedRect)); 1277 wkDrawTextFieldCellFocusRing(search, NSRect(unzoomedRect));
1617 #endif 1278 #endif
1618 1279
1619 [search setControlView:nil]; 1280 [search setControlView:nil];
1620 [search resetSearchButtonCell]; 1281 [search resetSearchButtonCell];
1621 1282
1622 paintInfo.context->restore(); 1283 paintInfo.context->restore();
1623 1284
1624 return false; 1285 return false;
1625 } 1286 }
1626 1287
1627 void RenderThemeChromiumMac::setSearchCellState(RenderObject* o, const IntRect& r) 1288 void RenderThemeChromiumMac::setSearchCellState(RenderObject* o, const IntRect&)
1628 { 1289 {
1629 NSSearchFieldCell* search = this->search(); 1290 NSSearchFieldCell* search = this->search();
1630 1291
1631 [search setControlSize:controlSizeForFont(o->style())]; 1292 [search setControlSize:controlSizeForFont(o->style())];
1632 1293
1633 // Update the various states we respond to. 1294 // Update the various states we respond to.
1634 updateActiveState(search, o); 1295 updateActiveState(search, o);
1635 updateEnabledState(search, o); 1296 updateEnabledState(search, o);
1636 updateFocusedState(search, o); 1297 updateFocusedState(search, o);
1637 } 1298 }
1638 1299
1639 const IntSize* RenderThemeChromiumMac::searchFieldSizes() const 1300 const IntSize* RenderThemeChromiumMac::searchFieldSizes() const
1640 { 1301 {
1641 static const IntSize sizes[3] = { IntSize(0, 22), IntSize(0, 19), IntSize(0, 17) }; 1302 static const IntSize sizes[3] = { IntSize(0, 22), IntSize(0, 19), IntSize(0, 17) };
1642 return sizes; 1303 return sizes;
1643 } 1304 }
1644 1305
1645 void RenderThemeChromiumMac::setSearchFieldSize(RenderStyle* style) const 1306 void RenderThemeChromiumMac::setSearchFieldSize(RenderStyle* style) const
1646 { 1307 {
1647 // If the width and height are both specified, then we have nothing to do. 1308 // If the width and height are both specified, then we have nothing to do.
1648 if (!style->width().isIntrinsicOrAuto() && !style->height().isAuto()) 1309 if (!style->width().isIntrinsicOrAuto() && !style->height().isAuto())
1649 return; 1310 return;
1650 1311
1651 // Use the font size to determine the intrinsic width of the control. 1312 // Use the font size to determine the intrinsic width of the control.
1652 setSizeFromFont(style, searchFieldSizes()); 1313 setSizeFromFont(style, searchFieldSizes());
1653 } 1314 }
1654 1315
1655 void RenderThemeChromiumMac::adjustSearchFieldStyle(CSSStyleSelector* selector, RenderStyle* style, Element* e) const 1316 void RenderThemeChromiumMac::adjustSearchFieldStyle(CSSStyleSelector* selector, RenderStyle* style, Element*) const
1656 { 1317 {
1657 // Override border. 1318 // Override border.
1658 style->resetBorder(); 1319 style->resetBorder();
1659 const short borderWidth = 2 * style->effectiveZoom(); 1320 const short borderWidth = 2 * style->effectiveZoom();
1660 style->setBorderLeftWidth(borderWidth); 1321 style->setBorderLeftWidth(borderWidth);
1661 style->setBorderLeftStyle(INSET); 1322 style->setBorderLeftStyle(INSET);
1662 style->setBorderRightWidth(borderWidth); 1323 style->setBorderRightWidth(borderWidth);
1663 style->setBorderRightStyle(INSET); 1324 style->setBorderRightStyle(INSET);
1664 style->setBorderBottomWidth(borderWidth); 1325 style->setBorderBottomWidth(borderWidth);
1665 style->setBorderBottomStyle(INSET); 1326 style->setBorderBottomStyle(INSET);
(...skipping 12 matching lines...) Expand all
1678 style->setPaddingBottom(Length(padding, Fixed)); 1339 style->setPaddingBottom(Length(padding, Fixed));
1679 1340
1680 NSControlSize controlSize = controlSizeForFont(style); 1341 NSControlSize controlSize = controlSizeForFont(style);
1681 setFontFromControlSize(selector, style, controlSize); 1342 setFontFromControlSize(selector, style, controlSize);
1682 1343
1683 style->setBoxShadow(0); 1344 style->setBoxShadow(0);
1684 } 1345 }
1685 1346
1686 bool RenderThemeChromiumMac::paintSearchFieldCancelButton(RenderObject* o, const RenderObject::PaintInfo& paintInfo, const IntRect& r) 1347 bool RenderThemeChromiumMac::paintSearchFieldCancelButton(RenderObject* o, const RenderObject::PaintInfo& paintInfo, const IntRect& r)
1687 { 1348 {
1688 LocalCurrentGraphicsContext localContext(paintInfo.context); 1349 Node* input = o->node()->shadowAncestorNode();
1350 if (!input->renderer()->isBox())
1351 return false;
1689 1352
1690 Node* input = o->node()->shadowAncestorNode();
1691 setSearchCellState(input->renderer(), r); 1353 setSearchCellState(input->renderer(), r);
1692 1354
1693 NSSearchFieldCell* search = this->search(); 1355 NSSearchFieldCell* search = this->search();
1694 1356
1695 updateActiveState([search cancelButtonCell], o); 1357 updateActiveState([search cancelButtonCell], o);
1696 updatePressedState([search cancelButtonCell], o); 1358 updatePressedState([search cancelButtonCell], o);
1697 1359
1698 paintInfo.context->save(); 1360 paintInfo.context->save();
1699 1361
1700 float zoomLevel = o->style()->effectiveZoom(); 1362 float zoomLevel = o->style()->effectiveZoom();
1701 1363
1702 NSRect bounds = [search cancelButtonRectForBounds:NSRect(IntRectToNSRect(inp ut->renderer()->absoluteBoundingBoxRect()))]; 1364 FloatRect localBounds = [search cancelButtonRectForBounds:NSRect(input->rend erBox()->borderBoxRect())];
1703 1365 localBounds = convertToPaintingRect(input->renderer(), o, localBounds, r);
1704 IntRect unzoomedRect(NSRectToIntRect(bounds)); 1366
1367 FloatRect unzoomedRect(localBounds);
1705 if (zoomLevel != 1.0f) { 1368 if (zoomLevel != 1.0f) {
1706 unzoomedRect.setWidth(unzoomedRect.width() / zoomLevel); 1369 unzoomedRect.setWidth(unzoomedRect.width() / zoomLevel);
1707 unzoomedRect.setHeight(unzoomedRect.height() / zoomLevel); 1370 unzoomedRect.setHeight(unzoomedRect.height() / zoomLevel);
1708 paintInfo.context->translate(unzoomedRect.x(), unzoomedRect.y()); 1371 paintInfo.context->translate(unzoomedRect.x(), unzoomedRect.y());
1709 paintInfo.context->scale(FloatSize(zoomLevel, zoomLevel)); 1372 paintInfo.context->scale(FloatSize(zoomLevel, zoomLevel));
1710 paintInfo.context->translate(-unzoomedRect.x(), -unzoomedRect.y()); 1373 paintInfo.context->translate(-unzoomedRect.x(), -unzoomedRect.y());
1711 } 1374 }
1712 1375
1713 [[search cancelButtonCell] drawWithFrame:IntRectToNSRect(unzoomedRect) inVie w:nil]; 1376 [[search cancelButtonCell] drawWithFrame:unzoomedRect inView:FlippedView()];
1714 [[search cancelButtonCell] setControlView:nil]; 1377 [[search cancelButtonCell] setControlView:nil];
1715 1378
1716 paintInfo.context->restore(); 1379 paintInfo.context->restore();
1717 return false; 1380 return false;
1718 } 1381 }
1719 1382
1720 const IntSize* RenderThemeChromiumMac::cancelButtonSizes() const 1383 const IntSize* RenderThemeChromiumMac::cancelButtonSizes() const
1721 { 1384 {
1722 static const IntSize sizes[3] = { IntSize(16, 13), IntSize(13, 11), IntSize( 13, 9) }; 1385 static const IntSize sizes[3] = { IntSize(16, 13), IntSize(13, 11), IntSize( 13, 9) };
1723 return sizes; 1386 return sizes;
1724 } 1387 }
1725 1388
1726 void RenderThemeChromiumMac::adjustSearchFieldCancelButtonStyle(CSSStyleSelector * selector, RenderStyle* style, Element* e) const 1389 void RenderThemeChromiumMac::adjustSearchFieldCancelButtonStyle(CSSStyleSelector *, RenderStyle* style, Element*) const
1727 { 1390 {
1728 IntSize size = sizeForSystemFont(style, cancelButtonSizes()); 1391 IntSize size = sizeForSystemFont(style, cancelButtonSizes());
1729 style->setWidth(Length(size.width(), Fixed)); 1392 style->setWidth(Length(size.width(), Fixed));
1730 style->setHeight(Length(size.height(), Fixed)); 1393 style->setHeight(Length(size.height(), Fixed));
1731 style->setBoxShadow(0); 1394 style->setBoxShadow(0);
1732 } 1395 }
1733 1396
1734 const IntSize* RenderThemeChromiumMac::resultsButtonSizes() const 1397 const IntSize* RenderThemeChromiumMac::resultsButtonSizes() const
1735 { 1398 {
1736 static const IntSize sizes[3] = { IntSize(19, 13), IntSize(17, 11), IntSize( 17, 9) }; 1399 static const IntSize sizes[3] = { IntSize(19, 13), IntSize(17, 11), IntSize( 17, 9) };
1737 return sizes; 1400 return sizes;
1738 } 1401 }
1739 1402
1740 static const int emptyResultsOffset = 9; 1403 const int emptyResultsOffset = 9;
1741 void RenderThemeChromiumMac::adjustSearchFieldDecorationStyle(CSSStyleSelector* selector, RenderStyle* style, Element* e) const 1404 void RenderThemeChromiumMac::adjustSearchFieldDecorationStyle(CSSStyleSelector*, RenderStyle* style, Element*) const
1742 { 1405 {
1743 IntSize size = sizeForSystemFont(style, resultsButtonSizes()); 1406 IntSize size = sizeForSystemFont(style, resultsButtonSizes());
1744 style->setWidth(Length(size.width() - emptyResultsOffset, Fixed)); 1407 style->setWidth(Length(size.width() - emptyResultsOffset, Fixed));
1745 style->setHeight(Length(size.height(), Fixed)); 1408 style->setHeight(Length(size.height(), Fixed));
1746 style->setBoxShadow(0); 1409 style->setBoxShadow(0);
1747 } 1410 }
1748 1411
1749 bool RenderThemeChromiumMac::paintSearchFieldDecoration(RenderObject* o, const R enderObject::PaintInfo& paintInfo, const IntRect& r) 1412 bool RenderThemeChromiumMac::paintSearchFieldDecoration(RenderObject*, const Ren derObject::PaintInfo&, const IntRect&)
1750 { 1413 {
1751 return false; 1414 return false;
1752 } 1415 }
1753 1416
1754 void RenderThemeChromiumMac::adjustSearchFieldResultsDecorationStyle(CSSStyleSel ector* selector, RenderStyle* style, Element* e) const 1417 void RenderThemeChromiumMac::adjustSearchFieldResultsDecorationStyle(CSSStyleSel ector*, RenderStyle* style, Element*) const
1755 { 1418 {
1756 IntSize size = sizeForSystemFont(style, resultsButtonSizes()); 1419 IntSize size = sizeForSystemFont(style, resultsButtonSizes());
1757 style->setWidth(Length(size.width(), Fixed)); 1420 style->setWidth(Length(size.width(), Fixed));
1758 style->setHeight(Length(size.height(), Fixed)); 1421 style->setHeight(Length(size.height(), Fixed));
1759 style->setBoxShadow(0); 1422 style->setBoxShadow(0);
1760 } 1423 }
1761 1424
1762 bool RenderThemeChromiumMac::paintSearchFieldResultsDecoration(RenderObject* o, const RenderObject::PaintInfo& paintInfo, const IntRect& r) 1425 bool RenderThemeChromiumMac::paintSearchFieldResultsDecoration(RenderObject* o, const RenderObject::PaintInfo& paintInfo, const IntRect& r)
1763 { 1426 {
1764 LocalCurrentGraphicsContext localContext(paintInfo.context); 1427 Node* input = o->node()->shadowAncestorNode();
1428 if (!input->renderer()->isBox())
1429 return false;
1765 1430
1766 Node* input = o->node()->shadowAncestorNode();
1767 setSearchCellState(input->renderer(), r); 1431 setSearchCellState(input->renderer(), r);
1768 1432
1769 NSSearchFieldCell* search = this->search(); 1433 NSSearchFieldCell* search = this->search();
1770 1434
1771 updateActiveState([search searchButtonCell], o); 1435 updateActiveState([search searchButtonCell], o);
1772 1436
1773 if ([search searchMenuTemplate] != nil) 1437 if ([search searchMenuTemplate] != nil)
1774 [search setSearchMenuTemplate:nil]; 1438 [search setSearchMenuTemplate:nil];
1775 1439
1776 NSRect bounds = [search searchButtonRectForBounds:NSRect(IntRectToNSRect(inp ut->renderer()->absoluteBoundingBoxRect()))]; 1440 FloatRect localBounds = [search searchButtonRectForBounds:NSRect(input->rend erBox()->borderBoxRect())];
1777 [[search searchButtonCell] drawWithFrame:bounds inView:nil]; 1441 localBounds = convertToPaintingRect(input->renderer(), o, localBounds, r);
1442
1443 [[search searchButtonCell] drawWithFrame:localBounds inView:FlippedView()];
1778 [[search searchButtonCell] setControlView:nil]; 1444 [[search searchButtonCell] setControlView:nil];
1779 return false; 1445 return false;
1780 } 1446 }
1781 1447
1782 static const int resultsArrowWidth = 5; 1448 const int resultsArrowWidth = 5;
1783 void RenderThemeChromiumMac::adjustSearchFieldResultsButtonStyle(CSSStyleSelecto r* selector, RenderStyle* style, Element* e) const 1449 void RenderThemeChromiumMac::adjustSearchFieldResultsButtonStyle(CSSStyleSelecto r*, RenderStyle* style, Element*) const
1784 { 1450 {
1785 IntSize size = sizeForSystemFont(style, resultsButtonSizes()); 1451 IntSize size = sizeForSystemFont(style, resultsButtonSizes());
1786 style->setWidth(Length(size.width() + resultsArrowWidth, Fixed)); 1452 style->setWidth(Length(size.width() + resultsArrowWidth, Fixed));
1787 style->setHeight(Length(size.height(), Fixed)); 1453 style->setHeight(Length(size.height(), Fixed));
1788 style->setBoxShadow(0); 1454 style->setBoxShadow(0);
1789 } 1455 }
1790 1456
1791 bool RenderThemeChromiumMac::paintSearchFieldResultsButton(RenderObject* o, cons t RenderObject::PaintInfo& paintInfo, const IntRect& r) 1457 bool RenderThemeChromiumMac::paintSearchFieldResultsButton(RenderObject* o, cons t RenderObject::PaintInfo& paintInfo, const IntRect& r)
1792 { 1458 {
1793 LocalCurrentGraphicsContext localContext(paintInfo.context); 1459 Node* input = o->node()->shadowAncestorNode();
1460 if (!input->renderer()->isBox())
1461 return false;
1794 1462
1795 Node* input = o->node()->shadowAncestorNode();
1796 setSearchCellState(input->renderer(), r); 1463 setSearchCellState(input->renderer(), r);
1797 1464
1798 NSSearchFieldCell* search = this->search(); 1465 NSSearchFieldCell* search = this->search();
1799 1466
1800 updateActiveState([search searchButtonCell], o); 1467 updateActiveState([search searchButtonCell], o);
1801 1468
1802 if (![search searchMenuTemplate]) 1469 if (![search searchMenuTemplate])
1803 [search setSearchMenuTemplate:searchMenuTemplate()]; 1470 [search setSearchMenuTemplate:searchMenuTemplate()];
1804 1471
1805 paintInfo.context->save(); 1472 paintInfo.context->save();
1806 1473
1807 float zoomLevel = o->style()->effectiveZoom(); 1474 float zoomLevel = o->style()->effectiveZoom();
1808 1475
1809 NSRect bounds = [search searchButtonRectForBounds:NSRect(IntRectToNSRect(inp ut->renderer()->absoluteBoundingBoxRect()))]; 1476 FloatRect localBounds = [search searchButtonRectForBounds:NSRect(input->rend erBox()->borderBoxRect())];
1477 localBounds = convertToPaintingRect(input->renderer(), o, localBounds, r);
1810 1478
1811 IntRect unzoomedRect(NSRectToIntRect(bounds)); 1479 IntRect unzoomedRect(localBounds);
1812 if (zoomLevel != 1.0f) { 1480 if (zoomLevel != 1.0f) {
1813 unzoomedRect.setWidth(unzoomedRect.width() / zoomLevel); 1481 unzoomedRect.setWidth(unzoomedRect.width() / zoomLevel);
1814 unzoomedRect.setHeight(unzoomedRect.height() / zoomLevel); 1482 unzoomedRect.setHeight(unzoomedRect.height() / zoomLevel);
1815 paintInfo.context->translate(unzoomedRect.x(), unzoomedRect.y()); 1483 paintInfo.context->translate(unzoomedRect.x(), unzoomedRect.y());
1816 paintInfo.context->scale(FloatSize(zoomLevel, zoomLevel)); 1484 paintInfo.context->scale(FloatSize(zoomLevel, zoomLevel));
1817 paintInfo.context->translate(-unzoomedRect.x(), -unzoomedRect.y()); 1485 paintInfo.context->translate(-unzoomedRect.x(), -unzoomedRect.y());
1818 } 1486 }
1819 1487
1820 [[search searchButtonCell] drawWithFrame:IntRectToNSRect(unzoomedRect) inVie w:nil]; 1488 [[search searchButtonCell] drawWithFrame:unzoomedRect inView:FlippedView()];
1821 [[search searchButtonCell] setControlView:nil]; 1489 [[search searchButtonCell] setControlView:nil];
1822 1490
1823 paintInfo.context->restore(); 1491 paintInfo.context->restore();
1824 1492
1825 return false; 1493 return false;
1826 } 1494 }
1827 1495
1828 #if ENABLE(VIDEO) 1496 #if ENABLE(VIDEO)
1829 // FIXME: This enum is lifted from RenderThemeMac.mm We need to decide which th eme to use for the default controls, or decide to avoid wkDrawMediaUIPart and re nder our own.
1830 typedef enum { 1497 typedef enum {
1831 MediaControllerThemeClassic = 1, 1498 MediaControllerThemeClassic = 1,
1832 MediaControllerThemeQT = 2 1499 MediaControllerThemeQT = 2
1833 } MediaControllerThemeStyle; 1500 } MediaControllerThemeStyle;
1834 1501
1835 enum WKMediaControllerThemeState { 1502 static int mediaControllerTheme()
1503 {
1504 static const long minimumQuickTimeVersion = 0x07630000; // 7.6.3
1505 static SInt32 quickTimeVersion = 0;
1506 static int controllerTheme = -1;
1507
1508 if (controllerTheme != -1)
1509 return controllerTheme;
1510
1511 controllerTheme = MediaControllerThemeClassic;
1512
1513 if (!quickTimeVersion) {
1514 OSErr err;
1515 err = Gestalt(gestaltQuickTime, &quickTimeVersion);
1516 if (err != noErr)
1517 return controllerTheme;
1518 }
1519 if (quickTimeVersion < minimumQuickTimeVersion)
1520 return controllerTheme;
1521
1522 Boolean validKey;
1523 Boolean useQTMediaUI = CFPreferencesGetAppBooleanValue(CFSTR("UseQuickTimeMe diaUI"), CFSTR("com.apple.WebCore"), &validKey);
1524
1525 #if !defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD)
1526 if (validKey && !useQTMediaUI)
1527 return controllerTheme;
1528 #else
1529 if (!validKey || !useQTMediaUI)
1530 return controllerTheme;
1531 #endif
1532
1533 controllerTheme = MediaControllerThemeQT;
1534 return controllerTheme;
1535 }
1536 #endif
1537
1538 const int sliderThumbWidth = 15;
1539 const int sliderThumbHeight = 15;
1540 const int mediaSliderThumbWidth = 13;
1541 const int mediaSliderThumbHeight = 14;
1542
1543 void RenderThemeChromiumMac::adjustSliderThumbSize(RenderObject* o) const
1544 {
1545 float zoomLevel = o->style()->effectiveZoom();
1546 if (o->style()->appearance() == SliderThumbHorizontalPart || o->style()->app earance() == SliderThumbVerticalPart) {
1547 o->style()->setWidth(Length(static_cast<int>(sliderThumbWidth * zoomLeve l), Fixed));
1548 o->style()->setHeight(Length(static_cast<int>(sliderThumbHeight * zoomLe vel), Fixed));
1549 }
1550
1551 #if ENABLE(VIDEO)
1552 else if (o->style()->appearance() == MediaSliderThumbPart) {
1553 int width = mediaSliderThumbWidth;
1554 int height = mediaSliderThumbHeight;
1555
1556 if (mediaControllerTheme() == MediaControllerThemeQT) {
1557 CGSize size;
1558
1559 wkMeasureMediaUIPart(MediaSliderThumb, MediaControllerThemeQT, NULL, &size);
1560 width = size.width;
1561 height = size.height;
1562 }
1563
1564 o->style()->setWidth(Length(static_cast<int>(width * zoomLevel), Fixed)) ;
1565 o->style()->setHeight(Length(static_cast<int>(height * zoomLevel), Fixed ));
1566 }
1567 #endif
1568 }
1569
1570
1571 #if ENABLE(VIDEO)
1572
1573 enum WKMediaControllerThemeState {
1836 MediaUIPartDisabledFlag = 1 << 0, 1574 MediaUIPartDisabledFlag = 1 << 0,
1837 MediaUIPartPressedFlag = 1 << 1, 1575 MediaUIPartPressedFlag = 1 << 1,
1838 MediaUIPartDrawEndCapsFlag = 1 << 3, 1576 MediaUIPartDrawEndCapsFlag = 1 << 3,
1839 }; 1577 };
1840 #endif 1578
1579 static unsigned getMediaUIPartStateFlags(Node* node)
1580 {
1581 unsigned flags = 0;
1582
1583 if (node->disabled())
1584 flags |= MediaUIPartDisabledFlag;
1585 else if (node->active())
1586 flags |= MediaUIPartPressedFlag;
1587 return flags;
1588 }
1589
1590 // Utility to scale when the UI part are not scaled by wkDrawMediaUIPart
1591 static FloatRect getUnzoomedRectAndAdjustCurrentContext(RenderObject* o, const R enderObject::PaintInfo& paintInfo, const IntRect &originalRect)
1592 {
1593 float zoomLevel = o->style()->effectiveZoom();
1594 FloatRect unzoomedRect(originalRect);
1595 if (zoomLevel != 1.0f && mediaControllerTheme() == MediaControllerThemeQT) {
1596 unzoomedRect.setWidth(unzoomedRect.width() / zoomLevel);
1597 unzoomedRect.setHeight(unzoomedRect.height() / zoomLevel);
1598 paintInfo.context->translate(unzoomedRect.x(), unzoomedRect.y());
1599 paintInfo.context->scale(FloatSize(zoomLevel, zoomLevel));
1600 paintInfo.context->translate(-unzoomedRect.x(), -unzoomedRect.y());
1601 }
1602 return unzoomedRect;
1603 }
1604
1841 1605
1842 bool RenderThemeChromiumMac::paintMediaFullscreenButton(RenderObject* o, const R enderObject::PaintInfo& paintInfo, const IntRect& r) 1606 bool RenderThemeChromiumMac::paintMediaFullscreenButton(RenderObject* o, const R enderObject::PaintInfo& paintInfo, const IntRect& r)
1843 { 1607 {
1844 #if ENABLE(VIDEO)
1845 Node* node = o->node(); 1608 Node* node = o->node();
1846 if (!node) 1609 if (!node)
1847 return false; 1610 return false;
1848 1611
1849 LocalCurrentGraphicsContext localContext(paintInfo.context); 1612 LocalCurrentGraphicsContext localContext(paintInfo.context);
1850 wkDrawMediaUIPart(MediaFullscreenButton, MediaControllerThemeClassic, paint Info.context->platformContext(), r, 1613 wkDrawMediaUIPart(MediaFullscreenButton, mediaControllerTheme(), paintInfo.c ontext->platformContext(), r, getMediaUIPartStateFlags(node));
1851 node->active() ? MediaUIPartPressedFlag : 0);
1852 #endif
1853 return false; 1614 return false;
1854 } 1615 }
1855 1616
1856 bool RenderThemeChromiumMac::paintMediaMuteButton(RenderObject* o, const RenderO bject::PaintInfo& paintInfo, const IntRect& r) 1617 bool RenderThemeChromiumMac::paintMediaMuteButton(RenderObject* o, const RenderO bject::PaintInfo& paintInfo, const IntRect& r)
1857 { 1618 {
1858 #if ENABLE(VIDEO)
1859 Node* node = o->node(); 1619 Node* node = o->node();
1860 Node* mediaNode = node ? node->shadowAncestorNode() : 0; 1620 Node* mediaNode = node ? node->shadowAncestorNode() : 0;
1861 if (!mediaNode || (!mediaNode->hasTagName(videoTag) && !mediaNode->hasTagNam e(audioTag))) 1621 if (!mediaNode || (!mediaNode->hasTagName(videoTag) && !mediaNode->hasTagNam e(audioTag)))
1862 return false; 1622 return false;
1863 1623
1864 HTMLMediaElement* mediaElement = static_cast<HTMLMediaElement*>(mediaNode); 1624 if (MediaControlPlayButtonElement* btn = static_cast<MediaControlPlayButtonE lement*>(node)) {
1865 if (!mediaElement) 1625 LocalCurrentGraphicsContext localContext(paintInfo.context);
1866 return false; 1626 wkDrawMediaUIPart(btn->displayType(), mediaControllerTheme(), paintInfo. context->platformContext(), r, getMediaUIPartStateFlags(node));
1867 1627
1868 LocalCurrentGraphicsContext localContext(paintInfo.context); 1628 }
1869 wkDrawMediaUIPart(mediaElement->muted() ? MediaUnMuteButton : MediaMuteButto n, MediaControllerThemeClassic, paintInfo.context->platformContext(), r,
1870 node->active() ? MediaUIPartPressedFlag : 0);
1871 #endif
1872 return false; 1629 return false;
1873 } 1630 }
1874 1631
1875 bool RenderThemeChromiumMac::paintMediaPlayButton(RenderObject* o, const RenderO bject::PaintInfo& paintInfo, const IntRect& r) 1632 bool RenderThemeChromiumMac::paintMediaPlayButton(RenderObject* o, const RenderO bject::PaintInfo& paintInfo, const IntRect& r)
1876 { 1633 {
1877 #if ENABLE(VIDEO)
1878 Node* node = o->node(); 1634 Node* node = o->node();
1879 Node* mediaNode = node ? node->shadowAncestorNode() : 0; 1635 Node* mediaNode = node ? node->shadowAncestorNode() : 0;
1880 if (!mediaNode || (!mediaNode->hasTagName(videoTag) && !mediaNode->hasTagNam e(audioTag))) 1636 if (!mediaNode || (!mediaNode->hasTagName(videoTag) && !mediaNode->hasTagNam e(audioTag)))
1881 return false; 1637 return false;
1882 1638
1883 HTMLMediaElement* mediaElement = static_cast<HTMLMediaElement*>(mediaNode); 1639 if (MediaControlPlayButtonElement* btn = static_cast<MediaControlPlayButtonE lement*>(node)) {
1884 if (!mediaElement) 1640 LocalCurrentGraphicsContext localContext(paintInfo.context);
1885 return false; 1641 wkDrawMediaUIPart(btn->displayType(), mediaControllerTheme(), paintInfo. context->platformContext(), r, getMediaUIPartStateFlags(node));
1886 1642 }
1887 LocalCurrentGraphicsContext localContext(paintInfo.context);
1888 wkDrawMediaUIPart(mediaElement->canPlay() ? MediaPlayButton : MediaPauseButt on, MediaControllerThemeClassic, paintInfo.context->platformContext(), r,
1889 node->active() ? MediaUIPartPressedFlag : 0);
1890 #endif
1891 return false; 1643 return false;
1892 } 1644 }
1893 1645
1894 bool RenderThemeChromiumMac::paintMediaSeekBackButton(RenderObject* o, const Ren derObject::PaintInfo& paintInfo, const IntRect& r) 1646 bool RenderThemeChromiumMac::paintMediaSeekBackButton(RenderObject* o, const Ren derObject::PaintInfo& paintInfo, const IntRect& r)
1895 { 1647 {
1896 #if ENABLE(VIDEO)
1897 Node* node = o->node(); 1648 Node* node = o->node();
1898 if (!node) 1649 if (!node)
1899 return false; 1650 return false;
1900 1651
1901 LocalCurrentGraphicsContext localContext(paintInfo.context); 1652 LocalCurrentGraphicsContext localContext(paintInfo.context);
1902 wkDrawMediaUIPart(MediaSeekBackButton, MediaControllerThemeClassic, paintInf o.context->platformContext(), r, 1653 wkDrawMediaUIPart(MediaSeekBackButton, mediaControllerTheme(), paintInfo.con text->platformContext(), r, getMediaUIPartStateFlags(node));
1903 node->active() ? MediaUIPartPressedFlag : 0);
1904 #endif
1905 return false; 1654 return false;
1906 } 1655 }
1907 1656
1908 bool RenderThemeChromiumMac::paintMediaSeekForwardButton(RenderObject* o, const RenderObject::PaintInfo& paintInfo, const IntRect& r) 1657 bool RenderThemeChromiumMac::paintMediaSeekForwardButton(RenderObject* o, const RenderObject::PaintInfo& paintInfo, const IntRect& r)
1909 { 1658 {
1910 #if ENABLE(VIDEO)
1911 Node* node = o->node(); 1659 Node* node = o->node();
1912 if (!node) 1660 if (!node)
1913 return false; 1661 return false;
1914 1662
1915 LocalCurrentGraphicsContext localContext(paintInfo.context); 1663 LocalCurrentGraphicsContext localContext(paintInfo.context);
1916 wkDrawMediaUIPart(MediaSeekForwardButton, MediaControllerThemeClassic, paint Info.context->platformContext(), r, 1664 wkDrawMediaUIPart(MediaSeekForwardButton, mediaControllerTheme(), paintInfo. context->platformContext(), r, getMediaUIPartStateFlags(node));
1917 node->active() ? MediaUIPartPressedFlag : 0);
1918 #endif
1919 return false; 1665 return false;
1920 } 1666 }
1921 1667
1922 bool RenderThemeChromiumMac::paintMediaSliderTrack(RenderObject* o, const Render Object::PaintInfo& paintInfo, const IntRect& r) 1668 bool RenderThemeChromiumMac::paintMediaSliderTrack(RenderObject* o, const Render Object::PaintInfo& paintInfo, const IntRect& r)
1923 { 1669 {
1924 #if ENABLE(VIDEO)
1925 Node* node = o->node(); 1670 Node* node = o->node();
1926 Node* mediaNode = node ? node->shadowAncestorNode() : 0; 1671 Node* mediaNode = node ? node->shadowAncestorNode() : 0;
1927 if (!mediaNode || (!mediaNode->hasTagName(videoTag) && !mediaNode->hasTagNam e(audioTag))) 1672 if (!mediaNode || (!mediaNode->hasTagName(videoTag) && !mediaNode->hasTagNam e(audioTag)))
1928 return false; 1673 return false;
1929 1674
1930 HTMLMediaElement* mediaElement = static_cast<HTMLMediaElement*>(mediaNode); 1675 HTMLMediaElement* mediaElement = static_cast<HTMLMediaElement*>(mediaNode);
1931 if (!mediaElement) 1676 if (!mediaElement)
1932 return false; 1677 return false;
1933 1678
1934 float timeLoaded = 0; 1679 float timeLoaded = 0;
1935 float currentTime = 0; 1680 float currentTime = 0;
1936 float duration = 0; 1681 float duration = 0;
1937 if (MediaPlayer* player = mediaElement->player()) { 1682 if (MediaPlayer* player = mediaElement->player()) {
1938 duration = player->duration(); 1683 duration = player->duration();
1939 timeLoaded = player->maxTimeBuffered(); 1684 timeLoaded = player->maxTimeBuffered();
1940 currentTime = player->currentTime(); 1685 currentTime = player->currentTime();
1941 } 1686 }
1942 1687
1943 bool shouldDrawEndCaps = !toRenderMedia(mediaElement->renderer())->shouldSho wTimeDisplayControls(); 1688 paintInfo.context->save();
1944 wkDrawMediaSliderTrack(MediaControllerThemeClassic, paintInfo.context->platf ormContext(), r, timeLoaded, currentTime, duration, shouldDrawEndCaps ? MediaUIP artDrawEndCapsFlag : 0); 1689 FloatRect unzoomedRect = getUnzoomedRectAndAdjustCurrentContext(o, paintInfo , r);
1945 #endif 1690 wkDrawMediaSliderTrack(mediaControllerTheme(), paintInfo.context->platformCo ntext(), unzoomedRect,
1691 timeLoaded, currentTime, duration, getMediaUIPartStateFlags(node));
1692
1693 paintInfo.context->restore();
1946 return false; 1694 return false;
1947 } 1695 }
1948 1696
1949 bool RenderThemeChromiumMac::paintMediaSliderThumb(RenderObject* o, const Render Object::PaintInfo& paintInfo, const IntRect& r) 1697 bool RenderThemeChromiumMac::paintMediaSliderThumb(RenderObject* o, const Render Object::PaintInfo& paintInfo, const IntRect& r)
1950 { 1698 {
1951 #if ENABLE(VIDEO)
1952 Node* node = o->node(); 1699 Node* node = o->node();
1953 if (!node) 1700 if (!node)
1954 return false; 1701 return false;
1955 1702
1956 LocalCurrentGraphicsContext localContext(paintInfo.context); 1703 LocalCurrentGraphicsContext localContext(paintInfo.context);
1957 wkDrawMediaUIPart(MediaSliderThumb, MediaControllerThemeClassic, paintInfo.c ontext->platformContext(), r, 1704 wkDrawMediaUIPart(MediaSliderThumb, mediaControllerTheme(), paintInfo.contex t->platformContext(), r, getMediaUIPartStateFlags(node));
1958 node->active() ? MediaUIPartPressedFlag : 0); 1705 return false;
1959 #endif 1706 }
1707
1708 bool RenderThemeChromiumMac::paintMediaRewindButton(RenderObject* o, const Rende rObject::PaintInfo& paintInfo, const IntRect& r)
1709 {
1710 Node* node = o->node();
1711 if (!node)
1712 return false;
1713
1714 LocalCurrentGraphicsContext localContext(paintInfo.context);
1715 wkDrawMediaUIPart(MediaRewindButton, mediaControllerTheme(), paintInfo.conte xt->platformContext(), r, getMediaUIPartStateFlags(node));
1960 return false; 1716 return false;
1961 } 1717 }
1962 1718
1963 // FIXME: This used to be in the upstream version until it was converted to the new theme API in r37731. 1719 bool RenderThemeChromiumMac::paintMediaReturnToRealtimeButton(RenderObject* o, c onst RenderObject::PaintInfo& paintInfo, const IntRect& r)
1964 NSButtonCell* RenderThemeChromiumMac::checkbox() const
1965 { 1720 {
1966 if (!m_checkbox) { 1721 Node* node = o->node();
1967 m_checkbox.adoptNS([[NSButtonCell alloc] init]); 1722 if (!node)
1968 [m_checkbox.get() setButtonType:NSSwitchButton]; 1723 return false;
1969 [m_checkbox.get() setTitle:nil];
1970 [m_checkbox.get() setAllowsMixedState:YES];
1971 [m_checkbox.get() setFocusRingType:NSFocusRingTypeExterior];
1972 }
1973 1724
1974 return m_checkbox.get(); 1725 LocalCurrentGraphicsContext localContext(paintInfo.context);
1726 wkDrawMediaUIPart(MediaReturnToRealtimeButton, mediaControllerTheme(), paint Info.context->platformContext(), r, getMediaUIPartStateFlags(node));
1727 return false;
1975 } 1728 }
1976 1729
1977 // FIXME: This used to be in the upstream version until it was converted to the new theme API in r37731. 1730
1978 NSButtonCell* RenderThemeChromiumMac::radio() const 1731 bool RenderThemeChromiumMac::paintMediaControlsBackground(RenderObject* o, const RenderObject::PaintInfo& paintInfo, const IntRect& r)
1979 { 1732 {
1980 if (!m_radio) { 1733 Node* node = o->node();
1981 m_radio.adoptNS([[NSButtonCell alloc] init]); 1734 if (!node)
1982 [m_radio.get() setButtonType:NSRadioButton]; 1735 return false;
1983 [m_radio.get() setTitle:nil]; 1736
1984 [m_radio.get() setFocusRingType:NSFocusRingTypeExterior]; 1737 LocalCurrentGraphicsContext localContext(paintInfo.context);
1985 } 1738 wkDrawMediaUIPart(MediaTimelineContainer, mediaControllerTheme(), paintInfo. context->platformContext(), r, getMediaUIPartStateFlags(node));
1986 1739 return false;
1987 return m_radio.get();
1988 } 1740 }
1989 1741
1990 // FIXME: This used to be in the upstream version until it was converted to the new theme API in r37731. 1742 bool RenderThemeChromiumMac::paintMediaCurrentTime(RenderObject* o, const Render Object::PaintInfo& paintInfo, const IntRect& r)
1991 NSButtonCell* RenderThemeChromiumMac::button() const
1992 { 1743 {
1993 if (!m_button) { 1744 Node* node = o->node();
1994 m_button.adoptNS([[NSButtonCell alloc] init]); 1745 if (!node)
1995 [m_button.get() setTitle:nil]; 1746 return false;
1996 [m_button.get() setButtonType:NSMomentaryPushInButton]; 1747
1997 } 1748 paintInfo.context->save();
1998 1749 FloatRect unzoomedRect = getUnzoomedRectAndAdjustCurrentContext(o, paintInfo , r);
1999 return m_button.get(); 1750 wkDrawMediaUIPart(MediaCurrentTimeDisplay, mediaControllerTheme(), paintInfo .context->platformContext(), unzoomedRect, getMediaUIPartStateFlags(node));
1751 paintInfo.context->restore();
1752 return false;
2000 } 1753 }
2001 1754
1755 bool RenderThemeChromiumMac::paintMediaTimeRemaining(RenderObject* o, const Rend erObject::PaintInfo& paintInfo, const IntRect& r)
1756 {
1757 Node* node = o->node();
1758 if (!node)
1759 return false;
1760
1761 paintInfo.context->save();
1762 FloatRect unzoomedRect = getUnzoomedRectAndAdjustCurrentContext(o, paintInfo , r);
1763 wkDrawMediaUIPart(MediaTimeRemainingDisplay, mediaControllerTheme(), paintIn fo.context->platformContext(), unzoomedRect, getMediaUIPartStateFlags(node));
1764 paintInfo.context->restore();
1765 return false;
1766 }
1767
1768 String RenderThemeChromiumMac::extraMediaControlsStyleSheet()
1769 {
1770 return String();
1771 }
1772 #endif
1773
2002 NSPopUpButtonCell* RenderThemeChromiumMac::popupButton() const 1774 NSPopUpButtonCell* RenderThemeChromiumMac::popupButton() const
2003 { 1775 {
2004 if (!m_popupButton) { 1776 if (!m_popupButton) {
2005 m_popupButton.adoptNS([[NSPopUpButtonCell alloc] initTextCell:@"" pullsD own:NO]); 1777 m_popupButton.adoptNS([[NSPopUpButtonCell alloc] initTextCell:@"" pullsD own:NO]);
2006 [m_popupButton.get() setUsesItemFromMenu:NO]; 1778 [m_popupButton.get() setUsesItemFromMenu:NO];
2007 [m_popupButton.get() setFocusRingType:NSFocusRingTypeExterior]; 1779 [m_popupButton.get() setFocusRingType:NSFocusRingTypeExterior];
2008 } 1780 }
2009 1781
2010 return m_popupButton.get(); 1782 return m_popupButton.get();
2011 } 1783 }
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
2051 [m_sliderThumbVertical.get() setTitle:nil]; 1823 [m_sliderThumbVertical.get() setTitle:nil];
2052 [m_sliderThumbVertical.get() setSliderType:NSLinearSlider]; 1824 [m_sliderThumbVertical.get() setSliderType:NSLinearSlider];
2053 [m_sliderThumbVertical.get() setControlSize:NSSmallControlSize]; 1825 [m_sliderThumbVertical.get() setControlSize:NSSmallControlSize];
2054 [m_sliderThumbVertical.get() setFocusRingType:NSFocusRingTypeExterior]; 1826 [m_sliderThumbVertical.get() setFocusRingType:NSFocusRingTypeExterior];
2055 } 1827 }
2056 1828
2057 return m_sliderThumbVertical.get(); 1829 return m_sliderThumbVertical.get();
2058 } 1830 }
2059 1831
2060 } // namespace WebCore 1832 } // namespace WebCore
OLDNEW
« no previous file with comments | « rendering/RenderThemeChromiumMac.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698