Title: [171890] trunk/Source/WebCore
- Revision
- 171890
- Author
- [email protected]
- Date
- 2014-07-31 15:07:46 -0700 (Thu, 31 Jul 2014)
Log Message
Default buttons do not pulse in OS X 10.10
https://bugs.webkit.org/show_bug.cgi?id=135447
<rdar://problem/17875896>
Reviewed by Dan Bernstein.
OS X Yosemite does not have the animated pulsing default
buttons seen in previous releases. We don't need to have
a timer in RenderButton constantly triggering repaints.
* platform/mac/ThemeMac.mm:
(WebCore::paintButton): No need to advance the animation.
* rendering/RenderButton.cpp:
(WebCore::RenderButton::styleDidChange): Ask the theme if it
should advance the animation.
* rendering/RenderTheme.h:
(WebCore::RenderTheme::defaultButtonHasAnimation): Virtual function
indicating if the button needs to repaint.
* rendering/RenderThemeMac.h:
* rendering/RenderThemeMac.mm:
(WebCore::RenderThemeMac::defaultButtonHasAnimation): Provide platform
specific result on Yosemite and above.
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (171889 => 171890)
--- trunk/Source/WebCore/ChangeLog 2014-07-31 22:06:10 UTC (rev 171889)
+++ trunk/Source/WebCore/ChangeLog 2014-07-31 22:07:46 UTC (rev 171890)
@@ -1,3 +1,28 @@
+2014-07-31 Dean Jackson <[email protected]>
+
+ Default buttons do not pulse in OS X 10.10
+ https://bugs.webkit.org/show_bug.cgi?id=135447
+ <rdar://problem/17875896>
+
+ Reviewed by Dan Bernstein.
+
+ OS X Yosemite does not have the animated pulsing default
+ buttons seen in previous releases. We don't need to have
+ a timer in RenderButton constantly triggering repaints.
+
+ * platform/mac/ThemeMac.mm:
+ (WebCore::paintButton): No need to advance the animation.
+ * rendering/RenderButton.cpp:
+ (WebCore::RenderButton::styleDidChange): Ask the theme if it
+ should advance the animation.
+ * rendering/RenderTheme.h:
+ (WebCore::RenderTheme::defaultButtonHasAnimation): Virtual function
+ indicating if the button needs to repaint.
+ * rendering/RenderThemeMac.h:
+ * rendering/RenderThemeMac.mm:
+ (WebCore::RenderThemeMac::defaultButtonHasAnimation): Provide platform
+ specific result on Yosemite and above.
+
2014-07-31 Tim Horton <[email protected]>
DOM::renderedImageForcingBlackText returns an image with the wrong logical size on 2x displays
Modified: trunk/Source/WebCore/platform/mac/ThemeMac.mm (171889 => 171890)
--- trunk/Source/WebCore/platform/mac/ThemeMac.mm 2014-07-31 22:06:10 UTC (rev 171889)
+++ trunk/Source/WebCore/platform/mac/ThemeMac.mm 2014-07-31 22:07:46 UTC (rev 171890)
@@ -563,7 +563,9 @@
if (states & ControlStates::DefaultState) {
[window setDefaultButtonCell:buttonCell];
+#if __MAC_OS_X_VERSION_MIN_REQUIRED < 101000
wkAdvanceDefaultButtonPulseAnimation(buttonCell);
+#endif
} else if ([previousDefaultButtonCell isEqual:buttonCell])
[window setDefaultButtonCell:nil];
Modified: trunk/Source/WebCore/rendering/RenderButton.cpp (171889 => 171890)
--- trunk/Source/WebCore/rendering/RenderButton.cpp 2014-07-31 22:06:10 UTC (rev 171889)
+++ trunk/Source/WebCore/rendering/RenderButton.cpp 2014-07-31 22:07:46 UTC (rev 171890)
@@ -114,9 +114,11 @@
setupInnerStyle(&m_inner->style());
if (!m_default && theme().isDefault(*this)) {
- if (!m_timer)
- m_timer = std::make_unique<Timer<RenderButton>>(this, &RenderButton::timerFired);
- m_timer->startRepeating(0.03);
+ if (theme().defaultButtonHasAnimation()) {
+ if (!m_timer)
+ m_timer = std::make_unique<Timer<RenderButton>>(this, &RenderButton::timerFired);
+ m_timer->startRepeating(0.03);
+ }
m_default = true;
} else if (m_default && !theme().isDefault(*this)) {
m_default = false;
Modified: trunk/Source/WebCore/rendering/RenderTheme.h (171889 => 171890)
--- trunk/Source/WebCore/rendering/RenderTheme.h 2014-07-31 22:06:10 UTC (rev 171889)
+++ trunk/Source/WebCore/rendering/RenderTheme.h 2014-07-31 22:07:46 UTC (rev 171890)
@@ -249,6 +249,8 @@
virtual IntSize imageControlsButtonPositionOffset() const { return IntSize(); }
#endif
+ virtual bool defaultButtonHasAnimation() const { return false; }
+
protected:
// The platform selection color.
virtual Color platformActiveSelectionBackgroundColor() const;
Modified: trunk/Source/WebCore/rendering/RenderThemeMac.h (171889 => 171890)
--- trunk/Source/WebCore/rendering/RenderThemeMac.h 2014-07-31 22:06:10 UTC (rev 171889)
+++ trunk/Source/WebCore/rendering/RenderThemeMac.h 2014-07-31 22:07:46 UTC (rev 171890)
@@ -106,6 +106,8 @@
// A view associated to the contained document.
NSView* documentViewFor(const RenderObject&) const;
+ virtual bool defaultButtonHasAnimation() const override;
+
protected:
RenderThemeMac();
virtual ~RenderThemeMac();
Modified: trunk/Source/WebCore/rendering/RenderThemeMac.mm (171889 => 171890)
--- trunk/Source/WebCore/rendering/RenderThemeMac.mm 2014-07-31 22:06:10 UTC (rev 171889)
+++ trunk/Source/WebCore/rendering/RenderThemeMac.mm 2014-07-31 22:07:46 UTC (rev 171890)
@@ -2024,6 +2024,15 @@
return StringTruncator::centerTruncate(strToTruncate, width, font, StringTruncator::EnableRoundingHacks);
}
+bool RenderThemeMac::defaultButtonHasAnimation() const
+{
+#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 101000
+ return false;
+#else
+ return true;
+#endif
+}
+
#if ENABLE(SERVICE_CONTROLS)
NSServicesRolloverButtonCell* RenderThemeMac::servicesRolloverButtonCell() const
{
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes