Title: [168728] trunk/Source/WebCore
Revision
168728
Author
[email protected]
Date
2014-05-13 13:43:36 -0700 (Tue, 13 May 2014)

Log Message

Update positioning/drawing of the image controls button.
<rdar://problem/16885077> and https://bugs.webkit.org/show_bug.cgi?id=132883

Reviewed by Tim Horton.

* html/shadow/mac/ImageControlsButtonElementMac.cpp:
(WebCore::ImageControlsButtonElementMac::maybeCreate): Add inline style for top/right
  positioning based on the metrics from the render theme.

* html/shadow/mac/imageControlsMac.css:
(.x-webkit-image-controls-button): Can’t hard code any positioning.

* rendering/RenderTheme.h:
(WebCore::RenderTheme::imageControlsButtonPositionOffset):
* rendering/RenderThemeMac.h:
* rendering/RenderThemeMac.mm:
(WebCore::RenderThemeMac::servicesRolloverButtonCell):
(WebCore::RenderThemeMac::imageControlsButtonPositionOffset):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (168727 => 168728)


--- trunk/Source/WebCore/ChangeLog	2014-05-13 19:32:43 UTC (rev 168727)
+++ trunk/Source/WebCore/ChangeLog	2014-05-13 20:43:36 UTC (rev 168728)
@@ -1,3 +1,24 @@
+2014-05-13  Brady Eidson  <[email protected]>
+
+        Update positioning/drawing of the image controls button.
+        <rdar://problem/16885077> and https://bugs.webkit.org/show_bug.cgi?id=132883
+
+        Reviewed by Tim Horton.
+
+        * html/shadow/mac/ImageControlsButtonElementMac.cpp:
+        (WebCore::ImageControlsButtonElementMac::maybeCreate): Add inline style for top/right
+          positioning based on the metrics from the render theme.
+
+        * html/shadow/mac/imageControlsMac.css:
+        (.x-webkit-image-controls-button): Can’t hard code any positioning.
+
+        * rendering/RenderTheme.h:
+        (WebCore::RenderTheme::imageControlsButtonPositionOffset):
+        * rendering/RenderThemeMac.h:
+        * rendering/RenderThemeMac.mm:
+        (WebCore::RenderThemeMac::servicesRolloverButtonCell):
+        (WebCore::RenderThemeMac::imageControlsButtonPositionOffset):
+
 2014-05-13  Simon Fraser  <[email protected]>
 
         [iOS WK2] background-attachment:fixed behaves very poorly

Modified: trunk/Source/WebCore/html/shadow/mac/ImageControlsButtonElementMac.cpp (168727 => 168728)


--- trunk/Source/WebCore/html/shadow/mac/ImageControlsButtonElementMac.cpp	2014-05-13 19:32:43 UTC (rev 168727)
+++ trunk/Source/WebCore/html/shadow/mac/ImageControlsButtonElementMac.cpp	2014-05-13 20:43:36 UTC (rev 168728)
@@ -97,6 +97,12 @@
     RefPtr<ImageControlsButtonElementMac> button = adoptRef(new ImageControlsButtonElementMac(document));
     button->setAttribute(HTMLNames::classAttr, "x-webkit-image-controls-button");
 
+    IntSize positionOffset = document.page()->theme().imageControlsButtonPositionOffset();
+    button->setInlineStyleProperty(CSSPropertyTop, String::format("%ipx", positionOffset.height()));
+
+    // FIXME: Why is right: 0px off the right edge of the parent?
+    button->setInlineStyleProperty(CSSPropertyRight, String::format("%ipx", positionOffset.width()));
+
     return button.release();
 }
 

Modified: trunk/Source/WebCore/html/shadow/mac/imageControlsMac.css (168727 => 168728)


--- trunk/Source/WebCore/html/shadow/mac/imageControlsMac.css	2014-05-13 19:32:43 UTC (rev 168727)
+++ trunk/Source/WebCore/html/shadow/mac/imageControlsMac.css	2014-05-13 20:43:36 UTC (rev 168728)
@@ -29,7 +29,6 @@
 
 .x-webkit-image-controls-button {
     position: absolute;
-    right: 18px; /* FIXME: Why is right: 0px off the right edge of the parent? */
 
     -webkit-appearance: image-controls-button;
 

Modified: trunk/Source/WebCore/rendering/RenderTheme.h (168727 => 168728)


--- trunk/Source/WebCore/rendering/RenderTheme.h	2014-05-13 19:32:43 UTC (rev 168727)
+++ trunk/Source/WebCore/rendering/RenderTheme.h	2014-05-13 20:43:36 UTC (rev 168728)
@@ -250,6 +250,7 @@
 
 #if ENABLE(SERVICE_CONTROLS)
     virtual IntSize imageControlsButtonSize(const RenderObject&) const { return IntSize(); }
+    virtual IntSize imageControlsButtonPositionOffset() const { return IntSize(); }
 #endif
 
 protected:

Modified: trunk/Source/WebCore/rendering/RenderThemeMac.h (168727 => 168728)


--- trunk/Source/WebCore/rendering/RenderThemeMac.h	2014-05-13 19:32:43 UTC (rev 168727)
+++ trunk/Source/WebCore/rendering/RenderThemeMac.h	2014-05-13 20:43:36 UTC (rev 168728)
@@ -231,6 +231,8 @@
 #if ENABLE(SERVICE_CONTROLS)
     virtual bool paintImageControlsButton(const RenderObject&, const PaintInfo&, const IntRect&) override;
     virtual IntSize imageControlsButtonSize(const RenderObject&) const override;
+    virtual IntSize imageControlsButtonPositionOffset() const override;
+
     NSServicesRolloverButtonCell *servicesRolloverButtonCell() const;
 #endif
 

Modified: trunk/Source/WebCore/rendering/RenderThemeMac.mm (168727 => 168728)


--- trunk/Source/WebCore/rendering/RenderThemeMac.mm	2014-05-13 19:32:43 UTC (rev 168727)
+++ trunk/Source/WebCore/rendering/RenderThemeMac.mm	2014-05-13 20:43:36 UTC (rev 168728)
@@ -2030,7 +2030,10 @@
 #if HAVE(APPKIT_SERVICE_CONTROLS_SUPPORT)
     if (!m_servicesRolloverButton) {
         m_servicesRolloverButton = [NSServicesRolloverButtonCell serviceRolloverButtonCellForStyle:NSSharingServicePickerStyleRollover];
-        [m_servicesRolloverButton setBordered:NO];
+        [m_servicesRolloverButton setBezelStyle:NSRoundedDisclosureBezelStyle];
+        [m_servicesRolloverButton setButtonType:NSPushOnPushOffButton];
+        [m_servicesRolloverButton setImagePosition:NSImageOnly];
+        [m_servicesRolloverButton setState:NO];
     }
 
     return m_servicesRolloverButton.get();
@@ -2071,7 +2074,22 @@
     return IntSize();
 #endif
 }
+
+IntSize RenderThemeMac::imageControlsButtonPositionOffset() const
+{
+#if HAVE(APPKIT_SERVICE_CONTROLS_SUPPORT)
+    // FIXME: Currently the offsets will always be the same no matter what image rect you try with.
+    // This may not always be true in the future.
+    static const int dummyDimension = 100;
+    IntRect dummyImageRect(0, 0, dummyDimension, dummyDimension);
+    NSRect bounds = [servicesRolloverButtonCell() rectForBounds:dummyImageRect preferredEdge:NSMinYEdge];
+
+    return IntSize(dummyDimension - bounds.origin.x, bounds.origin.y);
+#else
+    return IntSize();
 #endif
+}
+#endif
 
 } // namespace WebCore
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to