Changeset 294728 in webkit
- Timestamp:
- May 23, 2022, 10:09:52 PM (4 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 5 edited
-
html/shadow/SliderThumbElement.cpp (modified) (5 diffs)
-
html/shadow/SliderThumbElement.h (modified) (2 diffs)
-
rendering/RenderObject.h (modified) (1 diff)
-
rendering/RenderSlider.cpp (modified) (1 diff)
-
rendering/RenderSlider.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/html/shadow/SliderThumbElement.cpp
r294677 r294728 64 64 WTF_MAKE_ISO_ALLOCATED_IMPL(SliderThumbElement); 65 65 WTF_MAKE_ISO_ALLOCATED_IMPL(SliderContainerElement); 66 WTF_MAKE_ISO_ALLOCATED_IMPL(RenderSliderThumb);67 66 68 67 inline static Decimal sliderPosition(HTMLInputElement& element) … … 84 83 85 84 return sliderStyle.effectiveAppearance() == SliderVerticalPart; 86 }87 88 // --------------------------------89 90 RenderSliderThumb::RenderSliderThumb(SliderThumbElement& element, RenderStyle&& style)91 : RenderBlockFlow(element, WTFMove(style))92 {93 }94 95 void RenderSliderThumb::updateAppearance(const RenderStyle* parentStyle)96 {97 if (parentStyle->effectiveAppearance() == SliderVerticalPart)98 mutableStyle().setEffectiveAppearance(SliderThumbVerticalPart);99 else if (parentStyle->effectiveAppearance() == SliderHorizontalPart)100 mutableStyle().setEffectiveAppearance(SliderThumbHorizontalPart);101 else if (parentStyle->effectiveAppearance() == MediaSliderPart)102 mutableStyle().setEffectiveAppearance(MediaSliderThumbPart);103 else if (parentStyle->effectiveAppearance() == MediaVolumeSliderPart)104 mutableStyle().setEffectiveAppearance(MediaVolumeSliderThumbPart);105 else if (parentStyle->effectiveAppearance() == MediaFullScreenVolumeSliderPart)106 mutableStyle().setEffectiveAppearance(MediaFullScreenVolumeSliderThumbPart);107 if (style().hasEffectiveAppearance()) {108 ASSERT(element());109 theme().adjustSliderThumbSize(mutableStyle(), element());110 }111 }112 113 bool RenderSliderThumb::isSliderThumb() const114 {115 return true;116 85 } 117 86 … … 224 193 } 225 194 226 RenderPtr<RenderElement> SliderThumbElement::createElementRenderer(RenderStyle&& style, const RenderTreePosition&)227 {228 return createRenderer<RenderSliderThumb>(*this, WTFMove(style));229 }230 231 195 bool SliderThumbElement::isDisabledFormControl() const 232 196 { … … 587 551 } 588 552 589 std::optional<Style::ElementStyle> SliderThumbElement::resolveCustomStyle(const Style::ResolutionContext&, const RenderStyle* hostStyle) 590 { 591 // This doesn't actually compute style. This is just a hack to pick shadow pseudo id when host style is known. 592 553 std::optional<Style::ElementStyle> SliderThumbElement::resolveCustomStyle(const Style::ResolutionContext& resolutionContext, const RenderStyle* hostStyle) 554 { 593 555 if (!hostStyle) 594 556 return std::nullopt; … … 602 564 default: 603 565 m_shadowPseudoId = ShadowPseudoIds::webkitSliderThumb(); 604 } 605 606 return std::nullopt; 566 break; 567 } 568 569 auto elementStyle = resolveStyle(resolutionContext); 570 switch (hostStyle->effectiveAppearance()) { 571 case MediaSliderPart: 572 elementStyle.renderStyle->setEffectiveAppearance(MediaSliderThumbPart); 573 break; 574 case MediaVolumeSliderPart: 575 elementStyle.renderStyle->setEffectiveAppearance(MediaVolumeSliderThumbPart); 576 break; 577 case MediaFullScreenVolumeSliderPart: 578 elementStyle.renderStyle->setEffectiveAppearance(MediaFullScreenVolumeSliderThumbPart); 579 break; 580 case SliderVerticalPart: 581 elementStyle.renderStyle->setEffectiveAppearance(SliderThumbVerticalPart); 582 break; 583 case SliderHorizontalPart: 584 elementStyle.renderStyle->setEffectiveAppearance(SliderThumbHorizontalPart); 585 break; 586 default: 587 break; 588 } 589 590 return elementStyle; 607 591 } 608 592 -
trunk/Source/WebCore/html/shadow/SliderThumbElement.h
r293993 r294728 60 60 SliderThumbElement(Document&); 61 61 62 RenderPtr<RenderElement> createElementRenderer(RenderStyle&&, const RenderTreePosition&) final;63 64 62 Ref<Element> cloneElementWithoutAttributesAndChildren(Document&) final; 65 63 bool isDisabledFormControl() const final; … … 115 113 // -------------------------------- 116 114 117 class RenderSliderThumb final : public RenderBlockFlow {118 WTF_MAKE_ISO_ALLOCATED(RenderSliderThumb);119 public:120 RenderSliderThumb(SliderThumbElement&, RenderStyle&&);121 void updateAppearance(const RenderStyle* parentStyle);122 123 private:124 bool isSliderThumb() const final;125 };126 127 // --------------------------------128 129 115 class SliderContainerElement final : public HTMLDivElement { 130 116 WTF_MAKE_ISO_ALLOCATED(SliderContainerElement); -
trunk/Source/WebCore/rendering/RenderObject.h
r294699 r294728 241 241 242 242 virtual bool isSlider() const { return false; } 243 virtual bool isSliderThumb() const { return false; }244 243 virtual bool isTable() const { return false; } 245 244 virtual bool isTableCell() const { return false; } -
trunk/Source/WebCore/rendering/RenderSlider.cpp
r293900 r294728 92 92 } 93 93 94 void RenderSlider::layout()95 {96 StackStats::LayoutCheckPoint layoutCheckPoint;97 98 // FIXME: Find a way to cascade appearance. http://webkit.org/b/6253599 RenderBox* thumbBox = element().sliderThumbElement()->renderBox();100 if (thumbBox && thumbBox->isSliderThumb())101 static_cast<RenderSliderThumb*>(thumbBox)->updateAppearance(&style());102 103 RenderFlexibleBox::layout();104 }105 106 94 bool RenderSlider::inDragMode() const 107 95 { -
trunk/Source/WebCore/rendering/RenderSlider.h
r291992 r294728 49 49 void computeIntrinsicLogicalWidths(LayoutUnit& minLogicalWidth, LayoutUnit& maxLogicalWidth) const override; 50 50 void computePreferredLogicalWidths() override; 51 void layout() override;52 51 53 52 bool isFlexibleBoxImpl() const override { return true; }
Note:
See TracChangeset
for help on using the changeset viewer.