Changeset 37464
- Timestamp:
- 10/09/08 20:15:31 (6 weeks ago)
- Location:
- trunk/WebCore
- Files:
-
- 47 modified
-
ChangeLog (modified) (1 diff)
-
rendering/RenderBR.cpp (modified) (1 diff)
-
rendering/RenderBR.h (modified) (2 diffs)
-
rendering/RenderBlock.cpp (modified) (1 diff)
-
rendering/RenderBlock.h (modified) (2 diffs)
-
rendering/RenderBox.cpp (modified) (8 diffs)
-
rendering/RenderBox.h (modified) (3 diffs)
-
rendering/RenderButton.cpp (modified) (2 diffs)
-
rendering/RenderButton.h (modified) (2 diffs)
-
rendering/RenderFieldset.cpp (modified) (1 diff)
-
rendering/RenderFieldset.h (modified) (2 diffs)
-
rendering/RenderFileUploadControl.cpp (modified) (1 diff)
-
rendering/RenderFileUploadControl.h (modified) (2 diffs)
-
rendering/RenderInline.cpp (modified) (1 diff)
-
rendering/RenderInline.h (modified) (2 diffs)
-
rendering/RenderLayer.cpp (modified) (1 diff)
-
rendering/RenderLayer.h (modified) (1 diff)
-
rendering/RenderListBox.cpp (modified) (1 diff)
-
rendering/RenderListBox.h (modified) (2 diffs)
-
rendering/RenderListItem.cpp (modified) (1 diff)
-
rendering/RenderListItem.h (modified) (2 diffs)
-
rendering/RenderListMarker.cpp (modified) (1 diff)
-
rendering/RenderListMarker.h (modified) (2 diffs)
-
rendering/RenderMenuList.cpp (modified) (1 diff)
-
rendering/RenderMenuList.h (modified) (2 diffs)
-
rendering/RenderObject.cpp (modified) (9 diffs)
-
rendering/RenderObject.h (modified) (3 diffs)
-
rendering/RenderReplaced.cpp (modified) (1 diff)
-
rendering/RenderReplaced.h (modified) (2 diffs)
-
rendering/RenderSVGGradientStop.cpp (modified) (1 diff)
-
rendering/RenderSVGGradientStop.h (modified) (1 diff)
-
rendering/RenderScrollbarPart.cpp (modified) (1 diff)
-
rendering/RenderScrollbarPart.h (modified) (1 diff)
-
rendering/RenderSlider.cpp (modified) (1 diff)
-
rendering/RenderSlider.h (modified) (2 diffs)
-
rendering/RenderTable.cpp (modified) (1 diff)
-
rendering/RenderTable.h (modified) (2 diffs)
-
rendering/RenderTableCell.cpp (modified) (2 diffs)
-
rendering/RenderTableCell.h (modified) (2 diffs)
-
rendering/RenderTableRow.cpp (modified) (2 diffs)
-
rendering/RenderTableRow.h (modified) (2 diffs)
-
rendering/RenderText.cpp (modified) (1 diff)
-
rendering/RenderText.h (modified) (2 diffs)
-
rendering/RenderTextControl.cpp (modified) (3 diffs)
-
rendering/RenderTextControl.h (modified) (2 diffs)
-
rendering/RenderWidget.cpp (modified) (1 diff)
-
rendering/RenderWidget.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r37463 r37464 1 2008-10-09 Simon Fraser <simon.fraser@apple.com> 2 3 Reviewed by Dave Hyatt 4 5 https://bugs.webkit.org/show_bug.cgi?id=20947 6 7 Refactor setStyle() methods into styleWillChange() 8 and styleDidChange(), so most of the setStyle() overrides can 9 be removed. 10 11 * rendering/RenderBR.cpp: 12 (WebCore::RenderBR::styleDidChange): 13 * rendering/RenderBR.h: 14 * rendering/RenderBlock.cpp: 15 (WebCore::RenderBlock::styleWillChange): 16 (WebCore::RenderBlock::styleDidChange): 17 * rendering/RenderBlock.h: 18 * rendering/RenderBox.cpp: 19 (WebCore::RenderBox::~RenderBox): 20 (WebCore::RenderBox::destroy): 21 (WebCore::RenderBox::styleWillChange): 22 (WebCore::RenderBox::styleDidChange): 23 * rendering/RenderBox.h: 24 * rendering/RenderButton.cpp: 25 (WebCore::RenderButton::styleWillChange): 26 (WebCore::RenderButton::styleDidChange): 27 * rendering/RenderButton.h: 28 * rendering/RenderFieldset.cpp: 29 (WebCore::RenderFieldset::styleDidChange): 30 * rendering/RenderFieldset.h: 31 * rendering/RenderFileUploadControl.cpp: 32 (WebCore::RenderFileUploadControl::styleDidChange): 33 * rendering/RenderFileUploadControl.h: 34 * rendering/RenderInline.cpp: 35 (WebCore::RenderInline::styleDidChange): 36 * rendering/RenderInline.h: 37 * rendering/RenderLayer.cpp: 38 (WebCore::RenderLayer::styleChanged): 39 * rendering/RenderLayer.h: 40 * rendering/RenderListBox.cpp: 41 (WebCore::RenderListBox::styleDidChange): 42 * rendering/RenderListBox.h: 43 * rendering/RenderListItem.cpp: 44 (WebCore::RenderListItem::styleDidChange): 45 * rendering/RenderListItem.h: 46 * rendering/RenderListMarker.cpp: 47 (WebCore::RenderListMarker::styleWillChange): 48 (WebCore::RenderListMarker::styleDidChange): 49 * rendering/RenderListMarker.h: 50 * rendering/RenderMenuList.cpp: 51 (WebCore::RenderMenuList::styleDidChange): 52 * rendering/RenderMenuList.h: 53 * rendering/RenderObject.cpp: 54 (WebCore::RenderObject::setStyle): 55 (WebCore::RenderObject::setStyleInternal): 56 (WebCore::RenderObject::styleWillChange): 57 (WebCore::RenderObject::styleDidChange): 58 * rendering/RenderObject.h: 59 * rendering/RenderReplaced.cpp: 60 (WebCore::RenderReplaced::styleDidChange): 61 * rendering/RenderReplaced.h: 62 * rendering/RenderSVGGradientStop.cpp: 63 (WebCore::RenderSVGGradientStop::styleDidChange): 64 * rendering/RenderSVGGradientStop.h: 65 * rendering/RenderScrollbarPart.cpp: 66 (WebCore::RenderScrollbarPart::styleDidChange): 67 * rendering/RenderScrollbarPart.h: 68 * rendering/RenderSlider.cpp: 69 (WebCore::RenderSlider::styleDidChange): 70 * rendering/RenderSlider.h: 71 * rendering/RenderTable.cpp: 72 (WebCore::RenderTable::styleDidChange): 73 * rendering/RenderTable.h: 74 * rendering/RenderTableCell.cpp: 75 (WebCore::RenderTableCell::styleWillChange): 76 (WebCore::RenderTableCell::styleDidChange): 77 * rendering/RenderTableCell.h: 78 * rendering/RenderTableRow.cpp: 79 (WebCore::RenderTableRow::styleWillChange): 80 * rendering/RenderTableRow.h: 81 * rendering/RenderText.cpp: 82 (WebCore::RenderText::styleDidChange): 83 * rendering/RenderText.h: 84 * rendering/RenderTextControl.cpp: 85 (WebCore::RenderTextControl::styleDidChange): 86 * rendering/RenderTextControl.h: 87 * rendering/RenderWidget.cpp: 88 (WebCore::RenderWidget::styleDidChange): 89 * rendering/RenderWidget.h: 90 1 91 2008-10-09 David Hyatt <hyatt@apple.com> 2 92 -
trunk/WebCore/rendering/RenderBR.cpp
r37252 r37464 83 83 } 84 84 85 void RenderBR::s etStyle(const RenderStyle* newStyle)85 void RenderBR::styleDidChange(RenderStyle::Diff diff, const RenderStyle* oldStyle) 86 86 { 87 RenderText::s etStyle(newStyle);87 RenderText::styleDidChange(diff, oldStyle); 88 88 m_lineHeight = -1; 89 89 } -
trunk/WebCore/rendering/RenderBR.h
r37252 r37464 48 48 virtual int lineHeight(bool firstLine, bool isRootLineBox = false) const; 49 49 virtual int baselinePosition(bool firstLine, bool isRootLineBox = false) const; 50 virtual void setStyle(const RenderStyle*);51 50 52 51 // overrides … … 61 60 virtual VisiblePosition positionForCoordinates(int x, int y); 62 61 62 protected: 63 virtual void styleDidChange(RenderStyle::Diff, const RenderStyle* oldStyle); 64 63 65 private: 64 66 mutable int m_lineHeight; -
trunk/WebCore/rendering/RenderBlock.cpp
r37252 r37464 147 147 } 148 148 149 void RenderBlock::s etStyle(const RenderStyle* newStyle)149 void RenderBlock::styleWillChange(RenderStyle::Diff diff, const RenderStyle* newStyle) 150 150 { 151 151 setReplaced(newStyle->isDisplayReplacedType()); 152 153 RenderFlow::setStyle(newStyle); 152 RenderFlow::styleWillChange(diff, newStyle); 153 } 154 155 void RenderBlock::styleDidChange(RenderStyle::Diff diff, const RenderStyle* oldStyle) 156 { 157 RenderFlow::styleDidChange(diff, oldStyle); 154 158 155 159 // FIXME: We could save this call when the change only affected non-inherited properties -
trunk/WebCore/rendering/RenderBlock.h
r37252 r37464 107 107 virtual void repaintOverhangingFloats(bool paintAllDescendants); 108 108 109 virtual void setStyle(const RenderStyle*);110 111 109 virtual void layout(); 112 110 virtual void layoutBlock(bool relayoutChildren); … … 314 312 315 313 protected: 314 virtual void styleWillChange(RenderStyle::Diff, const RenderStyle* newStyle); 315 virtual void styleDidChange(RenderStyle::Diff, const RenderStyle* oldStyle); 316 316 317 void newLine(EClear); 317 318 virtual bool hasLineIfEmpty() const; -
trunk/WebCore/rendering/RenderBox.cpp
r37252 r37464 51 51 52 52 using namespace HTMLNames; 53 53 54 54 // Used by flexible boxes when flexing this element. 55 55 typedef WTF::HashMap<const RenderBox*, int> OverrideSizeMap; 56 56 static OverrideSizeMap* gOverrideSizeMap = 0; 57 58 bool RenderBox::s_wasFloating = false; 59 bool RenderBox::s_hadOverflowClip = false; 57 60 58 61 RenderBox::RenderBox(Node* node) … … 73 76 } 74 77 75 void RenderBox::setStyle(const RenderStyle* newStyle) 76 { 77 bool wasFloating = isFloating(); 78 bool hadOverflowClip = hasOverflowClip(); 79 80 RenderStyle* oldStyle = style(); 81 if (oldStyle) 82 oldStyle->ref(); 83 84 RenderObject::setStyle(newStyle); 78 RenderBox::~RenderBox() 79 { 80 } 81 82 void RenderBox::destroy() 83 { 84 // A lot of the code in this function is just pasted into 85 // RenderWidget::destroy. If anything in this function changes, 86 // be sure to fix RenderWidget::destroy() as well. 87 if (hasOverrideSize()) 88 gOverrideSizeMap->remove(this); 89 90 // This must be done before we destroy the RenderObject. 91 if (m_layer) 92 m_layer->clearClipRect(); 93 94 if (style() && (style()->height().isPercent() || style()->minHeight().isPercent() || style()->maxHeight().isPercent())) 95 RenderBlock::removePercentHeightDescendant(this); 96 97 RenderObject::destroy(); 98 } 99 100 void RenderBox::styleWillChange(RenderStyle::Diff diff, const RenderStyle* newStyle) 101 { 102 s_wasFloating = isFloating(); 103 s_hadOverflowClip = hasOverflowClip(); 104 105 RenderObject::styleWillChange(diff, newStyle); 106 } 107 108 void RenderBox::styleDidChange(RenderStyle::Diff diff, const RenderStyle* oldStyle) 109 { 110 RenderObject::styleDidChange(diff, oldStyle); 85 111 86 112 if (needsLayout() && oldStyle && (oldStyle->height().isPercent() || oldStyle->minHeight().isPercent() || oldStyle->maxHeight().isPercent())) … … 91 117 setHasBoxDecorations(true); 92 118 93 setInline( newStyle->isDisplayInlineType());94 95 switch ( newStyle->position()) {119 setInline(style()->isDisplayInlineType()); 120 121 switch (style()->position()) { 96 122 case AbsolutePosition: 97 123 case FixedPosition: … … 101 127 setPositioned(false); 102 128 103 if ( newStyle->isFloating())129 if (style()->isFloating()) 104 130 setFloating(true); 105 131 106 if ( newStyle->position() == RelativePosition)132 if (style()->position() == RelativePosition) 107 133 setRelPositioned(true); 134 break; 108 135 } 109 136 … … 112 139 // Check for overflow clip. 113 140 // It's sufficient to just check one direction, since it's illegal to have visible on only one overflow value. 114 if ( newStyle->overflowX() != OVISIBLE) {115 if (! hadOverflowClip)141 if (style()->overflowX() != OVISIBLE) { 142 if (!s_hadOverflowClip) 116 143 // Erase the overflow 117 144 repaint(); … … 120 147 } 121 148 122 setHasTransform( newStyle->hasTransform());123 setHasReflection( newStyle->boxReflect());149 setHasTransform(style()->hasTransform()); 150 setHasReflection(style()->boxReflect()); 124 151 125 152 if (requiresLayer()) { 126 153 if (!m_layer) { 127 if ( wasFloating && isFloating())154 if (s_wasFloating && isFloating()) 128 155 setChildNeedsLayout(true); 129 156 m_layer = new (renderArena()) RenderLayer(this); … … 141 168 setHasReflection(false); 142 169 layer->removeOnlyThisLayer(); 143 if ( wasFloating && isFloating())170 if (s_wasFloating && isFloating()) 144 171 setChildNeedsLayout(true); 145 172 } … … 161 188 162 189 if (m_layer) 163 m_layer->styleChanged( oldStyle);190 m_layer->styleChanged(diff, oldStyle); 164 191 165 192 // Set the text color if we're the body. 166 193 if (isBody()) 167 document()->setTextColor( newStyle->color());194 document()->setTextColor(style()->color()); 168 195 169 196 if (style()->outlineWidth() > 0 && style()->outlineSize() > maximalOutlineSize(PaintPhaseOutline)) 170 197 static_cast<RenderView*>(document()->renderer())->setMaximalOutlineSize(style()->outlineSize()); 171 172 if (oldStyle)173 oldStyle->deref(renderArena());174 }175 176 RenderBox::~RenderBox()177 {178 }179 180 void RenderBox::destroy()181 {182 // A lot of the code in this function is just pasted into183 // RenderWidget::destroy. If anything in this function changes,184 // be sure to fix RenderWidget::destroy() as well.185 if (hasOverrideSize())186 gOverrideSizeMap->remove(this);187 188 // This must be done before we destroy the RenderObject.189 if (m_layer)190 m_layer->clearClipRect();191 192 if (style() && (style()->height().isPercent() || style()->minHeight().isPercent() || style()->maxHeight().isPercent()))193 RenderBlock::removePercentHeightDescendant(this);194 195 RenderObject::destroy();196 198 } 197 199 -
trunk/WebCore/rendering/RenderBox.h
r37252 r37464 37 37 virtual const char* renderName() const { return "RenderBox"; } 38 38 39 virtual void setStyle(const RenderStyle*);40 39 virtual void paint(PaintInfo&, int tx, int ty); 41 40 virtual bool nodeAtPoint(const HitTestRequest&, HitTestResult&, int x, int y, int tx, int ty, HitTestAction); … … 174 173 175 174 protected: 175 virtual void styleWillChange(RenderStyle::Diff, const RenderStyle* newStyle); 176 virtual void styleDidChange(RenderStyle::Diff, const RenderStyle* oldStyle); 177 176 178 void paintFillLayer(const PaintInfo&, const Color&, const FillLayer*, int clipY, int clipHeight, int tx, int ty, int width, int height, CompositeOperator = CompositeSourceOver); 177 179 void paintFillLayers(const PaintInfo&, const Color&, const FillLayer*, int clipY, int clipHeight, int tx, int ty, int width, int height, CompositeOperator = CompositeSourceOver); … … 239 241 // For inline replaced elements, the inline box that owns us. 240 242 InlineBox* m_inlineBoxWrapper; 243 244 private: 245 // Used to store state between styleWillChange and styleDidChange 246 static bool s_wasFloating; 247 static bool s_hadOverflowClip; 241 248 }; 242 249 -
trunk/WebCore/rendering/RenderButton.cpp
r37252 r37464 65 65 } 66 66 67 void RenderButton::s etStyle(const RenderStyle* style)67 void RenderButton::styleWillChange(RenderStyle::Diff diff, const RenderStyle* newStyle) 68 68 { 69 69 if (m_inner) { … … 74 74 m_inner->style()->setBoxFlex(0); 75 75 } 76 RenderBlock::setStyle(style); 76 RenderBlock::styleWillChange(diff, newStyle); 77 } 78 79 void RenderButton::styleDidChange(RenderStyle::Diff diff, const RenderStyle* oldStyle) 80 { 81 RenderBlock::styleDidChange(diff, oldStyle); 82 77 83 if (m_buttonText) 78 m_buttonText->setStyle(style );84 m_buttonText->setStyle(style()); 79 85 if (m_inner) // RenderBlock handled updating the anonymous block's style. 80 86 m_inner->style()->setBoxFlex(1.0f); -
trunk/WebCore/rendering/RenderButton.h
r37252 r37464 46 46 virtual bool createsAnonymousWrapper() const { return true; } 47 47 48 virtual void setStyle(const RenderStyle*);49 48 virtual void updateFromElement(); 50 49 … … 59 58 60 59 protected: 60 virtual void styleWillChange(RenderStyle::Diff, const RenderStyle* newStyle); 61 virtual void styleDidChange(RenderStyle::Diff, const RenderStyle* oldStyle); 62 61 63 virtual bool hasLineIfEmpty() const { return true; } 62 64 -
trunk/WebCore/rendering/RenderFieldset.cpp
r37252 r37464 261 261 } 262 262 263 void RenderFieldset::s etStyle(const RenderStyle* newStyle)264 { 265 RenderBlock::s etStyle(newStyle);263 void RenderFieldset::styleDidChange(RenderStyle::Diff diff, const RenderStyle* oldStyle) 264 { 265 RenderBlock::styleDidChange(diff, oldStyle); 266 266 267 267 // WinIE renders fieldsets with display:inline like they're inline-blocks. For us, -
trunk/WebCore/rendering/RenderFieldset.h
r37252 r37464 42 42 virtual RenderObject* layoutLegend(bool relayoutChildren); 43 43 44 virtual void setStyle(const RenderStyle*);45 46 44 virtual void calcPrefWidths(); 47 45 virtual bool avoidsFloats() const { return true; } … … 50 48 51 49 RenderObject* findLegend() const; 50 51 protected: 52 virtual void styleDidChange(RenderStyle::Diff, const RenderStyle* oldStyle); 52 53 53 54 private: -
trunk/WebCore/rendering/RenderFileUploadControl.cpp
r37252 r37464 72 72 } 73 73 74 void RenderFileUploadControl::s etStyle(const RenderStyle* newStyle)75 { 76 RenderBlock::s etStyle(newStyle);74 void RenderFileUploadControl::styleDidChange(RenderStyle::Diff diff, const RenderStyle* oldStyle) 75 { 76 RenderBlock::styleDidChange(diff, oldStyle); 77 77 if (m_button) 78 m_button->renderer()->setStyle(createButtonStyle( newStyle));78 m_button->renderer()->setStyle(createButtonStyle(style())); 79 79 80 80 setReplaced(isInline()); -
trunk/WebCore/rendering/RenderFileUploadControl.h
r37252 r37464 40 40 virtual const char* renderName() const { return "RenderFileUploadControl"; } 41 41 42 virtual void setStyle(const RenderStyle*);43 42 virtual void updateFromElement(); 44 43 virtual void calcPrefWidths(); … … 53 52 String buttonValue(); 54 53 String fileTextValue(); 55 54 55 protected: 56 virtual void styleDidChange(RenderStyle::Diff, const RenderStyle* oldStyle); 57 56 58 private: 57 59 int maxFilenameWidth() const; -
trunk/WebCore/rendering/RenderInline.cpp
r37252 r37464 42 42 } 43 43 44 void RenderInline::setStyle(const RenderStyle* newStyle) 45 { 46 RenderFlow::setStyle(newStyle); 44 void RenderInline::styleDidChange(RenderStyle::Diff diff, const RenderStyle* oldStyle) 45 { 46 RenderFlow::styleDidChange(diff, oldStyle); 47 47 48 setInline(true); 48 49 setHasReflection(false); -
trunk/WebCore/rendering/RenderInline.h
r37252 r37464 51 51 RenderObject* newChild, RenderFlow* oldCont); 52 52 53 virtual void setStyle(const RenderStyle*);54 55 53 virtual void layout() { } // Do nothing for layout() 56 54 … … 75 73 76 74 protected: 75 virtual void styleDidChange(RenderStyle::Diff, const RenderStyle* oldStyle); 76 77 77 static RenderInline* cloneInline(RenderFlow* src); 78 78 -
trunk/WebCore/rendering/RenderLayer.cpp
r37462 r37464 2358 2358 } 2359 2359 2360 void RenderLayer::styleChanged(RenderStyle * oldStyle)2360 void RenderLayer::styleChanged(RenderStyle::Diff, const RenderStyle* oldStyle) 2361 2361 { 2362 2362 bool isOverflowOnly = shouldBeOverflowOnly(); -
trunk/WebCore/rendering/RenderLayer.h
r37223 r37464 163 163 void repaintIncludingDescendants(); 164 164 165 void styleChanged(RenderStyle *);165 void styleChanged(RenderStyle::Diff, const RenderStyle*); 166 166 167 167 RenderMarquee* marquee() const { return m_marquee; } -
trunk/WebCore/rendering/RenderListBox.cpp
r37252 r37464 91 91 } 92 92 93 void RenderListBox::s etStyle(const RenderStyle* style)94 { 95 RenderBlock::s etStyle(style);93 void RenderListBox::styleDidChange(RenderStyle::Diff diff, const RenderStyle* oldStyle) 94 { 95 RenderBlock::styleDidChange(diff, oldStyle); 96 96 setReplaced(isInline()); 97 97 } -
trunk/WebCore/rendering/RenderListBox.h
r37252 r37464 48 48 virtual bool isListBox() const { return true; } 49 49 50 virtual void setStyle(const RenderStyle*);51 50 virtual void updateFromElement(); 52 51 … … 95 94 virtual void setScrollTop(int); 96 95 96 protected: 97 virtual void styleDidChange(RenderStyle::Diff, const RenderStyle* oldStyle); 98 97 99 private: 98 100 // ScrollbarClient interface. -
trunk/WebCore/rendering/RenderListItem.cpp