Changeset 47744 in webkit
- Timestamp:
- Aug 25, 2009 5:04:25 AM (15 years ago)
- Location:
- trunk/WebCore
- Files:
-
- 18 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r47743 r47744 1 2009-08-25 Alpha Lam <hclam@chromium.org> 2 3 Reviewed by David Levin. 4 5 Media controls panel does not have a volume control slider 6 https://bugs.webkit.org/show_bug.cgi?id=28241 7 8 Introduced "-webkit-media-controls-volume-slider", 9 "-webkit-media-controls-volume-slider-container" and the supporting 10 implementation. Also added appearances of "media-volume-slider" and 11 "media-volume-slider-container". 12 13 The implementation of the controls are in WebCore::MediaControlElements. 14 Logic to trigger the display of the volume controls are in WebCore::RenderMedia. 15 16 No new tests since this change doesn't have theme implementation and the 17 volume slider is disabled by default. 18 19 * accessibility/AccessibilitySlider.cpp: 20 (WebCore::AccessibilitySlider::orientation): Marks that volume slider is vertical. 21 * css/CSSPrimitiveValueMappings.h: 22 (WebCore::CSSPrimitiveValue::CSSPrimitiveValue): Added corresponding CSS values. 23 * css/CSSSelector.cpp: 24 (WebCore::CSSSelector::extractPseudoType): ditto. 25 * css/CSSSelector.h: 26 (WebCore::CSSSelector::): ditto. 27 * css/CSSStyleSelector.cpp: 28 (WebCore::CSSStyleSelector::SelectorChecker::checkOneSelector): ditto. 29 * css/CSSValueKeywords.in: ditto. 30 * css/mediaControls.css: Makes the volume slider disabled by default. 31 * platform/ThemeTypes.h: Defines theme parts for volume slider and its container. 32 (WebCore::): 33 * rendering/MediaControlElements.cpp: 34 (WebCore::MediaControlVolumeSliderContainerElement::MediaControlVolumeSliderContainerElement): 35 (WebCore::MediaControlVolumeSliderContainerElement::styleForElement): 36 Adjust the CSS values for "display", "postion", "left" and "top" according to member variables. 37 (WebCore::MediaControlVolumeSliderContainerElement::setVisible): Affects the "display" CSS value. 38 (WebCore::MediaControlVolumeSliderContainerElement::setPosition): Affects the "left" and "top" CSS values. 39 (WebCore::MediaControlVolumeSliderContainerElement::hitTest): Hit testing this element. 40 (WebCore::MediaControlVolumeSliderElement::MediaControlVolumeSliderElement): 41 (WebCore::MediaControlVolumeSliderElement::defaultEventHandler): Modifies the volume using the slider value, allows dragging. 42 * rendering/MediaControlElements.h: 43 (WebCore::): Added definition for MediaControlVolumeSliderElement and MediaControlVolumeSliderContainerElement. 44 (WebCore::MediaControlVolumeSliderContainerElement::isVisible): Inline getter. 45 * rendering/RenderMedia.cpp: 46 (WebCore::RenderMedia::styleDidChange): Updates styles for volume container and volume slider. 47 (WebCore::RenderMedia::createVolumeSliderContainer): Creates volume slider container and attach to panel. 48 (WebCore::RenderMedia::createVolumeSlider): Creates volume slider and attach to volume slider container. 49 (WebCore::RenderMedia::updateControls): Updates volume container and volume slider. 50 (WebCore::RenderMedia::updateVolumeSliderContainer): Sets the visibility and position of volume slider container and its child. 51 (WebCore::RenderMedia::forwardEvent): 52 Hit testing the volume slider container and volume slider to toggle the visibility and forward events to slider. 53 * rendering/RenderMedia.h: 54 Added definition for RenderMedia::updateVolumeSliderContainer(). 55 * rendering/RenderMediaControls.cpp: 56 (WebCore::RenderMediaControls::paintMediaControlsPart): Not implemented. 57 * rendering/RenderSlider.cpp: 58 (WebCore::RenderSlider::createThumbStyle): Makes volume slider vertical. 59 (WebCore::RenderSlider::thumbRect): ditto. 60 (WebCore::RenderSlider::mouseEventIsInThumb): ditto. 61 (WebCore::RenderSlider::setValueForPosition): ditto. 62 (WebCore::RenderSlider::positionForOffset): ditto. 63 (WebCore::RenderSlider::currentPosition): ditto. 64 (WebCore::RenderSlider::trackSize): ditto. 65 * rendering/RenderTheme.cpp: 66 (WebCore::RenderTheme::adjustStyle): Adjust style for volume slider thumb. 67 (WebCore::RenderTheme::paint): Paints volume control parts using theme. 68 * rendering/RenderTheme.h: 69 (WebCore::RenderTheme::paintMediaVolumeSliderContainer): Naive implementation to be overridden. 70 (WebCore::RenderTheme::paintMediaVolumeSliderTrack): ditto. 71 (WebCore::RenderTheme::paintMediaVolumeSliderThumb): ditto. 72 * rendering/style/RenderStyleConstants.h: 73 (WebCore::): Constants for volume control parts. 74 1 75 2009-08-25 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> 2 76 -
trunk/WebCore/accessibility/AccessibilitySlider.cpp
r46815 r47744 76 76 case SliderThumbVerticalPart: 77 77 case SliderVerticalPart: 78 case MediaVolumeSliderPart: 78 79 return AccessibilityOrientationVertical; 79 80 -
trunk/WebCore/css/CSSPrimitiveValueMappings.h
r47648 r47744 229 229 m_value.ident = CSSValueMediaSliderthumb; 230 230 break; 231 case MediaVolumeSliderContainerPart: 232 m_value.ident = CSSValueMediaVolumeSliderContainer; 233 break; 234 case MediaVolumeSliderPart: 235 m_value.ident = CSSValueMediaVolumeSlider; 236 break; 237 case MediaVolumeSliderThumbPart: 238 m_value.ident = CSSValueMediaVolumeSliderthumb; 239 break; 231 240 case MediaControlsBackgroundPart: 232 241 m_value.ident = CSSValueMediaControlsBackground; -
trunk/WebCore/css/CSSSelector.cpp
r47444 r47744 109 109 DEFINE_STATIC_LOCAL(AtomicString, mediaControlsPlayButton, ("-webkit-media-controls-play-button")); 110 110 DEFINE_STATIC_LOCAL(AtomicString, mediaControlsTimeline, ("-webkit-media-controls-timeline")); 111 DEFINE_STATIC_LOCAL(AtomicString, mediaControlsVolumeSlider, ("-webkit-media-controls-volume-slider")); 111 112 DEFINE_STATIC_LOCAL(AtomicString, mediaControlsSeekBackButton, ("-webkit-media-controls-seek-back-button")); 112 113 DEFINE_STATIC_LOCAL(AtomicString, mediaControlsSeekForwardButton, ("-webkit-media-controls-seek-forward-button")); … … 116 117 DEFINE_STATIC_LOCAL(AtomicString, mediaControlsFullscreenButton, ("-webkit-media-controls-fullscreen-button")); 117 118 DEFINE_STATIC_LOCAL(AtomicString, mediaControlsTimelineContainer, ("-webkit-media-controls-timeline-container")); 119 DEFINE_STATIC_LOCAL(AtomicString, mediaControlsVolumeSliderContainer, ("-webkit-media-controls-volume-slider-container")); 118 120 DEFINE_STATIC_LOCAL(AtomicString, mediaControlsCurrentTimeDisplay, ("-webkit-media-controls-current-time-display")); 119 121 DEFINE_STATIC_LOCAL(AtomicString, mediaControlsTimeRemainingDisplay, ("-webkit-media-controls-time-remaining-display")); … … 245 247 m_pseudoType = PseudoMediaControlsTimeline; 246 248 element = true; 249 } else if (m_value == mediaControlsVolumeSlider) { 250 m_pseudoType = PseudoMediaControlsVolumeSlider; 251 element = true; 247 252 } else if (m_value == mediaControlsSeekBackButton) { 248 253 m_pseudoType = PseudoMediaControlsSeekBackButton; … … 265 270 } else if (m_value == mediaControlsTimelineContainer) { 266 271 m_pseudoType = PseudoMediaControlsTimelineContainer; 272 element = true; 273 } else if (m_value == mediaControlsVolumeSliderContainer) { 274 m_pseudoType = PseudoMediaControlsVolumeSliderContainer; 267 275 element = true; 268 276 } else if (m_value == notStr) -
trunk/WebCore/css/CSSSelector.h
r47444 r47744 174 174 PseudoMediaControlsPlayButton, 175 175 PseudoMediaControlsTimelineContainer, 176 PseudoMediaControlsVolumeSliderContainer, 176 177 PseudoMediaControlsCurrentTimeDisplay, 177 178 PseudoMediaControlsTimeRemainingDisplay, 178 179 PseudoMediaControlsTimeline, 180 PseudoMediaControlsVolumeSlider, 179 181 PseudoMediaControlsSeekBackButton, 180 182 PseudoMediaControlsSeekForwardButton, -
trunk/WebCore/css/CSSStyleSelector.cpp
r47630 r47744 2508 2508 case CSSSelector::PseudoMediaControlsTimelineContainer: 2509 2509 dynamicPseudo = MEDIA_CONTROLS_TIMELINE_CONTAINER; 2510 return true; 2510 return true; 2511 case CSSSelector::PseudoMediaControlsVolumeSliderContainer: 2512 dynamicPseudo = MEDIA_CONTROLS_VOLUME_SLIDER_CONTAINER; 2513 return true; 2511 2514 case CSSSelector::PseudoMediaControlsCurrentTimeDisplay: 2512 2515 dynamicPseudo = MEDIA_CONTROLS_CURRENT_TIME_DISPLAY; … … 2517 2520 case CSSSelector::PseudoMediaControlsTimeline: 2518 2521 dynamicPseudo = MEDIA_CONTROLS_TIMELINE; 2522 return true; 2523 case CSSSelector::PseudoMediaControlsVolumeSlider: 2524 dynamicPseudo = MEDIA_CONTROLS_VOLUME_SLIDER; 2519 2525 return true; 2520 2526 case CSSSelector::PseudoMediaControlsSeekBackButton: -
trunk/WebCore/css/CSSValueKeywords.in
r47648 r47744 513 513 media-slider 514 514 media-sliderthumb 515 media-volume-slider-container 516 media-volume-slider 517 media-volume-sliderthumb 515 518 media-controls-background 516 519 media-current-time-display -
trunk/WebCore/css/mediaControls.css
r45474 r47744 89 89 } 90 90 91 audio::-webkit-media-controls-volume-slider-container, video::-webkit-media-controls-volume-slider-container { 92 display: none; 93 } 94 95 audio::-webkit-media-controls-volume-slider, video::-webkit-media-controls-volume-slider { 96 display: none; 97 } 98 91 99 audio::-webkit-media-controls-seek-back-button, video::-webkit-media-controls-seek-back-button { 92 100 -webkit-appearance: media-seek-back-button; -
trunk/WebCore/platform/ThemeTypes.h
r45474 r47744 50 50 MediaFullscreenButtonPart, MediaMuteButtonPart, MediaPlayButtonPart, MediaSeekBackButtonPart, 51 51 MediaSeekForwardButtonPart, MediaRewindButtonPart, MediaReturnToRealtimeButtonPart, 52 MediaSliderPart, 53 MediaSliderThumbPart, MediaControlsBackgroundPart, 54 MediaCurrentTimePart, MediaTimeRemainingPart, 52 MediaSliderPart, MediaSliderThumbPart, MediaVolumeSliderContainerPart, MediaVolumeSliderPart, MediaVolumeSliderThumbPart, 53 MediaControlsBackgroundPart, MediaCurrentTimePart, MediaTimeRemainingPart, 55 54 MenulistPart, MenulistButtonPart, MenulistTextPart, MenulistTextFieldPart, 56 55 SliderHorizontalPart, SliderVerticalPart, SliderThumbHorizontalPart, -
trunk/WebCore/rendering/MediaControlElements.cpp
r47515 r47744 184 184 } 185 185 186 186 // ---------------------------- 187 188 MediaControlVolumeSliderContainerElement::MediaControlVolumeSliderContainerElement(Document* doc, HTMLMediaElement* element) 189 : MediaControlElement(doc, MEDIA_CONTROLS_VOLUME_SLIDER_CONTAINER, element) 190 , m_isVisible(false) 191 , m_x(0) 192 , m_y(0) 193 { 194 } 195 196 PassRefPtr<RenderStyle> MediaControlVolumeSliderContainerElement::styleForElement() 197 { 198 RefPtr<RenderStyle> style = MediaControlElement::styleForElement(); 199 style->setPosition(AbsolutePosition); 200 style->setLeft(Length(m_x, Fixed)); 201 style->setTop(Length(m_y, Fixed)); 202 style->setDisplay(m_isVisible ? BLOCK : NONE); 203 return style; 204 } 205 206 void MediaControlVolumeSliderContainerElement::setVisible(bool visible) 207 { 208 if (visible == m_isVisible) 209 return; 210 m_isVisible = visible; 211 } 212 213 void MediaControlVolumeSliderContainerElement::setPosition(int x, int y) 214 { 215 if (x == m_x && y == m_y) 216 return; 217 m_x = x; 218 m_y = y; 219 } 220 221 bool MediaControlVolumeSliderContainerElement::hitTest(const IntPoint& absPoint) 222 { 223 if (renderer() && renderer()->style()->hasAppearance()) 224 return renderer()->theme()->hitTestMediaControlPart(renderer(), absPoint); 225 226 return false; 227 } 228 187 229 // ---------------------------- 188 230 … … 529 571 // ---------------------------- 530 572 573 MediaControlVolumeSliderElement::MediaControlVolumeSliderElement(Document* document, HTMLMediaElement* element) 574 : MediaControlInputElement(document, MEDIA_CONTROLS_VOLUME_SLIDER, "range", element, MediaVolumeSlider) 575 { 576 setAttribute(maxAttr, "1"); 577 } 578 579 void MediaControlVolumeSliderElement::defaultEventHandler(Event* event) 580 { 581 // Left button is 0. Rejects mouse events not from left button. 582 if (event->isMouseEvent() && static_cast<MouseEvent*>(event)->button()) 583 return; 584 585 MediaControlInputElement::defaultEventHandler(event); 586 587 if (event->type() == eventNames().mouseoverEvent || event->type() == eventNames().mouseoutEvent || event->type() == eventNames().mousemoveEvent) 588 return; 589 590 float volume = narrowPrecisionToFloat(value().toDouble()); 591 if (volume != m_mediaElement->volume()) { 592 ExceptionCode ec = 0; 593 m_mediaElement->setVolume(volume, ec); 594 ASSERT(!ec); 595 } 596 } 597 598 // ---------------------------- 599 531 600 MediaControlFullscreenButtonElement::MediaControlFullscreenButtonElement(Document* document, HTMLMediaElement* element) 532 601 : MediaControlInputElement(document, MEDIA_CONTROLS_FULLSCREEN_BUTTON, "button", element, MediaFullscreenButton) -
trunk/WebCore/rendering/MediaControlElements.h
r47515 r47744 58 58 MediaPauseButton, 59 59 MediaTimelineContainer, 60 MediaCurrentTimeDisplay, 60 MediaCurrentTimeDisplay, 61 61 MediaTimeRemainingDisplay, 62 62 MediaStatusDisplay, 63 MediaControlsPanel 63 MediaControlsPanel, 64 MediaVolumeSliderContainer, 65 MediaVolumeSlider, 66 MediaVolumeSliderThumb 64 67 }; 65 68 … … 101 104 MediaControlTimelineContainerElement(Document*, HTMLMediaElement*); 102 105 virtual bool rendererIsNeeded(RenderStyle*); 106 }; 107 108 // ---------------------------- 109 110 class MediaControlVolumeSliderContainerElement : public MediaControlElement { 111 public: 112 MediaControlVolumeSliderContainerElement(Document*, HTMLMediaElement*); 113 virtual PassRefPtr<RenderStyle> styleForElement(); 114 void setVisible(bool); 115 bool isVisible() { return m_isVisible; } 116 void setPosition(int x, int y); 117 bool hitTest(const IntPoint& absPoint); 118 119 private: 120 bool m_isVisible; 121 int m_x, m_y; 103 122 }; 104 123 … … 208 227 // ---------------------------- 209 228 229 class MediaControlVolumeSliderElement : public MediaControlInputElement { 230 public: 231 MediaControlVolumeSliderElement(Document*, HTMLMediaElement*); 232 virtual void defaultEventHandler(Event*); 233 }; 234 235 // ---------------------------- 236 210 237 class MediaControlFullscreenButtonElement : public MediaControlInputElement { 211 238 public: -
trunk/WebCore/rendering/RenderMedia.cpp
r47140 r47744 34 34 #include "MediaControlElements.h" 35 35 #include "MouseEvent.h" 36 #include "RenderTheme.h" 36 37 #include <wtf/CurrentTime.h> 37 38 #include <wtf/MathExtras.h> … … 133 134 if (m_timeRemainingDisplay) 134 135 m_timeRemainingDisplay->updateStyle(); 136 if (m_volumeSliderContainer) 137 m_volumeSliderContainer->updateStyle(); 138 if (m_volumeSlider) 139 m_volumeSlider->updateStyle(); 135 140 } 136 141 } … … 239 244 m_timeline->setAttribute(precisionAttr, "float"); 240 245 m_timeline->attachToParent(m_timelineContainer.get()); 246 } 247 248 void RenderMedia::createVolumeSliderContainer() 249 { 250 ASSERT(!m_volumeSliderContainer); 251 m_volumeSliderContainer = new MediaControlVolumeSliderContainerElement(document(), mediaElement()); 252 m_volumeSliderContainer->attachToParent(m_panel.get()); 253 } 254 255 void RenderMedia::createVolumeSlider() 256 { 257 ASSERT(!m_volumeSlider); 258 m_volumeSlider = new MediaControlVolumeSliderElement(document(), mediaElement()); 259 m_volumeSlider->setAttribute(precisionAttr, "float"); 260 m_volumeSlider->attachToParent(m_volumeSliderContainer.get()); 241 261 } 242 262 … … 286 306 m_timeRemainingDisplay = 0; 287 307 m_fullscreenButton = 0; 308 m_volumeSliderContainer = 0; 309 m_volumeSlider = 0; 288 310 m_controlsShadowRoot = 0; 289 311 } … … 304 326 createStatusDisplay(); 305 327 createTimelineContainer(); 328 createVolumeSliderContainer(); 306 329 createSeekBackButton(); 307 330 createSeekForwardButton(); 308 331 createFullscreenButton(); 332 if (m_volumeSliderContainer) 333 createVolumeSlider(); 309 334 if (m_timelineContainer) { 310 335 createCurrentTimeDisplay(); … … 337 362 if (m_timelineContainer) 338 363 m_timelineContainer->update(); 364 if (m_volumeSliderContainer) 365 m_volumeSliderContainer->update(); 339 366 if (m_timeline) 340 367 m_timeline->update(); … … 355 382 if (m_fullscreenButton) 356 383 m_fullscreenButton->update(); 384 if (m_volumeSlider) 385 m_volumeSlider->update(); 357 386 358 387 updateTimeDisplay(); … … 464 493 } 465 494 495 void RenderMedia::updateVolumeSliderContainer(bool visible) 496 { 497 if (!mediaElement()->hasAudio() || !m_volumeSliderContainer || !m_volumeSlider) 498 return; 499 500 if (visible && !m_volumeSliderContainer->isVisible()) { 501 if (!m_muteButton || !m_muteButton->renderer() || !m_muteButton->renderBox()) 502 return; 503 504 RefPtr<RenderStyle> s = m_volumeSliderContainer->styleForElement(); 505 int height = s->height().isPercent() ? 0 : s->height().value(); 506 int x = m_muteButton->renderBox()->offsetLeft(); 507 int y = m_muteButton->renderBox()->offsetTop() - height; 508 FloatPoint absPoint = m_muteButton->renderer()->localToAbsolute(FloatPoint(x, y), true, true); 509 if (absPoint.y() < 0) 510 y = m_muteButton->renderBox()->offsetTop() + m_muteButton->renderBox()->height(); 511 m_volumeSliderContainer->setVisible(true); 512 m_volumeSliderContainer->setPosition(x, y); 513 m_volumeSliderContainer->update(); 514 m_volumeSlider->update(); 515 } else if (!visible && m_volumeSliderContainer->isVisible()) { 516 m_volumeSliderContainer->setVisible(false); 517 m_volumeSliderContainer->updateStyle(); 518 } 519 } 520 466 521 void RenderMedia::forwardEvent(Event* event) 467 522 { … … 469 524 MouseEvent* mouseEvent = static_cast<MouseEvent*>(event); 470 525 IntPoint point(mouseEvent->absoluteLocation()); 471 if (m_muteButton && m_muteButton->hitTest(point)) 526 bool showVolumeSlider = false; 527 if (m_muteButton && m_muteButton->hitTest(point)) { 472 528 m_muteButton->defaultEventHandler(event); 529 if (event->type() != eventNames().mouseoutEvent) 530 showVolumeSlider = true; 531 } 532 533 if (m_volumeSliderContainer && m_volumeSliderContainer->hitTest(point)) 534 showVolumeSlider = true; 535 536 if (m_volumeSlider && m_volumeSlider->hitTest(point)) { 537 m_volumeSlider->defaultEventHandler(event); 538 showVolumeSlider = true; 539 } 540 541 updateVolumeSliderContainer(showVolumeSlider); 473 542 474 543 if (m_playButton && m_playButton->hitTest(point)) -
trunk/WebCore/rendering/RenderMedia.h
r47140 r47744 42 42 class MediaControlReturnToRealtimeButtonElement; 43 43 class MediaControlTimelineElement; 44 class MediaControlVolumeSliderElement; 44 45 class MediaControlFullscreenButtonElement; 45 46 class MediaControlTimeDisplayElement; 46 47 class MediaControlStatusDisplayElement; 47 48 class MediaControlTimelineContainerElement; 49 class MediaControlVolumeSliderContainerElement; 48 50 class MediaControlElement; 49 51 class MediaPlayer; … … 100 102 void createTimelineContainer(); 101 103 void createTimeline(); 104 void createVolumeSliderContainer(); 105 void createVolumeSlider(); 102 106 void createCurrentTimeDisplay(); 103 107 void createTimeRemainingDisplay(); … … 109 113 void changeOpacity(HTMLElement*, float opacity); 110 114 void opacityAnimationTimerFired(Timer<RenderMedia>*); 115 116 void updateVolumeSliderContainer(bool visible); 111 117 112 118 virtual void styleDidChange(StyleDifference, const RenderStyle* oldStyle); … … 121 127 RefPtr<MediaControlReturnToRealtimeButtonElement> m_returnToRealtimeButton; 122 128 RefPtr<MediaControlTimelineElement> m_timeline; 129 RefPtr<MediaControlVolumeSliderElement> m_volumeSlider; 123 130 RefPtr<MediaControlFullscreenButtonElement> m_fullscreenButton; 124 131 RefPtr<MediaControlTimelineContainerElement> m_timelineContainer; 132 RefPtr<MediaControlVolumeSliderContainerElement> m_volumeSliderContainer; 125 133 RefPtr<MediaControlTimeDisplayElement> m_currentTimeDisplay; 126 134 RefPtr<MediaControlTimeDisplayElement> m_timeRemainingDisplay; -
trunk/WebCore/rendering/RenderMediaControls.cpp
r44758 r47744 129 129 paintThemePart(SafariTheme::MediaSliderThumbPart, paintInfo.context->platformContext(), r, NSRegularControlSize, determineState(o)); 130 130 break; 131 case MediaVolumeSliderContainer: 132 // FIXME: Implement volume slider. 133 ASSERT_NOT_REACHED(); 134 break; 135 case MediaVolumeSlider: 136 // FIXME: Implement volume slider. 137 ASSERT_NOT_REACHED(); 138 break; 139 case MediaVolumeSliderThumb: 140 // FIXME: Implement volume slider. 141 ASSERT_NOT_REACHED(); 142 break; 131 143 case MediaTimelineContainer: 132 144 ASSERT_NOT_REACHED(); -
trunk/WebCore/rendering/RenderSlider.cpp
r47440 r47744 282 282 else if (parentStyle->appearance() == MediaSliderPart) 283 283 style->setAppearance(MediaSliderThumbPart); 284 else if (parentStyle->appearance() == MediaVolumeSliderPart) 285 style->setAppearance(MediaVolumeSliderThumbPart); 284 286 285 287 return style.release(); … … 299 301 double fraction = sliderPosition(static_cast<HTMLInputElement*>(node())); 300 302 IntRect contentRect = contentBoxRect(); 301 if (style()->appearance() == SliderVerticalPart ) {303 if (style()->appearance() == SliderVerticalPart || style()->appearance() == MediaVolumeSliderPart) { 302 304 thumbRect.setX(contentRect.x() + (contentRect.width() - thumbRect.width()) / 2); 303 305 thumbRect.setY(contentRect.y() + static_cast<int>(nextafter((contentRect.height() - thumbRect.height()) + 1, 0) * (1 - fraction))); … … 392 394 393 395 #if ENABLE(VIDEO) 394 if (style()->appearance() == MediaSliderPart ) {396 if (style()->appearance() == MediaSliderPart || style()->appearance() == MediaVolumeSliderPart) { 395 397 MediaControlInputElement *sliderThumb = static_cast<MediaControlInputElement*>(m_thumb->renderer()->node()); 396 398 return sliderThumb->hitTest(evt->absoluteLocation()); … … 424 426 SliderRange range(element); 425 427 double fraction = static_cast<double>(position) / trackSize(); 426 if (style()->appearance() == SliderVerticalPart )428 if (style()->appearance() == SliderVerticalPart || style()->appearance() == MediaVolumeSliderPart) 427 429 fraction = 1 - fraction; 428 430 double value = range.clampValue(range.valueFromProportion(fraction)); … … 445 447 446 448 int position; 447 if (style()->appearance() == SliderVerticalPart )449 if (style()->appearance() == SliderVerticalPart || style()->appearance() == MediaVolumeSliderPart) 448 450 position = p.y() - m_thumb->renderBox()->height() / 2; 449 451 else … … 458 460 ASSERT(m_thumb->renderer()); 459 461 460 if (style()->appearance() == SliderVerticalPart )462 if (style()->appearance() == SliderVerticalPart || style()->appearance() == MediaVolumeSliderPart) 461 463 return toRenderBox(m_thumb->renderer())->y() - contentBoxRect().y(); 462 464 return toRenderBox(m_thumb->renderer())->x() - contentBoxRect().x(); … … 468 470 ASSERT(m_thumb->renderer()); 469 471 470 if (style()->appearance() == SliderVerticalPart )472 if (style()->appearance() == SliderVerticalPart || style()->appearance() == MediaVolumeSliderPart) 471 473 return contentHeight() - m_thumb->renderBox()->height(); 472 474 return contentWidth() - m_thumb->renderBox()->width(); -
trunk/WebCore/rendering/RenderTheme.cpp
r46148 r47744 184 184 return adjustMenuListButtonStyle(selector, style, e); 185 185 case MediaSliderPart: 186 case MediaVolumeSliderPart: 186 187 case SliderHorizontalPart: 187 188 case SliderVerticalPart: … … 278 279 if (o->parent()->isSlider()) 279 280 return paintMediaSliderThumb(o, paintInfo, r); 281 break; 282 case MediaVolumeSliderContainerPart: 283 return paintMediaVolumeSliderContainer(o, paintInfo, r); 284 case MediaVolumeSliderPart: 285 return paintMediaVolumeSliderTrack(o, paintInfo, r); 286 case MediaVolumeSliderThumbPart: 287 if (o->parent()->isSlider()) 288 return paintMediaVolumeSliderThumb(o, paintInfo, r); 280 289 break; 281 290 case MediaTimeRemainingPart: -
trunk/WebCore/rendering/RenderTheme.h
r45569 r47744 245 245 virtual bool paintMediaSliderTrack(RenderObject*, const RenderObject::PaintInfo&, const IntRect&) { return true; } 246 246 virtual bool paintMediaSliderThumb(RenderObject*, const RenderObject::PaintInfo&, const IntRect&) { return true; } 247 virtual bool paintMediaVolumeSliderContainer(RenderObject*, const RenderObject::PaintInfo&, const IntRect&) { return true; } 248 virtual bool paintMediaVolumeSliderTrack(RenderObject*, const RenderObject::PaintInfo&, const IntRect&) { return true; } 249 virtual bool paintMediaVolumeSliderThumb(RenderObject*, const RenderObject::PaintInfo&, const IntRect&) { return true; } 247 250 virtual bool paintMediaRewindButton(RenderObject*, const RenderObject::PaintInfo&, const IntRect&) { return true; } 248 251 virtual bool paintMediaReturnToRealtimeButton(RenderObject*, const RenderObject::PaintInfo&, const IntRect&) { return true; } -
trunk/WebCore/rendering/style/RenderStyleConstants.h
r47648 r47744 70 70 SLIDER_THUMB, SEARCH_CANCEL_BUTTON, SEARCH_DECORATION, SEARCH_RESULTS_DECORATION, SEARCH_RESULTS_BUTTON, MEDIA_CONTROLS_PANEL, 71 71 MEDIA_CONTROLS_PLAY_BUTTON, MEDIA_CONTROLS_MUTE_BUTTON, MEDIA_CONTROLS_TIMELINE, MEDIA_CONTROLS_TIMELINE_CONTAINER, 72 MEDIA_CONTROLS_CURRENT_TIME_DISPLAY, MEDIA_CONTROLS_TIME_REMAINING_DISPLAY, MEDIA_CONTROLS_SEEK_BACK_BUTTON, 73 MEDIA_CONTROLS_SEEK_FORWARD_BUTTON, MEDIA_CONTROLS_FULLSCREEN_BUTTON, MEDIA_CONTROLS_REWIND_BUTTON, 74 MEDIA_CONTROLS_RETURN_TO_REALTIME_BUTTON, MEDIA_CONTROLS_STATUS_DISPLAY, 75 SCROLLBAR_THUMB, SCROLLBAR_BUTTON, SCROLLBAR_TRACK, SCROLLBAR_TRACK_PIECE, SCROLLBAR_CORNER, RESIZER, 72 MEDIA_CONTROLS_VOLUME_SLIDER, MEDIA_CONTROLS_VOLUME_SLIDER_CONTAINER, MEDIA_CONTROLS_CURRENT_TIME_DISPLAY, MEDIA_CONTROLS_TIME_REMAINING_DISPLAY, MEDIA_CONTROLS_SEEK_BACK_BUTTON, 73 MEDIA_CONTROLS_SEEK_FORWARD_BUTTON, MEDIA_CONTROLS_FULLSCREEN_BUTTON, MEDIA_CONTROLS_REWIND_BUTTON, MEDIA_CONTROLS_RETURN_TO_REALTIME_BUTTON, 74 MEDIA_CONTROLS_STATUS_DISPLAY, SCROLLBAR_THUMB, SCROLLBAR_BUTTON, SCROLLBAR_TRACK, SCROLLBAR_TRACK_PIECE, SCROLLBAR_CORNER, RESIZER, 76 75 77 76 FIRST_INTERNAL_PSEUDOID = FILE_UPLOAD_BUTTON
Note: See TracChangeset
for help on using the changeset viewer.