REGRESSION (r82786): Media controls render incorrectly on GTK and Qt
authormitz@apple.com <mitz@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 3 Apr 2011 05:40:51 +0000 (05:40 +0000)
committermitz@apple.com <mitz@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 3 Apr 2011 05:40:51 +0000 (05:40 +0000)
https://bugs.webkit.org/show_bug.cgi?id=57719

Reviewed by Maciej Stachowiak.

r82786 exposed an incorrect assumption inRenderMediaControlTimeDisplay::layout()
that the timeline container is the parent of the time display. This is not true
with the GTK media style, where the current time display is an inline box, and
thus wrapped in an anonymous flexible box. The code was incorrectly considering
the width of the anonymous box and deciding to hide the time display. Prior to
r82786, this mistake was corrected by the call to computeLogicalWidth() in line layout.

* rendering/MediaControlElements.cpp:
(WebCore::RenderMediaControlTimeDisplay::layout): Changed to skip past anonymous ancestors.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@82788 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/rendering/MediaControlElements.cpp

index 67888aa6ceaff9f07ebd21a3117cb0c07c82350f..139671a9b689eb07d26309921e92e04b39194892 100644 (file)
@@ -1,3 +1,20 @@
+2011-04-02  Dan Bernstein  <mitz@apple.com>
+
+        Reviewed by Maciej Stachowiak.
+
+        REGRESSION (r82786): Media controls render incorrectly on GTK and Qt
+        https://bugs.webkit.org/show_bug.cgi?id=57719
+
+        r82786 exposed an incorrect assumption inRenderMediaControlTimeDisplay::layout()
+        that the timeline container is the parent of the time display. This is not true
+        with the GTK media style, where the current time display is an inline box, and
+        thus wrapped in an anonymous flexible box. The code was incorrectly considering
+        the width of the anonymous box and deciding to hide the time display. Prior to
+        r82786, this mistake was corrected by the call to computeLogicalWidth() in line layout.
+
+        * rendering/MediaControlElements.cpp:
+        (WebCore::RenderMediaControlTimeDisplay::layout): Changed to skip past anonymous ancestors.
+
 2011-04-02  Nico Weber  <thakis@chromium.org>
 
         Reviewed by Adam Barth.
index be64947fcd8f3a85f604b7ef89795c263e532718..49c45784aa772914471226be5397d78e4acb285e 100644 (file)
@@ -1055,6 +1055,9 @@ void RenderMediaControlTimeDisplay::layout()
 {
     RenderFlexibleBox::layout();
     RenderBox* timelineContainerBox = parentBox();
+    while (timelineContainerBox && timelineContainerBox->isAnonymous())
+        timelineContainerBox = timelineContainerBox->parentBox();
+
     if (timelineContainerBox && timelineContainerBox->width() < minWidthToDisplayTimeDisplays)
         setWidth(0);
 }