<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[169928] trunk</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/169928">169928</a></dd>
<dt>Author</dt> <dd>zalan@apple.com</dd>
<dt>Date</dt> <dd>2014-06-12 20:58:46 -0700 (Thu, 12 Jun 2014)</dd>
</dl>
<h3>Log Message</h3>
<pre>Subpixel rendering: Make <input type=> and <button> elements' decoration subpixel aware.
https://bugs.webkit.org/show_bug.cgi?id=133812
<rdar://problem/17286309>
Reviewed by Simon Fraser.
Enable <input type=> and <button> decoration painting on subpixel positions.
The theme size is still integral, but its position is snapped to device pixels.
Theme's label, the InlineTextBox is already subpixel position aware.
webkit.org/b/132005 tracks the rest of the themes.
Source/WebCore:
Not testable.
* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::boundingBoxForQuads): Keep integral snapping for now.
* platform/Theme.h:
(WebCore::Theme::paint):
(WebCore::Theme::inflateControlPaintRect):
* platform/mac/ThemeMac.h:
* platform/mac/ThemeMac.mm:
(WebCore::inflateRect):
(WebCore::configureToggleButton):
(WebCore::sharedRadioCell):
(WebCore::sharedCheckboxCell):
(WebCore::paintToggleButton):
(WebCore::setUpButtonCell):
(WebCore::button):
(WebCore::paintButton):
(WebCore::paintStepper):
(WebCore::ThemeMac::inflateControlPaintRect):
(WebCore::ThemeMac::paint):
* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::addVisualOverflowFromTheme): Keep integral snapping for now.
* rendering/RenderFlowThread.cpp:
(WebCore::RenderFlowThread::addRegionsVisualOverflowFromTheme): Keep integral snapping for now.
* rendering/RenderTheme.cpp:
(WebCore::RenderTheme::paint):
(WebCore::RenderTheme::adjustRepaintRect):
* rendering/RenderTheme.h:
* rendering/RenderThemeMac.h:
* rendering/RenderThemeMac.mm:
(WebCore::RenderThemeMac::adjustRepaintRect):
LayoutTests:
* platform/mac-mountainlion/compositing/contents-opaque/control-layer-expected.txt:
* platform/mac/compositing/contents-opaque/control-layer-expected.txt:</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsplatformmaccompositingcontentsopaquecontrollayerexpectedtxt">trunk/LayoutTests/platform/mac/compositing/contents-opaque/control-layer-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacmountainlioncompositingcontentsopaquecontrollayerexpectedtxt">trunk/LayoutTests/platform/mac-mountainlion/compositing/contents-opaque/control-layer-expected.txt</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreaccessibilityAccessibilityObjectcpp">trunk/Source/WebCore/accessibility/AccessibilityObject.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformThemeh">trunk/Source/WebCore/platform/Theme.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgtkRenderThemeGtkh">trunk/Source/WebCore/platform/gtk/RenderThemeGtk.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgtkRenderThemeGtk2cpp">trunk/Source/WebCore/platform/gtk/RenderThemeGtk2.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgtkRenderThemeGtk3cpp">trunk/Source/WebCore/platform/gtk/RenderThemeGtk3.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformmacThemeMach">trunk/Source/WebCore/platform/mac/ThemeMac.h</a></li>
<li><a href="#trunkSourceWebCoreplatformmacThemeMacmm">trunk/Source/WebCore/platform/mac/ThemeMac.mm</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBlockcpp">trunk/Source/WebCore/rendering/RenderBlock.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderFlowThreadcpp">trunk/Source/WebCore/rendering/RenderFlowThread.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderThemecpp">trunk/Source/WebCore/rendering/RenderTheme.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderThemeh">trunk/Source/WebCore/rendering/RenderTheme.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderThemeMach">trunk/Source/WebCore/rendering/RenderThemeMac.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderThemeMacmm">trunk/Source/WebCore/rendering/RenderThemeMac.mm</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (169927 => 169928)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2014-06-13 01:53:42 UTC (rev 169927)
+++ trunk/LayoutTests/ChangeLog        2014-06-13 03:58:46 UTC (rev 169928)
</span><span class="lines">@@ -1,3 +1,19 @@
</span><ins>+2014-06-12 Zalan Bujtas <zalan@apple.com>
+
+ Subpixel rendering: Make <input type=> and <button> elements' decoration subpixel aware.
+ https://bugs.webkit.org/show_bug.cgi?id=133812
+ <rdar://problem/17286309>
+
+ Reviewed by Simon Fraser.
+
+ Enable <input type=> and <button> decoration painting on subpixel positions.
+ The theme size is still integral, but its position is snapped to device pixels.
+ Theme's label, the InlineTextBox is already subpixel position aware.
+ webkit.org/b/132005 tracks the rest of the themes.
+
+ * platform/mac-mountainlion/compositing/contents-opaque/control-layer-expected.txt:
+ * platform/mac/compositing/contents-opaque/control-layer-expected.txt:
+
</ins><span class="cx"> 2014-06-12 Carlos Alberto Lopez Perez <clopez@igalia.com>
</span><span class="cx">
</span><span class="cx"> [GTK] Unreviewed GTK gardening.
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmaccompositingcontentsopaquecontrollayerexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/compositing/contents-opaque/control-layer-expected.txt (169927 => 169928)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/compositing/contents-opaque/control-layer-expected.txt        2014-06-13 01:53:42 UTC (rev 169927)
+++ trunk/LayoutTests/platform/mac/compositing/contents-opaque/control-layer-expected.txt        2014-06-13 03:58:46 UTC (rev 169928)
</span><span class="lines">@@ -10,7 +10,7 @@
</span><span class="cx"> (GraphicsLayer
</span><span class="cx"> (position 5.00 6.00)
</span><span class="cx"> (anchor 0.50 0.46)
</span><del>- (bounds 128.00 28.00)
</del><ins>+ (bounds 127.00 28.00)
</ins><span class="cx"> (drawsContent 1)
</span><span class="cx"> )
</span><span class="cx"> )
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacmountainlioncompositingcontentsopaquecontrollayerexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac-mountainlion/compositing/contents-opaque/control-layer-expected.txt (169927 => 169928)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-mountainlion/compositing/contents-opaque/control-layer-expected.txt        2014-06-13 01:53:42 UTC (rev 169927)
+++ trunk/LayoutTests/platform/mac-mountainlion/compositing/contents-opaque/control-layer-expected.txt        2014-06-13 03:58:46 UTC (rev 169928)
</span><span class="lines">@@ -10,7 +10,7 @@
</span><span class="cx"> (GraphicsLayer
</span><span class="cx"> (position 5.00 6.00)
</span><span class="cx"> (anchor 0.50 0.46)
</span><del>- (bounds 129.00 28.00)
</del><ins>+ (bounds 128.00 28.00)
</ins><span class="cx"> (drawsContent 1)
</span><span class="cx"> )
</span><span class="cx"> )
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (169927 => 169928)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-06-13 01:53:42 UTC (rev 169927)
+++ trunk/Source/WebCore/ChangeLog        2014-06-13 03:58:46 UTC (rev 169928)
</span><span class="lines">@@ -1,3 +1,48 @@
</span><ins>+2014-06-12 Zalan Bujtas <zalan@apple.com>
+
+ Subpixel rendering: Make <input type=> and <button> elements' decoration subpixel aware.
+ https://bugs.webkit.org/show_bug.cgi?id=133812
+ <rdar://problem/17286309>
+
+ Reviewed by Simon Fraser.
+
+ Enable <input type=> and <button> decoration painting on subpixel positions.
+ The theme size is still integral, but its position is snapped to device pixels.
+ Theme's label, the InlineTextBox is already subpixel position aware.
+ webkit.org/b/132005 tracks the rest of the themes.
+
+ Not testable.
+
+ * accessibility/AccessibilityObject.cpp:
+ (WebCore::AccessibilityObject::boundingBoxForQuads): Keep integral snapping for now.
+ * platform/Theme.h:
+ (WebCore::Theme::paint):
+ (WebCore::Theme::inflateControlPaintRect):
+ * platform/mac/ThemeMac.h:
+ * platform/mac/ThemeMac.mm:
+ (WebCore::inflateRect):
+ (WebCore::configureToggleButton):
+ (WebCore::sharedRadioCell):
+ (WebCore::sharedCheckboxCell):
+ (WebCore::paintToggleButton):
+ (WebCore::setUpButtonCell):
+ (WebCore::button):
+ (WebCore::paintButton):
+ (WebCore::paintStepper):
+ (WebCore::ThemeMac::inflateControlPaintRect):
+ (WebCore::ThemeMac::paint):
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::addVisualOverflowFromTheme): Keep integral snapping for now.
+ * rendering/RenderFlowThread.cpp:
+ (WebCore::RenderFlowThread::addRegionsVisualOverflowFromTheme): Keep integral snapping for now.
+ * rendering/RenderTheme.cpp:
+ (WebCore::RenderTheme::paint):
+ (WebCore::RenderTheme::adjustRepaintRect):
+ * rendering/RenderTheme.h:
+ * rendering/RenderThemeMac.h:
+ * rendering/RenderThemeMac.mm:
+ (WebCore::RenderThemeMac::adjustRepaintRect):
+
</ins><span class="cx"> 2014-06-12 Brent Fulgham <bfulgham@apple.com>
</span><span class="cx">
</span><span class="cx"> [Win] Avoid fork bomb during build
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilityAccessibilityObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/AccessibilityObject.cpp (169927 => 169928)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/AccessibilityObject.cpp        2014-06-13 01:53:42 UTC (rev 169927)
+++ trunk/Source/WebCore/accessibility/AccessibilityObject.cpp        2014-06-13 03:58:46 UTC (rev 169928)
</span><span class="lines">@@ -726,16 +726,16 @@
</span><span class="cx"> if (!obj)
</span><span class="cx"> return IntRect();
</span><span class="cx">
</span><del>- IntRect result;
</del><ins>+ FloatRect result;
</ins><span class="cx"> for (const auto& quad : quads) {
</span><del>- IntRect r = quad.enclosingBoundingBox();
</del><ins>+ FloatRect r = quad.enclosingBoundingBox();
</ins><span class="cx"> if (!r.isEmpty()) {
</span><span class="cx"> if (obj->style().hasAppearance())
</span><span class="cx"> obj->theme().adjustRepaintRect(*obj, r);
</span><span class="cx"> result.unite(r);
</span><span class="cx"> }
</span><span class="cx"> }
</span><del>- return result;
</del><ins>+ return pixelSnappedIntRect(LayoutRect(result));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> bool AccessibilityObject::press()
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformThemeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/Theme.h (169927 => 169928)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/Theme.h        2014-06-13 01:53:42 UTC (rev 169927)
+++ trunk/Source/WebCore/platform/Theme.h        2014-06-13 03:58:46 UTC (rev 169928)
</span><span class="lines">@@ -98,13 +98,13 @@
</span><span class="cx"> virtual bool controlRequiresPreWhiteSpace(ControlPart) const { return false; }
</span><span class="cx">
</span><span class="cx"> // Method for painting a control. The rect is in zoomed coordinates.
</span><del>- virtual void paint(ControlPart, ControlStates*, GraphicsContext*, const IntRect& /*zoomedRect*/, float /*zoomFactor*/, ScrollView*) { }
</del><ins>+ virtual void paint(ControlPart, ControlStates*, GraphicsContext*, const FloatRect& /*zoomedRect*/, float /*zoomFactor*/, ScrollView*) { }
</ins><span class="cx">
</span><span class="cx"> // Some controls may spill out of their containers (e.g., the check on an OS X checkbox). When these controls repaint,
</span><span class="cx"> // the theme needs to communicate this inflated rect to the engine so that it can invalidate the whole control.
</span><span class="cx"> // The rect passed in is in zoomed coordinates, so the inflation should take that into account and make sure the inflation
</span><span class="cx"> // amount is also scaled by the zoomFactor.
</span><del>- virtual void inflateControlPaintRect(ControlPart, const ControlStates*, IntRect& /*zoomedRect*/, float /*zoomFactor*/) const { }
</del><ins>+ virtual void inflateControlPaintRect(ControlPart, const ControlStates*, FloatRect& /*zoomedRect*/, float /*zoomFactor*/) const { }
</ins><span class="cx">
</span><span class="cx"> // This method is called once, from RenderTheme::adjustDefaultStyleSheet(), to let each platform adjust
</span><span class="cx"> // the default CSS rules in html.css.
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgtkRenderThemeGtkh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/gtk/RenderThemeGtk.h (169927 => 169928)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/gtk/RenderThemeGtk.h        2014-06-13 01:53:42 UTC (rev 169927)
+++ trunk/Source/WebCore/platform/gtk/RenderThemeGtk.h        2014-06-13 03:58:46 UTC (rev 169928)
</span><span class="lines">@@ -55,7 +55,7 @@
</span><span class="cx"> // A general method asking if any control tinting is supported at all.
</span><span class="cx"> virtual bool supportsControlTints() const override { return true; }
</span><span class="cx">
</span><del>- virtual void adjustRepaintRect(const RenderObject&, IntRect&) override;
</del><ins>+ virtual void adjustRepaintRect(const RenderObject&, FloatRect&) override;
</ins><span class="cx">
</span><span class="cx"> // A method to obtain the baseline position for a "leaf" control. This will only be used if a baseline
</span><span class="cx"> // position cannot be determined by examining child content. Checkboxes and radio buttons are examples of
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgtkRenderThemeGtk2cpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/gtk/RenderThemeGtk2.cpp (169927 => 169928)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/gtk/RenderThemeGtk2.cpp        2014-06-13 01:53:42 UTC (rev 169927)
+++ trunk/Source/WebCore/platform/gtk/RenderThemeGtk2.cpp        2014-06-13 03:58:46 UTC (rev 169928)
</span><span class="lines">@@ -97,7 +97,7 @@
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx">
</span><del>-static void adjustRectForFocus(GtkWidget* widget, IntRect& rect, bool ignoreInteriorFocusProperty = false)
</del><ins>+static void adjustRectForFocus(GtkWidget* widget, FloatRect& rect, bool ignoreInteriorFocusProperty = false)
</ins><span class="cx"> {
</span><span class="cx"> gint focusWidth, focusPad;
</span><span class="cx"> gboolean interiorFocus = 0;
</span><span class="lines">@@ -110,7 +110,7 @@
</span><span class="cx"> rect.inflate(focusWidth + focusPad);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void RenderThemeGtk::adjustRepaintRect(const RenderObject& renderObject, IntRect& rect)
</del><ins>+void RenderThemeGtk::adjustRepaintRect(const RenderObject& renderObject, FloatRect& rect)
</ins><span class="cx"> {
</span><span class="cx"> ControlPart part = renderObject.style().appearance();
</span><span class="cx"> switch (part) {
</span><span class="lines">@@ -187,9 +187,10 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (theme->isFocused(renderObject)) {
</span><del>- IntRect focusRect(buttonRect);
</del><ins>+ FloatRect focusRect(buttonRect);
</ins><span class="cx"> adjustRectForFocus(widget, focusRect, true);
</span><del>- widgetContext.gtkPaintFocus(focusRect, widget, toggleState, detail);
</del><ins>+ // FIXME: adopt device pixel positioned themes.
+ widgetContext.gtkPaintFocus(IntRect(focusRect), widget, toggleState, detail);
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgtkRenderThemeGtk3cpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/gtk/RenderThemeGtk3.cpp (169927 => 169928)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/gtk/RenderThemeGtk3.cpp        2014-06-13 01:53:42 UTC (rev 169927)
+++ trunk/Source/WebCore/platform/gtk/RenderThemeGtk3.cpp        2014-06-13 03:58:46 UTC (rev 169928)
</span><span class="lines">@@ -148,7 +148,7 @@
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx">
</span><del>-static void adjustRectForFocus(GtkStyleContext* context, IntRect& rect)
</del><ins>+static void adjustRectForFocus(GtkStyleContext* context, FloatRect& rect)
</ins><span class="cx"> {
</span><span class="cx"> gint focusWidth, focusPad;
</span><span class="cx"> gtk_style_context_get_style(context,
</span><span class="lines">@@ -157,7 +157,7 @@
</span><span class="cx"> rect.inflate(focusWidth + focusPad);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void RenderThemeGtk::adjustRepaintRect(const RenderObject& renderObject, IntRect& rect)
</del><ins>+void RenderThemeGtk::adjustRepaintRect(const RenderObject& renderObject, FloatRect& rect)
</ins><span class="cx"> {
</span><span class="cx"> GtkStyleContext* context = 0;
</span><span class="cx"> bool checkInteriorFocus = false;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmacThemeMach"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mac/ThemeMac.h (169927 => 169928)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mac/ThemeMac.h        2014-06-13 01:53:42 UTC (rev 169927)
+++ trunk/Source/WebCore/platform/mac/ThemeMac.h        2014-06-13 03:58:46 UTC (rev 169928)
</span><span class="lines">@@ -51,8 +51,8 @@
</span><span class="cx">
</span><span class="cx"> virtual bool controlRequiresPreWhiteSpace(ControlPart part) const { return part == PushButtonPart; }
</span><span class="cx">
</span><del>- virtual void paint(ControlPart, ControlStates*, GraphicsContext*, const IntRect&, float zoomFactor, ScrollView*) override;
- virtual void inflateControlPaintRect(ControlPart, const ControlStates*, IntRect&, float zoomFactor) const;
</del><ins>+ virtual void paint(ControlPart, ControlStates*, GraphicsContext*, const FloatRect&, float zoomFactor, ScrollView*) override;
+ virtual void inflateControlPaintRect(ControlPart, const ControlStates*, FloatRect&, float zoomFactor) const;
</ins><span class="cx">
</span><span class="cx"> // FIXME: Once RenderThemeMac is converted over to use Theme then this can be internal to ThemeMac.
</span><span class="cx"> static NSView* ensuredView(ScrollView*, const ControlStates*);
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmacThemeMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mac/ThemeMac.mm (169927 => 169928)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mac/ThemeMac.mm        2014-06-13 01:53:42 UTC (rev 169927)
+++ trunk/Source/WebCore/platform/mac/ThemeMac.mm        2014-06-13 03:58:46 UTC (rev 169928)
</span><span class="lines">@@ -252,13 +252,13 @@
</span><span class="cx"> return kThemeStateActive;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static IntRect inflateRect(const IntRect& zoomedRect, const IntSize& zoomedSize, const int* margins, float zoomFactor)
</del><ins>+static FloatRect inflateRect(const FloatRect& zoomedRect, const IntSize& zoomedSize, const int* margins, float zoomFactor)
</ins><span class="cx"> {
</span><span class="cx"> // Only do the inflation if the available width/height are too small. Otherwise try to
</span><span class="cx"> // fit the glow/check space into the available box's width/height.
</span><span class="cx"> int widthDelta = zoomedRect.width() - (zoomedSize.width() + margins[leftMargin] * zoomFactor + margins[rightMargin] * zoomFactor);
</span><span class="cx"> int heightDelta = zoomedRect.height() - (zoomedSize.height() + margins[topMargin] * zoomFactor + margins[bottomMargin] * zoomFactor);
</span><del>- IntRect result(zoomedRect);
</del><ins>+ FloatRect result(zoomedRect);
</ins><span class="cx"> if (widthDelta < 0) {
</span><span class="cx"> result.setX(result.x() - margins[leftMargin] * zoomFactor);
</span><span class="cx"> result.setWidth(result.width() - widthDelta);
</span><span class="lines">@@ -350,10 +350,10 @@
</span><span class="cx"> return sizeFromFont(font, zoomedSize, zoomFactor, radioSizes());
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static void configureToggleButton(NSCell* cell, ControlPart buttonType, const ControlStates* states, const IntRect& zoomedRect, float zoomFactor, bool isStateChange)
</del><ins>+static void configureToggleButton(NSCell* cell, ControlPart buttonType, const ControlStates* states, const IntSize& zoomedSize, float zoomFactor, bool isStateChange)
</ins><span class="cx"> {
</span><span class="cx"> // Set the control size based off the rectangle we're painting into.
</span><del>- setControlSize(cell, buttonType == CheckboxPart ? checkboxSizes() : radioSizes(), zoomedRect.size(), zoomFactor);
</del><ins>+ setControlSize(cell, buttonType == CheckboxPart ? checkboxSizes() : radioSizes(), zoomedSize, zoomFactor);
</ins><span class="cx">
</span><span class="cx"> // Update the various states we respond to.
</span><span class="cx"> updateStates(cell, states, isStateChange);
</span><span class="lines">@@ -376,23 +376,23 @@
</span><span class="cx"> return toggleButtonCell;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static NSButtonCell *sharedRadioCell(const ControlStates* states, const IntRect& zoomedRect, float zoomFactor)
</del><ins>+static NSButtonCell *sharedRadioCell(const ControlStates* states, const IntSize& zoomedSize, float zoomFactor)
</ins><span class="cx"> {
</span><span class="cx"> static NSButtonCell *radioCell;
</span><span class="cx"> if (!radioCell)
</span><span class="cx"> radioCell = createToggleButtonCell(RadioPart);
</span><span class="cx">
</span><del>- configureToggleButton(radioCell, RadioPart, states, zoomedRect, zoomFactor, false);
</del><ins>+ configureToggleButton(radioCell, RadioPart, states, zoomedSize, zoomFactor, false);
</ins><span class="cx"> return radioCell;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static NSButtonCell *sharedCheckboxCell(const ControlStates* states, const IntRect& zoomedRect, float zoomFactor)
</del><ins>+static NSButtonCell *sharedCheckboxCell(const ControlStates* states, const IntSize& zoomedSize, float zoomFactor)
</ins><span class="cx"> {
</span><span class="cx"> static NSButtonCell *checkboxCell;
</span><span class="cx"> if (!checkboxCell)
</span><span class="cx"> checkboxCell = createToggleButtonCell(CheckboxPart);
</span><span class="cx">
</span><del>- configureToggleButton(checkboxCell, CheckboxPart, states, zoomedRect, zoomFactor, false);
</del><ins>+ configureToggleButton(checkboxCell, CheckboxPart, states, zoomedSize, zoomFactor, false);
</ins><span class="cx"> return checkboxCell;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -402,26 +402,27 @@
</span><span class="cx"> return false;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static void paintToggleButton(ControlPart buttonType, ControlStates* controlStates, GraphicsContext* context, const IntRect& zoomedRect, float zoomFactor, ScrollView* scrollView)
</del><ins>+static void paintToggleButton(ControlPart buttonType, ControlStates* controlStates, GraphicsContext* context, const FloatRect& zoomedRect, float zoomFactor, ScrollView* scrollView)
</ins><span class="cx"> {
</span><span class="cx"> BEGIN_BLOCK_OBJC_EXCEPTIONS
</span><span class="cx">
</span><span class="cx"> NSButtonCell *toggleButtonCell = static_cast<NSButtonCell*>(controlStates->platformControl());
</span><ins>+ IntSize zoomedRectSize = IntSize(zoomedRect.size());
</ins><span class="cx">
</span><span class="cx"> if (controlStates->isDirty()) {
</span><span class="cx"> if (!toggleButtonCell)
</span><span class="cx"> toggleButtonCell = createToggleButtonCell(buttonType);
</span><del>- configureToggleButton(toggleButtonCell, buttonType, controlStates, zoomedRect, zoomFactor, true);
</del><ins>+ configureToggleButton(toggleButtonCell, buttonType, controlStates, zoomedRectSize, zoomFactor, true);
</ins><span class="cx"> } else {
</span><span class="cx"> if (!toggleButtonCell) {
</span><span class="cx"> if (buttonType == CheckboxPart)
</span><del>- toggleButtonCell = sharedCheckboxCell(controlStates, zoomedRect, zoomFactor);
</del><ins>+ toggleButtonCell = sharedCheckboxCell(controlStates, zoomedRectSize, zoomFactor);
</ins><span class="cx"> else {
</span><span class="cx"> ASSERT(buttonType == RadioPart);
</span><del>- toggleButtonCell = sharedRadioCell(controlStates, zoomedRect, zoomFactor);
</del><ins>+ toggleButtonCell = sharedRadioCell(controlStates, zoomedRectSize, zoomFactor);
</ins><span class="cx"> }
</span><span class="cx"> }
</span><del>- configureToggleButton(toggleButtonCell, buttonType, controlStates, zoomedRect, zoomFactor, false);
</del><ins>+ configureToggleButton(toggleButtonCell, buttonType, controlStates, zoomedRectSize, zoomFactor, false);
</ins><span class="cx"> }
</span><span class="cx"> controlStates->setDirty(false);
</span><span class="cx">
</span><span class="lines">@@ -432,7 +433,7 @@
</span><span class="cx"> zoomedSize.setWidth(zoomedSize.width() * zoomFactor);
</span><span class="cx"> zoomedSize.setHeight(zoomedSize.height() * zoomFactor);
</span><span class="cx"> const int* controlMargins = buttonType == CheckboxPart ? checkboxMargins(controlSize) : radioMargins(controlSize);
</span><del>- IntRect inflatedRect = inflateRect(zoomedRect, zoomedSize, controlMargins, zoomFactor);
</del><ins>+ FloatRect inflatedRect = inflateRect(zoomedRect, zoomedSize, controlMargins, zoomFactor);
</ins><span class="cx">
</span><span class="cx"> if (zoomFactor != 1.0f) {
</span><span class="cx"> inflatedRect.setWidth(inflatedRect.width() / zoomFactor);
</span><span class="lines">@@ -509,24 +510,24 @@
</span><span class="cx"> return cell;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static void setUpButtonCell(NSButtonCell *cell, ControlPart part, const ControlStates* states, const IntRect& zoomedRect, float zoomFactor)
</del><ins>+static void setUpButtonCell(NSButtonCell *cell, ControlPart part, const ControlStates* states, const IntSize& zoomedSize, float zoomFactor)
</ins><span class="cx"> {
</span><span class="cx"> // Set the control size based off the rectangle we're painting into.
</span><span class="cx"> const std::array<IntSize, 3>& sizes = buttonSizes();
</span><del>- if (part == SquareButtonPart || zoomedRect.height() > buttonSizes()[NSRegularControlSize].height() * zoomFactor) {
</del><ins>+ if (part == SquareButtonPart || zoomedSize.height() > buttonSizes()[NSRegularControlSize].height() * zoomFactor) {
</ins><span class="cx"> // Use the square button
</span><span class="cx"> if ([cell bezelStyle] != NSShadowlessSquareBezelStyle)
</span><span class="cx"> [cell setBezelStyle:NSShadowlessSquareBezelStyle];
</span><span class="cx"> } else if ([cell bezelStyle] != NSRoundedBezelStyle)
</span><span class="cx"> [cell setBezelStyle:NSRoundedBezelStyle];
</span><span class="cx">
</span><del>- setControlSize(cell, sizes, zoomedRect.size(), zoomFactor);
</del><ins>+ setControlSize(cell, sizes, zoomedSize, zoomFactor);
</ins><span class="cx">
</span><span class="cx"> // Update the various states we respond to.
</span><span class="cx"> updateStates(cell, states);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static NSButtonCell *button(ControlPart part, const ControlStates* controlStates, const IntRect& zoomedRect, float zoomFactor)
</del><ins>+static NSButtonCell *button(ControlPart part, const ControlStates* controlStates, const IntSize& zoomedSize, float zoomFactor)
</ins><span class="cx"> {
</span><span class="cx"> ControlStates::States states = controlStates->states();
</span><span class="cx"> NSButtonCell *cell;
</span><span class="lines">@@ -537,24 +538,24 @@
</span><span class="cx"> static NSButtonCell *normalCell = leakButtonCell(NormalButtonCell);
</span><span class="cx"> cell = normalCell;
</span><span class="cx"> }
</span><del>- setUpButtonCell(cell, part, controlStates, zoomedRect, zoomFactor);
</del><ins>+ setUpButtonCell(cell, part, controlStates, zoomedSize, zoomFactor);
</ins><span class="cx"> return cell;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static void paintButton(ControlPart part, ControlStates* controlStates, GraphicsContext* context, const IntRect& zoomedRect, float zoomFactor, ScrollView* scrollView)
</del><ins>+static void paintButton(ControlPart part, ControlStates* controlStates, GraphicsContext* context, const FloatRect& zoomedRect, float zoomFactor, ScrollView* scrollView)
</ins><span class="cx"> {
</span><span class="cx"> BEGIN_BLOCK_OBJC_EXCEPTIONS
</span><span class="cx">
</span><span class="cx"> // Determine the width and height needed for the control and prepare the cell for painting.
</span><span class="cx"> ControlStates::States states = controlStates->states();
</span><del>- NSButtonCell *buttonCell = button(part, controlStates, zoomedRect, zoomFactor);
</del><ins>+ NSButtonCell *buttonCell = button(part, controlStates, IntSize(zoomedRect.size()), zoomFactor);
</ins><span class="cx"> GraphicsContextStateSaver stateSaver(*context);
</span><span class="cx">
</span><span class="cx"> NSControlSize controlSize = [buttonCell controlSize];
</span><span class="cx"> IntSize zoomedSize = buttonSizes()[controlSize];
</span><span class="cx"> zoomedSize.setWidth(zoomedRect.width()); // Buttons don't ever constrain width, so the zoomed width can just be honored.
</span><span class="cx"> zoomedSize.setHeight(zoomedSize.height() * zoomFactor);
</span><del>- IntRect inflatedRect = zoomedRect;
</del><ins>+ FloatRect inflatedRect = zoomedRect;
</ins><span class="cx"> if ([buttonCell bezelStyle] == NSRoundedBezelStyle) {
</span><span class="cx"> // Center the button within the available space.
</span><span class="cx"> if (inflatedRect.height() > zoomedSize.height()) {
</span><span class="lines">@@ -620,7 +621,7 @@
</span><span class="cx"> return NSMiniControlSize;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static void paintStepper(ControlStates* states, GraphicsContext* context, const IntRect& zoomedRect, float zoomFactor, ScrollView*)
</del><ins>+static void paintStepper(ControlStates* states, GraphicsContext* context, const FloatRect& zoomedRect, float zoomFactor, ScrollView*)
</ins><span class="cx"> {
</span><span class="cx"> // We don't use NSStepperCell because there are no ways to draw an
</span><span class="cx"> // NSStepperCell with the up button highlighted.
</span><span class="lines">@@ -629,7 +630,7 @@
</span><span class="cx"> drawInfo.version = 0;
</span><span class="cx"> drawInfo.state = convertControlStatesToThemeDrawState(kThemeIncDecButton, states);
</span><span class="cx"> drawInfo.adornment = kThemeAdornmentDefault;
</span><del>- ControlSize controlSize = controlSizeFromPixelSize(stepperSizes(), zoomedRect.size(), zoomFactor);
</del><ins>+ ControlSize controlSize = controlSizeFromPixelSize(stepperSizes(), IntSize(zoomedRect.size()), zoomFactor);
</ins><span class="cx"> if (controlSize == NSSmallControlSize)
</span><span class="cx"> drawInfo.kind = kThemeIncDecButtonSmall;
</span><span class="cx"> else if (controlSize == NSMiniControlSize)
</span><span class="lines">@@ -774,14 +775,15 @@
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void ThemeMac::inflateControlPaintRect(ControlPart part, const ControlStates* states, IntRect& zoomedRect, float zoomFactor) const
</del><ins>+void ThemeMac::inflateControlPaintRect(ControlPart part, const ControlStates* states, FloatRect& zoomedRect, float zoomFactor) const
</ins><span class="cx"> {
</span><span class="cx"> BEGIN_BLOCK_OBJC_EXCEPTIONS
</span><ins>+ IntSize zoomRectSize = IntSize(zoomedRect.size());
</ins><span class="cx"> switch (part) {
</span><span class="cx"> case CheckboxPart: {
</span><span class="cx"> // We inflate the rect as needed to account for padding included in the cell to accommodate the checkbox
</span><span class="cx"> // shadow" and the check. We don't consider this part of the bounds of the control in WebKit.
</span><del>- NSCell *cell = sharedCheckboxCell(states, zoomedRect, zoomFactor);
</del><ins>+ NSCell *cell = sharedCheckboxCell(states, zoomRectSize, zoomFactor);
</ins><span class="cx"> NSControlSize controlSize = [cell controlSize];
</span><span class="cx"> IntSize zoomedSize = checkboxSizes()[controlSize];
</span><span class="cx"> zoomedSize.setHeight(zoomedSize.height() * zoomFactor);
</span><span class="lines">@@ -792,7 +794,7 @@
</span><span class="cx"> case RadioPart: {
</span><span class="cx"> // We inflate the rect as needed to account for padding included in the cell to accommodate the radio button
</span><span class="cx"> // shadow". We don't consider this part of the bounds of the control in WebKit.
</span><del>- NSCell *cell = sharedRadioCell(states, zoomedRect, zoomFactor);
</del><ins>+ NSCell *cell = sharedRadioCell(states, zoomRectSize, zoomFactor);
</ins><span class="cx"> NSControlSize controlSize = [cell controlSize];
</span><span class="cx"> IntSize zoomedSize = radioSizes()[controlSize];
</span><span class="cx"> zoomedSize.setHeight(zoomedSize.height() * zoomFactor);
</span><span class="lines">@@ -803,7 +805,7 @@
</span><span class="cx"> case PushButtonPart:
</span><span class="cx"> case DefaultButtonPart:
</span><span class="cx"> case ButtonPart: {
</span><del>- NSButtonCell *cell = button(part, states, zoomedRect, zoomFactor);
</del><ins>+ NSButtonCell *cell = button(part, states, zoomRectSize, zoomFactor);
</ins><span class="cx"> NSControlSize controlSize = [cell controlSize];
</span><span class="cx">
</span><span class="cx"> // We inflate the rect as needed to account for the Aqua button's shadow.
</span><span class="lines">@@ -817,7 +819,7 @@
</span><span class="cx"> }
</span><span class="cx"> case InnerSpinButtonPart: {
</span><span class="cx"> static const int stepperMargin[4] = { 0, 0, 0, 0 };
</span><del>- ControlSize controlSize = controlSizeFromPixelSize(stepperSizes(), zoomedRect.size(), zoomFactor);
</del><ins>+ ControlSize controlSize = controlSizeFromPixelSize(stepperSizes(), zoomRectSize, zoomFactor);
</ins><span class="cx"> IntSize zoomedSize = stepperSizes()[controlSize];
</span><span class="cx"> zoomedSize.setHeight(zoomedSize.height() * zoomFactor);
</span><span class="cx"> zoomedSize.setWidth(zoomedSize.width() * zoomFactor);
</span><span class="lines">@@ -830,7 +832,7 @@
</span><span class="cx"> END_BLOCK_OBJC_EXCEPTIONS
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void ThemeMac::paint(ControlPart part, ControlStates* states, GraphicsContext* context, const IntRect& zoomedRect, float zoomFactor, ScrollView* scrollView)
</del><ins>+void ThemeMac::paint(ControlPart part, ControlStates* states, GraphicsContext* context, const FloatRect& zoomedRect, float zoomFactor, ScrollView* scrollView)
</ins><span class="cx"> {
</span><span class="cx"> switch (part) {
</span><span class="cx"> case CheckboxPart:
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBlockcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBlock.cpp (169927 => 169928)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBlock.cpp        2014-06-13 01:53:42 UTC (rev 169927)
+++ trunk/Source/WebCore/rendering/RenderBlock.cpp        2014-06-13 03:58:46 UTC (rev 169928)
</span><span class="lines">@@ -1171,9 +1171,9 @@
</span><span class="cx"> if (!style().hasAppearance())
</span><span class="cx"> return;
</span><span class="cx">
</span><del>- IntRect inflatedRect = pixelSnappedBorderBoxRect();
</del><ins>+ FloatRect inflatedRect = borderBoxRect();
</ins><span class="cx"> theme().adjustRepaintRect(*this, inflatedRect);
</span><del>- addVisualOverflow(inflatedRect);
</del><ins>+ addVisualOverflow(pixelSnappedIntRect(LayoutRect(inflatedRect)));
</ins><span class="cx">
</span><span class="cx"> if (RenderFlowThread* flowThread = flowThreadContainingBlock())
</span><span class="cx"> flowThread->addRegionsVisualOverflowFromTheme(this);
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderFlowThreadcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderFlowThread.cpp (169927 => 169928)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderFlowThread.cpp        2014-06-13 01:53:42 UTC (rev 169927)
+++ trunk/Source/WebCore/rendering/RenderFlowThread.cpp        2014-06-13 03:58:46 UTC (rev 169928)
</span><span class="lines">@@ -1381,10 +1381,10 @@
</span><span class="cx"> LayoutRect borderBox = block->borderBoxRectInRegion(region);
</span><span class="cx"> borderBox = region->rectFlowPortionForBox(block, borderBox);
</span><span class="cx">
</span><del>- IntRect inflatedRect = pixelSnappedIntRect(borderBox);
</del><ins>+ FloatRect inflatedRect = borderBox;
</ins><span class="cx"> block->theme().adjustRepaintRect(*block, inflatedRect);
</span><span class="cx">
</span><del>- region->addVisualOverflowForBox(block, inflatedRect);
</del><ins>+ region->addVisualOverflowForBox(block, pixelSnappedIntRect(LayoutRect(inflatedRect)));
</ins><span class="cx"> if (region == endRegion)
</span><span class="cx"> break;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderThemecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderTheme.cpp (169927 => 169928)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderTheme.cpp        2014-06-13 01:53:42 UTC (rev 169927)
+++ trunk/Source/WebCore/rendering/RenderTheme.cpp        2014-06-13 03:58:46 UTC (rev 169928)
</span><span class="lines">@@ -290,7 +290,7 @@
</span><span class="cx"> case ButtonPart:
</span><span class="cx"> case InnerSpinButtonPart:
</span><span class="cx"> updateControlStatesForRenderer(o, controlStates);
</span><del>- m_theme->paint(part, controlStates, const_cast<GraphicsContext*>(paintInfo.context), integralSnappedRect, o.style().effectiveZoom(), &o.view().frameView());
</del><ins>+ m_theme->paint(part, controlStates, const_cast<GraphicsContext*>(paintInfo.context), devicePixelSnappedRect, o.style().effectiveZoom(), &o.view().frameView());
</ins><span class="cx"> return false;
</span><span class="cx"> default:
</span><span class="cx"> break;
</span><span class="lines">@@ -720,14 +720,14 @@
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void RenderTheme::adjustRepaintRect(const RenderObject& o, IntRect& r)
</del><ins>+void RenderTheme::adjustRepaintRect(const RenderObject& renderer, FloatRect& rect)
</ins><span class="cx"> {
</span><span class="cx"> #if USE(NEW_THEME)
</span><del>- ControlStates states(extractControlStatesForRenderer(o));
- m_theme->inflateControlPaintRect(o.style().appearance(), &states, r, o.style().effectiveZoom());
</del><ins>+ ControlStates states(extractControlStatesForRenderer(renderer));
+ m_theme->inflateControlPaintRect(renderer.style().appearance(), &states, rect, renderer.style().effectiveZoom());
</ins><span class="cx"> #else
</span><del>- UNUSED_PARAM(o);
- UNUSED_PARAM(r);
</del><ins>+ UNUSED_PARAM(renderer);
+ UNUSED_PARAM(rect);
</ins><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderThemeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderTheme.h (169927 => 169928)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderTheme.h        2014-06-13 01:53:42 UTC (rev 169927)
+++ trunk/Source/WebCore/rendering/RenderTheme.h        2014-06-13 03:58:46 UTC (rev 169928)
</span><span class="lines">@@ -124,7 +124,7 @@
</span><span class="cx">
</span><span class="cx"> // Some controls may spill out of their containers (e.g., the check on an OS X checkbox). When these controls repaint,
</span><span class="cx"> // the theme needs to communicate this inflated rect to the engine so that it can invalidate the whole control.
</span><del>- virtual void adjustRepaintRect(const RenderObject&, IntRect&);
</del><ins>+ virtual void adjustRepaintRect(const RenderObject&, FloatRect&);
</ins><span class="cx">
</span><span class="cx"> // This method is called whenever a relevant state changes on a particular themed object, e.g., the mouse becomes pressed
</span><span class="cx"> // or a control becomes disabled.
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderThemeMach"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderThemeMac.h (169927 => 169928)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderThemeMac.h        2014-06-13 01:53:42 UTC (rev 169927)
+++ trunk/Source/WebCore/rendering/RenderThemeMac.h        2014-06-13 03:58:46 UTC (rev 169928)
</span><span class="lines">@@ -49,7 +49,7 @@
</span><span class="cx"> // A general method asking if any control tinting is supported at all.
</span><span class="cx"> virtual bool supportsControlTints() const override { return true; }
</span><span class="cx">
</span><del>- virtual void adjustRepaintRect(const RenderObject&, IntRect&) override;
</del><ins>+ virtual void adjustRepaintRect(const RenderObject&, FloatRect&) override;
</ins><span class="cx">
</span><span class="cx"> virtual bool isControlStyled(const RenderStyle*, const BorderData&, const FillLayer&, const Color& backgroundColor) const override;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderThemeMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderThemeMac.mm (169927 => 169928)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderThemeMac.mm        2014-06-13 01:53:42 UTC (rev 169927)
+++ trunk/Source/WebCore/rendering/RenderThemeMac.mm        2014-06-13 03:58:46 UTC (rev 169928)
</span><span class="lines">@@ -633,9 +633,9 @@
</span><span class="cx"> return result;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void RenderThemeMac::adjustRepaintRect(const RenderObject& o, IntRect& r)
</del><ins>+void RenderThemeMac::adjustRepaintRect(const RenderObject& renderer, FloatRect& rect)
</ins><span class="cx"> {
</span><del>- ControlPart part = o.style().appearance();
</del><ins>+ ControlPart part = renderer.style().appearance();
</ins><span class="cx">
</span><span class="cx"> #if USE(NEW_THEME)
</span><span class="cx"> switch (part) {
</span><span class="lines">@@ -646,20 +646,20 @@
</span><span class="cx"> case DefaultButtonPart:
</span><span class="cx"> case ButtonPart:
</span><span class="cx"> case InnerSpinButtonPart:
</span><del>- return RenderTheme::adjustRepaintRect(o, r);
</del><ins>+ return RenderTheme::adjustRepaintRect(renderer, rect);
</ins><span class="cx"> default:
</span><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx">
</span><del>- float zoomLevel = o.style().effectiveZoom();
</del><ins>+ float zoomLevel = renderer.style().effectiveZoom();
</ins><span class="cx">
</span><span class="cx"> if (part == MenulistPart) {
</span><del>- setPopupButtonCellState(o, r.size());
</del><ins>+ setPopupButtonCellState(renderer, IntSize(rect.size()));
</ins><span class="cx"> IntSize size = popupButtonSizes()[[popupButton() controlSize]];
</span><span class="cx"> size.setHeight(size.height() * zoomLevel);
</span><del>- size.setWidth(r.width());
- r = IntRect(inflateRect(r, size, popupButtonMargins(), zoomLevel));
</del><ins>+ size.setWidth(rect.width());
+ rect = inflateRect(rect, size, popupButtonMargins(), zoomLevel);
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre>
</div>
</div>
</body>
</html>