WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Preliminary patch
bug-85990-20120509164646.patch (text/plain), 4.92 KB, created by
Victor Carbune
on 2012-05-09 06:46:48 PDT
(
hide
)
Description:
Preliminary patch
Filename:
MIME Type:
Creator:
Victor Carbune
Created:
2012-05-09 06:46:48 PDT
Size:
4.92 KB
patch
obsolete
>Subversion Revision: 116303 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 02736d1109dc63a69f75aaa0eec629c7d11a0521..c720476f258fae8bc12d0901d50ad7f8966f367d 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,24 @@ >+2012-05-09 Victor Carbune <vcarbune@adobe.com> >+ >+ Volume slider needs to be displayed below the mute button >+ https://bugs.webkit.org/show_bug.cgi?id=85990 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ No new tests, only a preliminary patch. >+ >+ * css/mediaControlsChromium.css: >+ (::-webkit-media-controls * div[class="webkit-media-controls-volume-slider-below"]): >+ * html/shadow/MediaControlElements.cpp: >+ (RenderMediaVolumeSliderContainer): >+ (WebCore): >+ (WebCore::RenderMediaVolumeSliderContainer::RenderMediaVolumeSliderContainer): >+ (WebCore::RenderMediaVolumeSliderContainer::layout): >+ (WebCore::MediaControlVolumeSliderContainerElement::displayBelowMuteButton): >+ (WebCore::MediaControlVolumeSliderContainerElement::createRenderer): >+ * html/shadow/MediaControlElements.h: >+ (MediaControlVolumeSliderContainerElement): >+ > 2012-05-07 Csaba Osztrogonác <ossy@webkit.org> > > Buildfix for buggy GCC >diff --git a/Source/WebCore/css/mediaControlsChromium.css b/Source/WebCore/css/mediaControlsChromium.css >index 7323f2a46a232cbe554dc3c60fe45aef029656a7..fcfb0361754cbdea7c9d9655d3660bc17be24d5a 100644 >--- a/Source/WebCore/css/mediaControlsChromium.css >+++ b/Source/WebCore/css/mediaControlsChromium.css >@@ -173,3 +173,9 @@ audio::-webkit-media-controls-volume-slider, video::-webkit-media-controls-volum > width: 10px; > height: 80px; > } >+ >+div[class="webkit-media-controls-volume-slider-below"], >+::-webkit-media-controls * div[class="webkit-media-controls-volume-slider-below"] { >+ top: 32px; >+ -webkit-transform: translate(0%, 100%); >+} >diff --git a/Source/WebCore/html/shadow/MediaControlElements.cpp b/Source/WebCore/html/shadow/MediaControlElements.cpp >index 6ea485d1e8efdbefe595bca5c57469a14fea0e50..3a68fc92c584ff43f45ded0bcc397064eadbf407 100644 >--- a/Source/WebCore/html/shadow/MediaControlElements.cpp >+++ b/Source/WebCore/html/shadow/MediaControlElements.cpp >@@ -322,6 +322,36 @@ const AtomicString& MediaControlTimelineContainerElement::shadowPseudoId() const > > // ---------------------------- > >+class RenderMediaVolumeSliderContainer : public RenderBlock { >+public: >+ RenderMediaVolumeSliderContainer(Node*); >+ >+private: >+ virtual void layout(); >+}; >+ >+RenderMediaVolumeSliderContainer::RenderMediaVolumeSliderContainer(Node* node) >+ : RenderBlock(node) >+{ >+} >+ >+void RenderMediaVolumeSliderContainer::layout() >+{ >+ RenderBlock::layout(); >+ >+ if (style()->display() == NONE) >+ return; >+ >+ int absoluteOffsetTop = localToAbsolute(FloatPoint(0, -size().height())).y(); >+ >+ if (UNLIKELY(absoluteOffsetTop < 0)) { >+ MediaControlVolumeSliderContainerElement* slider = >+ static_cast<MediaControlVolumeSliderContainerElement*>(node()); >+ >+ slider->displayBelowMuteButton(true); >+ } >+} >+ > inline MediaControlVolumeSliderContainerElement::MediaControlVolumeSliderContainerElement(Document* document) > : MediaControlElement(document) > { >@@ -334,6 +364,21 @@ PassRefPtr<MediaControlVolumeSliderContainerElement> MediaControlVolumeSliderCon > return element.release(); > } > >+void MediaControlVolumeSliderContainerElement::displayBelowMuteButton(bool status) >+{ >+ DEFINE_STATIC_LOCAL(AtomicString, classAttribute, ("class")); >+ DEFINE_STATIC_LOCAL(AtomicString, classAttributeValue, ("webkit-media-controls-volume-slider-below")); >+ ExceptionCode ec; >+ >+ setAttribute(classAttribute, classAttributeValue, ec); >+ setNeedsStyleRecalc(); >+} >+ >+RenderObject* MediaControlVolumeSliderContainerElement::createRenderer(RenderArena *arena, RenderStyle *style) >+{ >+ return new (arena) RenderMediaVolumeSliderContainer(this); >+} >+ > void MediaControlVolumeSliderContainerElement::defaultEventHandler(Event* event) > { > if (!event->isMouseEvent() || event->type() != eventNames().mouseoutEvent) >diff --git a/Source/WebCore/html/shadow/MediaControlElements.h b/Source/WebCore/html/shadow/MediaControlElements.h >index 467e31d781529314737aa1fce9f0f6ae69c28c62..b643ac6bbc34552d0f757861e1ee0f86436cf6f5 100644 >--- a/Source/WebCore/html/shadow/MediaControlElements.h >+++ b/Source/WebCore/html/shadow/MediaControlElements.h >@@ -158,9 +158,11 @@ private: > class MediaControlVolumeSliderContainerElement : public MediaControlElement { > public: > static PassRefPtr<MediaControlVolumeSliderContainerElement> create(Document*); >+ void displayBelowMuteButton(bool); > > private: > MediaControlVolumeSliderContainerElement(Document*); >+ virtual RenderObject* createRenderer(RenderArena*, RenderStyle*); > virtual void defaultEventHandler(Event*); > virtual MediaControlElementType displayType() const; > virtual const AtomicString& shadowPseudoId() const;
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 85990
:
140931
|
141049
|
141160
|
141205
|
141216
|
141230
|
141257
|
141263
|
141609