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

Reply via email to