Changeset 167771 in webkit
- Timestamp:
- Apr 24, 2014, 1:46:26 PM (12 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 10 edited
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/fast/forms/hidpi-textarea-on-subpixel-position-expected.html (added)
-
LayoutTests/fast/forms/hidpi-textarea-on-subpixel-position.html (added)
-
LayoutTests/platform/mac-wk2/TestExpectations (modified) (1 diff)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/rendering/RenderBox.cpp (modified) (3 diffs)
-
Source/WebCore/rendering/RenderTheme.cpp (modified) (9 diffs)
-
Source/WebCore/rendering/RenderTheme.h (modified) (2 diffs)
-
Source/WebCore/rendering/RenderThemeIOS.h (modified) (1 diff)
-
Source/WebCore/rendering/RenderThemeIOS.mm (modified) (2 diffs)
-
Source/WebCore/rendering/RenderThemeMac.h (modified) (1 diff)
-
Source/WebCore/rendering/RenderThemeMac.mm (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r167769 r167771 1 2014-04-24 Zalan Bujtas <zalan@apple.com> 2 3 Subpixel rendering: Clipping on text areas when shifted by one device pixel. 4 https://bugs.webkit.org/show_bug.cgi?id=132008 5 6 Reviewed by Darin Adler. 7 8 Make RenderTheme paint* functions LayoutRect aware. Textarea is device pixel snapped, while 9 other theme controls are still on integral size/positions. 10 11 * fast/forms/hidpi-textarea-on-subpixel-position-expected.html: Added. 12 * fast/forms/hidpi-textarea-on-subpixel-position.html: Added. 13 * platform/mac-wk2/TestExpectations: Due to defective RenderLayer cliprect calculation (WK2 only): webkit.org/b/132100 14 1 15 2014-04-24 Eduardo Lima Mitev <elima@igalia.com> 2 16 -
trunk/LayoutTests/platform/mac-wk2/TestExpectations
r167701 r167771 350 350 webkit.org/b/131477 fast/repaint/obscured-background-no-repaint.html [ Pass Failure ] 351 351 352 # Subpixel wrong cliprect on WK2 353 webkit.org/b/132100 fast/forms/hidpi-textarea-on-subpixel-position.html [ ImageOnlyFailure ] 354 352 355 ### END OF (1) Classified failures with bug reports 353 356 ######################################## -
trunk/Source/WebCore/ChangeLog
r167768 r167771 1 2014-04-24 Zalan Bujtas <zalan@apple.com> 2 3 Subpixel rendering: Clipping on text areas when shifted by one device pixel. 4 https://bugs.webkit.org/show_bug.cgi?id=132008 5 6 Reviewed by Darin Adler. 7 8 Make RenderTheme paint* functions LayoutRect aware. Textarea is device pixel snapped, while 9 other theme controls are still on integral size/positions. 10 11 Test: fast/forms/hidpi-textarea-on-subpixel-position.html 12 13 * rendering/RenderBox.cpp: 14 (WebCore::RenderBox::paintBoxDecorations): 15 * rendering/RenderTheme.cpp: 16 (WebCore::RenderTheme::paint): 17 (WebCore::RenderTheme::paintBorderOnly): 18 (WebCore::RenderTheme::paintDecorations): 19 * rendering/RenderTheme.h: 20 (WebCore::RenderTheme::paintTextField): 21 (WebCore::RenderTheme::paintTextFieldDecorations): 22 (WebCore::RenderTheme::paintTextArea): 23 (WebCore::RenderTheme::paintTextAreaDecorations): 24 * rendering/RenderThemeIOS.h: 25 * rendering/RenderThemeIOS.mm: 26 (WebCore::RenderThemeIOS::paintTextFieldDecorations): 27 (WebCore::RenderThemeIOS::paintTextAreaDecorations): 28 * rendering/RenderThemeMac.h: 29 * rendering/RenderThemeMac.mm: 30 (WebCore::RenderThemeMac::paintTextField): 31 (WebCore::RenderThemeMac::paintTextArea): 32 1 33 2014-04-24 Myles C. Maxfield <mmaxfield@apple.com> 2 34 -
trunk/Source/WebCore/rendering/RenderBox.cpp
r167755 r167771 1216 1216 // If we have a native theme appearance, paint that before painting our background. 1217 1217 // The theme will tell us whether or not we should also paint the CSS background. 1218 IntRect snappedPaintRect(pixelSnappedIntRect(paintRect));1219 1220 1218 ControlStates* controlStates = nullptr; 1221 1219 if (style().hasAppearance()) { … … 1228 1226 } 1229 1227 1230 bool themePainted = style().hasAppearance() && !theme().paint(*this, controlStates, paintInfo, snappedPaintRect);1228 bool themePainted = style().hasAppearance() && !theme().paint(*this, controlStates, paintInfo, paintRect); 1231 1229 1232 1230 if (controlStates && controlStates->needsRepaint()) … … 1240 1238 1241 1239 if (style().hasAppearance()) 1242 theme().paintDecorations(*this, paintInfo, snappedPaintRect);1240 theme().paintDecorations(*this, paintInfo, paintRect); 1243 1241 } 1244 1242 paintBoxShadow(paintInfo, paintRect, style(), Inset); 1245 1243 1246 1244 // The theme will tell us whether or not we should also paint the CSS border. 1247 if (bleedAvoidance != BackgroundBleedBackgroundOverBorder && (!style().hasAppearance() || (!themePainted && theme().paintBorderOnly(*this, paintInfo, snappedPaintRect))) && style().hasBorder())1245 if (bleedAvoidance != BackgroundBleedBackgroundOverBorder && (!style().hasAppearance() || (!themePainted && theme().paintBorderOnly(*this, paintInfo, paintRect))) && style().hasBorder()) 1248 1246 paintBorder(paintInfo, paintRect, style(), bleedAvoidance); 1249 1247 -
trunk/Source/WebCore/rendering/RenderTheme.cpp
r167755 r167771 264 264 } 265 265 266 bool RenderTheme::paint(const RenderObject& o, ControlStates* controlStates, const PaintInfo& paintInfo, const IntRect& r)266 bool RenderTheme::paint(const RenderObject& o, ControlStates* controlStates, const PaintInfo& paintInfo, const LayoutRect& r) 267 267 { 268 268 // If painting is disabled, but we aren't updating control tints, then just bail. … … 278 278 279 279 ControlPart part = o.style().appearance(); 280 IntRect integralSnappedRect = pixelSnappedIntRect(r); 280 281 281 282 #if USE(NEW_THEME) … … 289 290 case InnerSpinButtonPart: 290 291 updateControlStatesForRenderer(o, controlStates); 291 m_theme->paint(part, controlStates, const_cast<GraphicsContext*>(paintInfo.context), r, o.style().effectiveZoom(), &o.view().frameView());292 m_theme->paint(part, controlStates, const_cast<GraphicsContext*>(paintInfo.context), integralSnappedRect, o.style().effectiveZoom(), &o.view().frameView()); 292 293 return false; 293 294 default: … … 302 303 #if !USE(NEW_THEME) 303 304 case CheckboxPart: 304 return paintCheckbox(o, paintInfo, r);305 return paintCheckbox(o, paintInfo, integralSnappedRect); 305 306 case RadioPart: 306 return paintRadio(o, paintInfo, r);307 return paintRadio(o, paintInfo, integralSnappedRect); 307 308 case PushButtonPart: 308 309 case SquareButtonPart: 309 310 case DefaultButtonPart: 310 311 case ButtonPart: 311 return paintButton(o, paintInfo, r);312 return paintButton(o, paintInfo, integralSnappedRect); 312 313 case InnerSpinButtonPart: 313 return paintInnerSpinButton(o, paintInfo, r);314 return paintInnerSpinButton(o, paintInfo, integralSnappedRect); 314 315 #endif 315 316 case MenulistPart: 316 return paintMenuList(o, paintInfo, r);317 return paintMenuList(o, paintInfo, integralSnappedRect); 317 318 #if ENABLE(METER_ELEMENT) 318 319 case MeterPart: … … 321 322 case DiscreteCapacityLevelIndicatorPart: 322 323 case RatingLevelIndicatorPart: 323 return paintMeter(o, paintInfo, r);324 return paintMeter(o, paintInfo, integralSnappedRect); 324 325 #endif 325 326 #if ENABLE(PROGRESS_ELEMENT) 326 327 case ProgressBarPart: 327 return paintProgressBar(o, paintInfo, r);328 return paintProgressBar(o, paintInfo, integralSnappedRect); 328 329 #endif 329 330 case SliderHorizontalPart: 330 331 case SliderVerticalPart: 331 return paintSliderTrack(o, paintInfo, r);332 return paintSliderTrack(o, paintInfo, integralSnappedRect); 332 333 case SliderThumbHorizontalPart: 333 334 case SliderThumbVerticalPart: 334 return paintSliderThumb(o, paintInfo, r);335 return paintSliderThumb(o, paintInfo, integralSnappedRect); 335 336 case MediaEnterFullscreenButtonPart: 336 337 case MediaExitFullscreenButtonPart: 337 return paintMediaFullscreenButton(o, paintInfo, r);338 return paintMediaFullscreenButton(o, paintInfo, integralSnappedRect); 338 339 case MediaPlayButtonPart: 339 return paintMediaPlayButton(o, paintInfo, r);340 return paintMediaPlayButton(o, paintInfo, integralSnappedRect); 340 341 case MediaOverlayPlayButtonPart: 341 return paintMediaOverlayPlayButton(o, paintInfo, r);342 return paintMediaOverlayPlayButton(o, paintInfo, integralSnappedRect); 342 343 case MediaMuteButtonPart: 343 return paintMediaMuteButton(o, paintInfo, r);344 return paintMediaMuteButton(o, paintInfo, integralSnappedRect); 344 345 case MediaSeekBackButtonPart: 345 return paintMediaSeekBackButton(o, paintInfo, r);346 return paintMediaSeekBackButton(o, paintInfo, integralSnappedRect); 346 347 case MediaSeekForwardButtonPart: 347 return paintMediaSeekForwardButton(o, paintInfo, r);348 return paintMediaSeekForwardButton(o, paintInfo, integralSnappedRect); 348 349 case MediaRewindButtonPart: 349 return paintMediaRewindButton(o, paintInfo, r);350 return paintMediaRewindButton(o, paintInfo, integralSnappedRect); 350 351 case MediaReturnToRealtimeButtonPart: 351 return paintMediaReturnToRealtimeButton(o, paintInfo, r);352 return paintMediaReturnToRealtimeButton(o, paintInfo, integralSnappedRect); 352 353 case MediaToggleClosedCaptionsButtonPart: 353 return paintMediaToggleClosedCaptionsButton(o, paintInfo, r);354 return paintMediaToggleClosedCaptionsButton(o, paintInfo, integralSnappedRect); 354 355 case MediaSliderPart: 355 return paintMediaSliderTrack(o, paintInfo, r);356 return paintMediaSliderTrack(o, paintInfo, integralSnappedRect); 356 357 case MediaSliderThumbPart: 357 return paintMediaSliderThumb(o, paintInfo, r);358 return paintMediaSliderThumb(o, paintInfo, integralSnappedRect); 358 359 case MediaVolumeSliderMuteButtonPart: 359 return paintMediaMuteButton(o, paintInfo, r);360 return paintMediaMuteButton(o, paintInfo, integralSnappedRect); 360 361 case MediaVolumeSliderContainerPart: 361 return paintMediaVolumeSliderContainer(o, paintInfo, r);362 return paintMediaVolumeSliderContainer(o, paintInfo, integralSnappedRect); 362 363 case MediaVolumeSliderPart: 363 return paintMediaVolumeSliderTrack(o, paintInfo, r);364 return paintMediaVolumeSliderTrack(o, paintInfo, integralSnappedRect); 364 365 case MediaVolumeSliderThumbPart: 365 return paintMediaVolumeSliderThumb(o, paintInfo, r);366 return paintMediaVolumeSliderThumb(o, paintInfo, integralSnappedRect); 366 367 case MediaFullScreenVolumeSliderPart: 367 return paintMediaFullScreenVolumeSliderTrack(o, paintInfo, r);368 return paintMediaFullScreenVolumeSliderTrack(o, paintInfo, integralSnappedRect); 368 369 case MediaFullScreenVolumeSliderThumbPart: 369 return paintMediaFullScreenVolumeSliderThumb(o, paintInfo, r);370 return paintMediaFullScreenVolumeSliderThumb(o, paintInfo, integralSnappedRect); 370 371 case MediaTimeRemainingPart: 371 return paintMediaTimeRemaining(o, paintInfo, r);372 return paintMediaTimeRemaining(o, paintInfo, integralSnappedRect); 372 373 case MediaCurrentTimePart: 373 return paintMediaCurrentTime(o, paintInfo, r);374 return paintMediaCurrentTime(o, paintInfo, integralSnappedRect); 374 375 case MediaControlsBackgroundPart: 375 return paintMediaControlsBackground(o, paintInfo, r);376 return paintMediaControlsBackground(o, paintInfo, integralSnappedRect); 376 377 case MenulistButtonPart: 377 378 case TextFieldPart: … … 380 381 return true; 381 382 case SearchFieldPart: 382 return paintSearchField(o, paintInfo, r);383 return paintSearchField(o, paintInfo, integralSnappedRect); 383 384 case SearchFieldCancelButtonPart: 384 return paintSearchFieldCancelButton(o, paintInfo, r);385 return paintSearchFieldCancelButton(o, paintInfo, integralSnappedRect); 385 386 case SearchFieldDecorationPart: 386 return paintSearchFieldDecorationPart(o, paintInfo, r);387 return paintSearchFieldDecorationPart(o, paintInfo, integralSnappedRect); 387 388 case SearchFieldResultsDecorationPart: 388 return paintSearchFieldResultsDecorationPart(o, paintInfo, r);389 return paintSearchFieldResultsDecorationPart(o, paintInfo, integralSnappedRect); 389 390 case SearchFieldResultsButtonPart: 390 return paintSearchFieldResultsButton(o, paintInfo, r);391 return paintSearchFieldResultsButton(o, paintInfo, integralSnappedRect); 391 392 case SnapshottedPluginOverlayPart: 392 return paintSnapshottedPluginOverlay(o, paintInfo, r);393 return paintSnapshottedPluginOverlay(o, paintInfo, integralSnappedRect); 393 394 #if ENABLE(INPUT_SPEECH) 394 395 case InputSpeechButtonPart: 395 return paintInputFieldSpeechButton(o, paintInfo, r);396 return paintInputFieldSpeechButton(o, paintInfo, integralSnappedRect); 396 397 #endif 397 398 #if ENABLE(IMAGE_CONTROLS) 398 399 case ImageControlsButtonPart: 399 return paintImageControlsButton(o, paintInfo, r);400 return paintImageControlsButton(o, paintInfo, integralSnappedRect); 400 401 #endif 401 402 default: … … 406 407 } 407 408 408 bool RenderTheme::paintBorderOnly(const RenderObject& o, const PaintInfo& paintInfo, const IntRect& r)409 bool RenderTheme::paintBorderOnly(const RenderObject& o, const PaintInfo& paintInfo, const LayoutRect& r) 409 410 { 410 411 if (paintInfo.context->paintingDisabled()) … … 415 416 return o.style().appearance() != NoControlPart; 416 417 #else 418 FloatRect devicePixelSnappedRect = pixelSnappedForPainting(r, o.document().deviceScaleFactor()); 417 419 // Call the appropriate paint method based off the appearance value. 418 420 switch (o.style().appearance()) { 419 421 case TextFieldPart: 420 return paintTextField(o, paintInfo, r);422 return paintTextField(o, paintInfo, devicePixelSnappedRect); 421 423 case ListboxPart: 422 424 case TextAreaPart: 423 return paintTextArea(o, paintInfo, r);425 return paintTextArea(o, paintInfo, devicePixelSnappedRect); 424 426 case MenulistButtonPart: 425 427 case SearchFieldPart: … … 464 466 } 465 467 466 bool RenderTheme::paintDecorations(const RenderObject& renderer, const PaintInfo& paintInfo, const IntRect& rect)468 bool RenderTheme::paintDecorations(const RenderObject& renderer, const PaintInfo& paintInfo, const LayoutRect& rect) 467 469 { 468 470 if (paintInfo.context->paintingDisabled()) 469 471 return false; 472 473 IntRect integralSnappedRect = pixelSnappedIntRect(rect); 474 FloatRect devicePixelSnappedRect = pixelSnappedForPainting(rect, renderer.document().deviceScaleFactor()); 470 475 471 476 // Call the appropriate paint method based off the appearance value. 472 477 switch (renderer.style().appearance()) { 473 478 case MenulistButtonPart: 474 return paintMenuListButtonDecorations(renderer, paintInfo, rect);479 return paintMenuListButtonDecorations(renderer, paintInfo, integralSnappedRect); 475 480 case TextFieldPart: 476 return paintTextFieldDecorations(renderer, paintInfo, rect);481 return paintTextFieldDecorations(renderer, paintInfo, devicePixelSnappedRect); 477 482 case TextAreaPart: 478 return paintTextAreaDecorations(renderer, paintInfo, rect);483 return paintTextAreaDecorations(renderer, paintInfo, devicePixelSnappedRect); 479 484 case CheckboxPart: 480 return paintCheckboxDecorations(renderer, paintInfo, rect);485 return paintCheckboxDecorations(renderer, paintInfo, integralSnappedRect); 481 486 case RadioPart: 482 return paintRadioDecorations(renderer, paintInfo, rect);487 return paintRadioDecorations(renderer, paintInfo, integralSnappedRect); 483 488 case PushButtonPart: 484 return paintPushButtonDecorations(renderer, paintInfo, rect);489 return paintPushButtonDecorations(renderer, paintInfo, integralSnappedRect); 485 490 case SquareButtonPart: 486 return paintSquareButtonDecorations(renderer, paintInfo, rect);491 return paintSquareButtonDecorations(renderer, paintInfo, integralSnappedRect); 487 492 case ButtonPart: 488 return paintButtonDecorations(renderer, paintInfo, rect);493 return paintButtonDecorations(renderer, paintInfo, integralSnappedRect); 489 494 case MenulistPart: 490 return paintMenuListDecorations(renderer, paintInfo, rect);495 return paintMenuListDecorations(renderer, paintInfo, integralSnappedRect); 491 496 case SliderThumbHorizontalPart: 492 497 case SliderThumbVerticalPart: 493 return paintSliderThumbDecorations(renderer, paintInfo, rect);498 return paintSliderThumbDecorations(renderer, paintInfo, integralSnappedRect); 494 499 case SearchFieldPart: 495 return paintSearchFieldDecorations(renderer, paintInfo, rect);500 return paintSearchFieldDecorations(renderer, paintInfo, integralSnappedRect); 496 501 #if ENABLE(METER_ELEMENT) 497 502 case MeterPart: -
trunk/Source/WebCore/rendering/RenderTheme.h
r167755 r167771 80 80 // text of a button, is always rendered by the engine itself. The boolean return value indicates 81 81 // whether the CSS border/background should also be painted. 82 bool paint(const RenderObject&, ControlStates*, const PaintInfo&, const IntRect&);83 bool paintBorderOnly(const RenderObject&, const PaintInfo&, const IntRect&);84 bool paintDecorations(const RenderObject&, const PaintInfo&, const IntRect&);82 bool paint(const RenderObject&, ControlStates*, const PaintInfo&, const LayoutRect&); 83 bool paintBorderOnly(const RenderObject&, const PaintInfo&, const LayoutRect&); 84 bool paintDecorations(const RenderObject&, const PaintInfo&, const LayoutRect&); 85 85 86 86 // The remaining methods should be implemented by the platform-specific portion of the theme, e.g., … … 288 288 289 289 virtual void adjustTextFieldStyle(StyleResolver*, RenderStyle*, Element*) const; 290 virtual bool paintTextField(const RenderObject&, const PaintInfo&, const IntRect&) { return true; }291 virtual bool paintTextFieldDecorations(const RenderObject&, const PaintInfo&, const IntRect&) { return true; }290 virtual bool paintTextField(const RenderObject&, const PaintInfo&, const FloatRect&) { return true; } 291 virtual bool paintTextFieldDecorations(const RenderObject&, const PaintInfo&, const FloatRect&) { return true; } 292 292 293 293 virtual void adjustTextAreaStyle(StyleResolver*, RenderStyle*, Element*) const; 294 virtual bool paintTextArea(const RenderObject&, const PaintInfo&, const IntRect&) { return true; }295 virtual bool paintTextAreaDecorations(const RenderObject&, const PaintInfo&, const IntRect&) { return true; }294 virtual bool paintTextArea(const RenderObject&, const PaintInfo&, const FloatRect&) { return true; } 295 virtual bool paintTextAreaDecorations(const RenderObject&, const PaintInfo&, const FloatRect&) { return true; } 296 296 297 297 virtual void adjustMenuListStyle(StyleResolver*, RenderStyle*, Element*) const; -
trunk/Source/WebCore/rendering/RenderThemeIOS.h
r167755 r167771 67 67 virtual bool paintFileUploadIconDecorations(const RenderObject& inputRenderer, const RenderObject& buttonRenderer, const PaintInfo&, const IntRect&, Icon*, FileUploadDecorations) override; 68 68 69 virtual bool paintTextFieldDecorations(const RenderObject&, const PaintInfo&, const IntRect&) override;70 virtual bool paintTextAreaDecorations(const RenderObject&, const PaintInfo&, const IntRect&) override;69 virtual bool paintTextFieldDecorations(const RenderObject&, const PaintInfo&, const FloatRect&) override; 70 virtual bool paintTextAreaDecorations(const RenderObject&, const PaintInfo&, const FloatRect&) override; 71 71 72 72 virtual void adjustMenuListButtonStyle(StyleResolver*, RenderStyle*, Element*) const override; -
trunk/Source/WebCore/rendering/RenderThemeIOS.mm
r167755 r167771 474 474 } 475 475 476 bool RenderThemeIOS::paintTextFieldDecorations(const RenderObject& box, const PaintInfo& paintInfo, const IntRect& rect)476 bool RenderThemeIOS::paintTextFieldDecorations(const RenderObject& box, const PaintInfo& paintInfo, const FloatRect& rect) 477 477 { 478 478 RenderStyle& style = box.style(); 479 IntPoint point(rect.x() + style.borderLeftWidth(), rect.y() + style.borderTopWidth());479 FloatPoint point(rect.x() + style.borderLeftWidth(), rect.y() + style.borderTopWidth()); 480 480 481 481 GraphicsContextStateSaver stateSaver(*paintInfo.context); 482 482 483 paintInfo.context->clipRoundedRect(FloatRoundedRect(style.getRoundedBorderFor( rect)));483 paintInfo.context->clipRoundedRect(FloatRoundedRect(style.getRoundedBorderFor(LayoutRect(rect)))); 484 484 485 485 // This gradient gets drawn black when printing. … … 491 491 } 492 492 493 bool RenderThemeIOS::paintTextAreaDecorations(const RenderObject& box, const PaintInfo& paintInfo, const IntRect& rect)493 bool RenderThemeIOS::paintTextAreaDecorations(const RenderObject& box, const PaintInfo& paintInfo, const FloatRect& rect) 494 494 { 495 495 return paintTextFieldDecorations(box, paintInfo, rect); -
trunk/Source/WebCore/rendering/RenderThemeMac.h
r167757 r167771 124 124 virtual bool supportsSelectionForegroundColors() const { return false; } 125 125 126 virtual bool paintTextField(const RenderObject&, const PaintInfo&, const IntRect&);126 virtual bool paintTextField(const RenderObject&, const PaintInfo&, const FloatRect&); 127 127 virtual void adjustTextFieldStyle(StyleResolver*, RenderStyle*, Element*) const; 128 128 129 virtual bool paintTextArea(const RenderObject&, const PaintInfo&, const IntRect&);129 virtual bool paintTextArea(const RenderObject&, const PaintInfo&, const FloatRect&); 130 130 virtual void adjustTextAreaStyle(StyleResolver*, RenderStyle*, Element*) const; 131 131 -
trunk/Source/WebCore/rendering/RenderThemeMac.mm
r167755 r167771 812 812 } 813 813 814 bool RenderThemeMac::paintTextField(const RenderObject& o, const PaintInfo& paintInfo, const IntRect& r)814 bool RenderThemeMac::paintTextField(const RenderObject& o, const PaintInfo& paintInfo, const FloatRect& r) 815 815 { 816 816 LocalCurrentGraphicsContext localContext(paintInfo.context); … … 843 843 } 844 844 845 bool RenderThemeMac::paintTextArea(const RenderObject& o, const PaintInfo& paintInfo, const IntRect& r)845 bool RenderThemeMac::paintTextArea(const RenderObject& o, const PaintInfo& paintInfo, const FloatRect& r) 846 846 { 847 847 LocalCurrentGraphicsContext localContext(paintInfo.context);
Note:
See TracChangeset
for help on using the changeset viewer.