Changeset 37464 in webkit


Ignore:
Timestamp:
Oct 9, 2008 8:15:31 PM (16 years ago)
Author:
Simon Fraser
Message:

2008-10-09 Simon Fraser <Simon Fraser>

Reviewed by Dave Hyatt

https://bugs.webkit.org/show_bug.cgi?id=20947

Refactor setStyle() methods into styleWillChange()
and styleDidChange(), so most of the setStyle() overrides can
be removed.

Location:
trunk/WebCore
Files:
47 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r37463 r37464  
     12008-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
    1912008-10-09  David Hyatt  <hyatt@apple.com>
    292
  • trunk/WebCore/rendering/RenderBR.cpp

    r37252 r37464  
    8383}
    8484
    85 void RenderBR::setStyle(const RenderStyle* newStyle)
     85void RenderBR::styleDidChange(RenderStyle::Diff diff, const RenderStyle* oldStyle)
    8686{
    87     RenderText::setStyle(newStyle);
     87    RenderText::styleDidChange(diff, oldStyle);
    8888    m_lineHeight = -1;
    8989}
  • trunk/WebCore/rendering/RenderBR.h

    r37252 r37464  
    4848    virtual int lineHeight(bool firstLine, bool isRootLineBox = false) const;
    4949    virtual int baselinePosition(bool firstLine, bool isRootLineBox = false) const;
    50     virtual void setStyle(const RenderStyle*);
    5150
    5251    // overrides
     
    6160    virtual VisiblePosition positionForCoordinates(int x, int y);
    6261
     62protected:
     63    virtual void styleDidChange(RenderStyle::Diff, const RenderStyle* oldStyle);
     64
    6365private:
    6466    mutable int m_lineHeight;
  • trunk/WebCore/rendering/RenderBlock.cpp

    r37252 r37464  
    147147}
    148148
    149 void RenderBlock::setStyle(const RenderStyle* newStyle)
     149void RenderBlock::styleWillChange(RenderStyle::Diff diff, const RenderStyle* newStyle)
    150150{
    151151    setReplaced(newStyle->isDisplayReplacedType());
    152 
    153     RenderFlow::setStyle(newStyle);
     152    RenderFlow::styleWillChange(diff, newStyle);
     153}
     154
     155void RenderBlock::styleDidChange(RenderStyle::Diff diff, const RenderStyle* oldStyle)
     156{
     157    RenderFlow::styleDidChange(diff, oldStyle);
    154158
    155159    // FIXME: We could save this call when the change only affected non-inherited properties
  • trunk/WebCore/rendering/RenderBlock.h

    r37252 r37464  
    107107    virtual void repaintOverhangingFloats(bool paintAllDescendants);
    108108
    109     virtual void setStyle(const RenderStyle*);
    110 
    111109    virtual void layout();
    112110    virtual void layoutBlock(bool relayoutChildren);
     
    314312
    315313protected:
     314    virtual void styleWillChange(RenderStyle::Diff, const RenderStyle* newStyle);
     315    virtual void styleDidChange(RenderStyle::Diff, const RenderStyle* oldStyle);
     316
    316317    void newLine(EClear);
    317318    virtual bool hasLineIfEmpty() const;
  • trunk/WebCore/rendering/RenderBox.cpp

    r37252 r37464  
    5151
    5252using namespace HTMLNames;
    53    
     53
    5454// Used by flexible boxes when flexing this element.
    5555typedef WTF::HashMap<const RenderBox*, int> OverrideSizeMap;
    5656static OverrideSizeMap* gOverrideSizeMap = 0;
     57
     58bool RenderBox::s_wasFloating = false;
     59bool RenderBox::s_hadOverflowClip = false;
    5760
    5861RenderBox::RenderBox(Node* node)
     
    7376}
    7477
    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);
     78RenderBox::~RenderBox()
     79{
     80}
     81
     82void 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
     100void 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
     108void RenderBox::styleDidChange(RenderStyle::Diff diff, const RenderStyle* oldStyle)
     109{
     110    RenderObject::styleDidChange(diff, oldStyle);
    85111
    86112    if (needsLayout() && oldStyle && (oldStyle->height().isPercent() || oldStyle->minHeight().isPercent() || oldStyle->maxHeight().isPercent()))
     
    91117        setHasBoxDecorations(true);
    92118
    93     setInline(newStyle->isDisplayInlineType());
    94 
    95     switch (newStyle->position()) {
     119    setInline(style()->isDisplayInlineType());
     120
     121    switch (style()->position()) {
    96122        case AbsolutePosition:
    97123        case FixedPosition:
     
    101127            setPositioned(false);
    102128
    103             if (newStyle->isFloating())
     129            if (style()->isFloating())
    104130                setFloating(true);
    105131
    106             if (newStyle->position() == RelativePosition)
     132            if (style()->position() == RelativePosition)
    107133                setRelPositioned(true);
     134            break;
    108135    }
    109136
     
    112139        // Check for overflow clip.
    113140        // 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)
    116143                // Erase the overflow
    117144                repaint();
     
    120147    }
    121148
    122     setHasTransform(newStyle->hasTransform());
    123     setHasReflection(newStyle->boxReflect());
     149    setHasTransform(style()->hasTransform());
     150    setHasReflection(style()->boxReflect());
    124151
    125152    if (requiresLayer()) {
    126153        if (!m_layer) {
    127             if (wasFloating && isFloating())
     154            if (s_wasFloating && isFloating())
    128155                setChildNeedsLayout(true);
    129156            m_layer = new (renderArena()) RenderLayer(this);
     
    141168        setHasReflection(false);
    142169        layer->removeOnlyThisLayer();
    143         if (wasFloating && isFloating())
     170        if (s_wasFloating && isFloating())
    144171            setChildNeedsLayout(true);
    145172    }
     
    161188
    162189    if (m_layer)
    163         m_layer->styleChanged(oldStyle);
     190        m_layer->styleChanged(diff, oldStyle);
    164191
    165192    // Set the text color if we're the body.
    166193    if (isBody())
    167         document()->setTextColor(newStyle->color());
     194        document()->setTextColor(style()->color());
    168195
    169196    if (style()->outlineWidth() > 0 && style()->outlineSize() > maximalOutlineSize(PaintPhaseOutline))
    170197        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 into
    183     // 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();
    196198}
    197199
  • trunk/WebCore/rendering/RenderBox.h

    r37252 r37464  
    3737    virtual const char* renderName() const { return "RenderBox"; }
    3838
    39     virtual void setStyle(const RenderStyle*);
    4039    virtual void paint(PaintInfo&, int tx, int ty);
    4140    virtual bool nodeAtPoint(const HitTestRequest&, HitTestResult&, int x, int y, int tx, int ty, HitTestAction);
     
    174173   
    175174protected:
     175    virtual void styleWillChange(RenderStyle::Diff, const RenderStyle* newStyle);
     176    virtual void styleDidChange(RenderStyle::Diff, const RenderStyle* oldStyle);
     177
    176178    void paintFillLayer(const PaintInfo&, const Color&, const FillLayer*, int clipY, int clipHeight, int tx, int ty, int width, int height, CompositeOperator = CompositeSourceOver);
    177179    void paintFillLayers(const PaintInfo&, const Color&, const FillLayer*, int clipY, int clipHeight, int tx, int ty, int width, int height, CompositeOperator = CompositeSourceOver);
     
    239241    // For inline replaced elements, the inline box that owns us.
    240242    InlineBox* m_inlineBoxWrapper;
     243
     244private:
     245    // Used to store state between styleWillChange and styleDidChange
     246    static bool s_wasFloating;
     247    static bool s_hadOverflowClip;
    241248};
    242249
  • trunk/WebCore/rendering/RenderButton.cpp

    r37252 r37464  
    6565}
    6666
    67 void RenderButton::setStyle(const RenderStyle* style)
     67void RenderButton::styleWillChange(RenderStyle::Diff diff, const RenderStyle* newStyle)
    6868{
    6969    if (m_inner) {
     
    7474        m_inner->style()->setBoxFlex(0);
    7575    }
    76     RenderBlock::setStyle(style);
     76    RenderBlock::styleWillChange(diff, newStyle);
     77}
     78
     79void RenderButton::styleDidChange(RenderStyle::Diff diff, const RenderStyle* oldStyle)
     80{
     81    RenderBlock::styleDidChange(diff, oldStyle);
     82
    7783    if (m_buttonText)
    78         m_buttonText->setStyle(style);
     84        m_buttonText->setStyle(style());
    7985    if (m_inner) // RenderBlock handled updating the anonymous block's style.
    8086        m_inner->style()->setBoxFlex(1.0f);
  • trunk/WebCore/rendering/RenderButton.h

    r37252 r37464  
    4646    virtual bool createsAnonymousWrapper() const { return true; }
    4747
    48     virtual void setStyle(const RenderStyle*);
    4948    virtual void updateFromElement();
    5049
     
    5958
    6059protected:
     60    virtual void styleWillChange(RenderStyle::Diff, const RenderStyle* newStyle);
     61    virtual void styleDidChange(RenderStyle::Diff, const RenderStyle* oldStyle);
     62
    6163    virtual bool hasLineIfEmpty() const { return true; }
    6264
  • trunk/WebCore/rendering/RenderFieldset.cpp

    r37252 r37464  
    261261}
    262262
    263 void RenderFieldset::setStyle(const RenderStyle* newStyle)
    264 {
    265     RenderBlock::setStyle(newStyle);
     263void RenderFieldset::styleDidChange(RenderStyle::Diff diff, const RenderStyle* oldStyle)
     264{
     265    RenderBlock::styleDidChange(diff, oldStyle);
    266266
    267267    // WinIE renders fieldsets with display:inline like they're inline-blocks.  For us,
  • trunk/WebCore/rendering/RenderFieldset.h

    r37252 r37464  
    4242    virtual RenderObject* layoutLegend(bool relayoutChildren);
    4343
    44     virtual void setStyle(const RenderStyle*);
    45 
    4644    virtual void calcPrefWidths();
    4745    virtual bool avoidsFloats() const { return true; }
     
    5048
    5149    RenderObject* findLegend() const;
     50
     51protected:
     52    virtual void styleDidChange(RenderStyle::Diff, const RenderStyle* oldStyle);
    5253
    5354private:
  • trunk/WebCore/rendering/RenderFileUploadControl.cpp

    r37252 r37464  
    7272}
    7373
    74 void RenderFileUploadControl::setStyle(const RenderStyle* newStyle)
    75 {
    76     RenderBlock::setStyle(newStyle);
     74void RenderFileUploadControl::styleDidChange(RenderStyle::Diff diff, const RenderStyle* oldStyle)
     75{
     76    RenderBlock::styleDidChange(diff, oldStyle);
    7777    if (m_button)
    78         m_button->renderer()->setStyle(createButtonStyle(newStyle));
     78        m_button->renderer()->setStyle(createButtonStyle(style()));
    7979
    8080    setReplaced(isInline());
  • trunk/WebCore/rendering/RenderFileUploadControl.h

    r37252 r37464  
    4040    virtual const char* renderName() const { return "RenderFileUploadControl"; }
    4141
    42     virtual void setStyle(const RenderStyle*);
    4342    virtual void updateFromElement();
    4443    virtual void calcPrefWidths();
     
    5352    String buttonValue();
    5453    String fileTextValue();
    55    
     54
     55protected:
     56    virtual void styleDidChange(RenderStyle::Diff, const RenderStyle* oldStyle);
     57
    5658private:
    5759    int maxFilenameWidth() const;
  • trunk/WebCore/rendering/RenderInline.cpp

    r37252 r37464  
    4242}
    4343
    44 void RenderInline::setStyle(const RenderStyle* newStyle)
    45 {
    46     RenderFlow::setStyle(newStyle);
     44void RenderInline::styleDidChange(RenderStyle::Diff diff, const RenderStyle* oldStyle)
     45{
     46    RenderFlow::styleDidChange(diff, oldStyle);
     47
    4748    setInline(true);
    4849    setHasReflection(false);
  • trunk/WebCore/rendering/RenderInline.h

    r37252 r37464  
    5151                   RenderObject* newChild, RenderFlow* oldCont);
    5252
    53     virtual void setStyle(const RenderStyle*);
    54 
    5553    virtual void layout() { } // Do nothing for layout()
    5654
     
    7573
    7674protected:
     75    virtual void styleDidChange(RenderStyle::Diff, const RenderStyle* oldStyle);
     76
    7777    static RenderInline* cloneInline(RenderFlow* src);
    7878
  • trunk/WebCore/rendering/RenderLayer.cpp

    r37462 r37464  
    23582358}
    23592359
    2360 void RenderLayer::styleChanged(RenderStyle* oldStyle)
     2360void RenderLayer::styleChanged(RenderStyle::Diff, const RenderStyle* oldStyle)
    23612361{
    23622362    bool isOverflowOnly = shouldBeOverflowOnly();
  • trunk/WebCore/rendering/RenderLayer.h

    r37223 r37464  
    163163    void repaintIncludingDescendants();
    164164
    165     void styleChanged(RenderStyle*);
     165    void styleChanged(RenderStyle::Diff, const RenderStyle*);
    166166
    167167    RenderMarquee* marquee() const { return m_marquee; }
  • trunk/WebCore/rendering/RenderListBox.cpp

    r37252 r37464  
    9191}
    9292
    93 void RenderListBox::setStyle(const RenderStyle* style)
    94 {
    95     RenderBlock::setStyle(style);
     93void RenderListBox::styleDidChange(RenderStyle::Diff diff, const RenderStyle* oldStyle)
     94{
     95    RenderBlock::styleDidChange(diff, oldStyle);
    9696    setReplaced(isInline());
    9797}
  • trunk/WebCore/rendering/RenderListBox.h

    r37252 r37464  
    4848    virtual bool isListBox() const { return true; }
    4949
    50     virtual void setStyle(const RenderStyle*);
    5150    virtual void updateFromElement();
    5251
     
    9594    virtual void setScrollTop(int);
    9695
     96protected:
     97    virtual void styleDidChange(RenderStyle::Diff, const RenderStyle* oldStyle);
     98
    9799private:
    98100    // ScrollbarClient interface.
  • trunk/WebCore/rendering/RenderListItem.cpp

    r37252 r37464  
    4949}
    5050
    51 void RenderListItem::setStyle(const RenderStyle* newStyle)
    52 {
    53     RenderBlock::setStyle(newStyle);
     51void RenderListItem::styleDidChange(RenderStyle::Diff diff, const RenderStyle* oldStyle)
     52{
     53    RenderBlock::styleDidChange(diff, oldStyle);
    5454
    5555    if (style()->listStyleType() != LNONE ||
  • trunk/WebCore/rendering/RenderListItem.h

    r37252 r37464  
    4040    virtual void destroy();
    4141
    42     virtual void setStyle(const RenderStyle*);
    43 
    4442    int value() const { if (!m_isValueUpToDate) updateValueNow(); return m_value; }
    4543    void updateValue();
     
    6361    const String& markerText() const;
    6462
     63protected:
     64    virtual void styleDidChange(RenderStyle::Diff, const RenderStyle* oldStyle);
     65
    6566private:
    6667    void updateMarkerLocation();
  • trunk/WebCore/rendering/RenderListMarker.cpp

    r37252 r37464  
    486486}
    487487
    488 void RenderListMarker::setStyle(const RenderStyle* s)
    489 {
    490     if (style() && (s->listStylePosition() != style()->listStylePosition() || s->listStyleType() != style()->listStyleType()))
     488void RenderListMarker::styleWillChange(RenderStyle::Diff diff, const RenderStyle* newStyle)
     489{
     490    if (style() && (newStyle->listStylePosition() != style()->listStylePosition() || newStyle->listStyleType() != style()->listStyleType()))
    491491        setNeedsLayoutAndPrefWidthsRecalc();
    492492   
    493     RenderBox::setStyle(s);
     493    RenderBox::styleWillChange(diff, newStyle);
     494}
     495
     496void RenderListMarker::styleDidChange(RenderStyle::Diff diff, const RenderStyle* oldStyle)
     497{
     498    RenderBox::styleDidChange(diff, oldStyle);
    494499
    495500    if (m_image != style()->listStyleImage()) {
  • trunk/WebCore/rendering/RenderListMarker.h

    r37252 r37464  
    4343    virtual bool isListMarker() const { return true; }
    4444
    45     virtual void setStyle(const RenderStyle*);
    46 
    4745    virtual void paint(PaintInfo&, int tx, int ty);
    4846
     
    7068    void updateMargins();
    7169
     70protected:
     71    virtual void styleWillChange(RenderStyle::Diff, const RenderStyle* newStyle);
     72    virtual void styleDidChange(RenderStyle::Diff, const RenderStyle* oldStyle);
     73
    7274private:
    7375    IntRect getRelativeMarkerRect();
  • trunk/WebCore/rendering/RenderMenuList.cpp

    r37295 r37464  
    118118}
    119119
    120 void RenderMenuList::setStyle(const RenderStyle* newStyle)
    121 {
    122     bool fontChanged = !style() || style()->font() != newStyle->font();
    123    
    124     // Don't allow overflow on menu lists.
    125     ASSERT(newStyle->overflowX() == OVISIBLE);
    126     ASSERT(newStyle->overflowY() == OVISIBLE);
    127    
    128     RenderBlock::setStyle(newStyle);
     120void RenderMenuList::styleDidChange(RenderStyle::Diff diff, const RenderStyle* oldStyle)
     121{
     122    RenderBlock::styleDidChange(diff, oldStyle);
    129123
    130124    if (m_buttonText)
    131         m_buttonText->setStyle(newStyle);
     125        m_buttonText->setStyle(style());
    132126    if (m_innerBlock) // RenderBlock handled updating the anonymous block's style.
    133127        adjustInnerStyle();
     128
    134129    setReplaced(isInline());
     130
     131    bool fontChanged = !oldStyle || oldStyle->font() != style()->font();
    135132    if (fontChanged)
    136133        updateOptionsWidth();
  • trunk/WebCore/rendering/RenderMenuList.h

    r37295 r37464  
    5252    virtual bool canHaveChildren() const { return false; }
    5353
    54     virtual void setStyle(const RenderStyle*);
    5554    virtual void updateFromElement();
    5655
     
    6968
    7069    String text() const;
    71    
     70
     71protected:
     72    virtual void styleDidChange(RenderStyle::Diff, const RenderStyle* oldStyle);
     73
    7274private:
    7375    // PopupMenuClient methods
  • trunk/WebCore/rendering/RenderObject.cpp

    r37252 r37464  
    7676static void* baseOfRenderObjectBeingDeleted;
    7777#endif
     78
     79bool RenderObject::s_affectsParentBlock = false;
    7880
    7981void* RenderObject::operator new(size_t sz, RenderArena* renderArena) throw()
     
    21662168        return;
    21672169
    2168     bool affectsParentBlock = false;
    2169     RenderStyle::Diff d = RenderStyle::Equal;
     2170    RenderStyle::Diff diff = RenderStyle::Equal;
     2171    if (m_style)
     2172        diff = m_style->diff(style);
     2173
     2174    // If we have no layer(), just treat a RepaintLayer hint as a normal Repaint.
     2175    if (diff == RenderStyle::RepaintLayer && !hasLayer())
     2176        diff = RenderStyle::Repaint;
     2177
     2178    styleWillChange(diff, style);
     2179   
     2180    RenderStyle* oldStyle = m_style;
     2181    m_style = const_cast<RenderStyle*>(style);
     2182    if (m_style)
     2183        m_style->ref();
     2184
     2185    updateFillImages(oldStyle ? oldStyle->backgroundLayers() : 0, m_style ? m_style->backgroundLayers() : 0);
     2186    updateFillImages(oldStyle ? oldStyle->maskLayers() : 0, m_style ? m_style->maskLayers() : 0);
     2187
     2188    updateImage(oldStyle ? oldStyle->borderImage().image() : 0, m_style ? m_style->borderImage().image() : 0);
     2189    updateImage(oldStyle ? oldStyle->maskBoxImage().image() : 0, m_style ? m_style->maskBoxImage().image() : 0);
     2190
     2191    styleDidChange(diff, oldStyle);
     2192
     2193    if (oldStyle) {
     2194        oldStyle->deref(renderArena());
     2195    }
     2196}
     2197
     2198void RenderObject::setStyleInternal(RenderStyle* style)
     2199{
     2200    if (m_style == style)
     2201        return;
     2202    if (m_style)
     2203        m_style->deref(renderArena());
     2204    m_style = style;
     2205    if (m_style)
     2206        m_style->ref();
     2207}
     2208
     2209void RenderObject::styleWillChange(RenderStyle::Diff diff, const RenderStyle* newStyle)
     2210{
    21702211    if (m_style) {
    2171         d = m_style->diff(style);
    2172 
    21732212        // If our z-index changes value or our visibility changes,
    21742213        // we need to dirty our stacking context's z-order list.
    2175         if (style) {
     2214        if (newStyle) {
    21762215#if ENABLE(DASHBOARD_SUPPORT)
    2177             if (m_style->visibility() != style->visibility() ||
    2178                     m_style->zIndex() != style->zIndex() ||
    2179                     m_style->hasAutoZIndex() != style->hasAutoZIndex())
     2216            if (m_style->visibility() != newStyle->visibility() ||
     2217                    m_style->zIndex() != newStyle->zIndex() ||
     2218                    m_style->hasAutoZIndex() != newStyle->hasAutoZIndex())
    21802219                document()->setDashboardRegionsDirty(true);
    21812220#endif
    21822221
    2183             if ((m_style->hasAutoZIndex() != style->hasAutoZIndex() ||
    2184                     m_style->zIndex() != style->zIndex() ||
    2185                     m_style->visibility() != style->visibility()) && hasLayer()) {
     2222            if ((m_style->hasAutoZIndex() != newStyle->hasAutoZIndex() ||
     2223                    m_style->zIndex() != newStyle->zIndex() ||
     2224                    m_style->visibility() != newStyle->visibility()) && hasLayer()) {
    21862225                layer()->dirtyStackingContextZOrderLists();
    2187                 if (m_style->hasAutoZIndex() != style->hasAutoZIndex() ||
    2188                         m_style->visibility() != style->visibility())
     2226                if (m_style->hasAutoZIndex() != newStyle->hasAutoZIndex() ||
     2227                        m_style->visibility() != newStyle->visibility())
    21892228                    layer()->dirtyZOrderLists();
    21902229            }
    21912230            // keep layer hierarchy visibility bits up to date if visibility changes
    2192             if (m_style->visibility() != style->visibility()) {
     2231            if (m_style->visibility() != newStyle->visibility()) {
    21932232                if (RenderLayer* l = enclosingLayer()) {
    2194                     if (style->visibility() == VISIBLE)
     2233                    if (newStyle->visibility() == VISIBLE)
    21952234                        l->setHasVisibleContent(true);
    21962235                    else if (l->hasVisibleContent() && (this == l->renderer() || l->renderer()->style()->visibility() != VISIBLE)) {
    21972236                        l->dirtyVisibleContentStatus();
    2198                         if (d > RenderStyle::RepaintLayer)
     2237                        if (diff > RenderStyle::RepaintLayer)
    21992238                            repaint();
    22002239                    }
     
    22032242        }
    22042243
    2205         // If we have no layer(), just treat a RepaintLayer hint as a normal Repaint.
    2206         if (d == RenderStyle::RepaintLayer && !hasLayer())
    2207             d = RenderStyle::Repaint;
    2208 
    22092244        // The background of the root element or the body element could propagate up to
    22102245        // the canvas.  Just dirty the entire canvas when our style changes substantially.
    2211         if (d >= RenderStyle::Repaint && element() &&
     2246        if (diff >= RenderStyle::Repaint && element() &&
    22122247                (element()->hasTagName(htmlTag) || element()->hasTagName(bodyTag)))
    22132248            view()->repaint();
     
    22152250            // Do a repaint with the old style first, e.g., for example if we go from
    22162251            // having an outline to not having an outline.
    2217             if (d == RenderStyle::RepaintLayer) {
     2252            if (diff == RenderStyle::RepaintLayer) {
    22182253                layer()->repaintIncludingDescendants();
    2219                 if (!(m_style->clip() == style->clip()))
     2254                if (!(m_style->clip() == newStyle->clip()))
    22202255                    layer()->clearClipRects();
    2221             } else if (d == RenderStyle::Repaint || style->outlineSize() < m_style->outlineSize())
     2256            } else if (diff == RenderStyle::Repaint || newStyle->outlineSize() < m_style->outlineSize())
    22222257                repaint();
    22232258        }
     
    22252260        // When a layout hint happens, we go ahead and do a repaint of the layer, since the layer could
    22262261        // end up being destroyed.
    2227         if (d == RenderStyle::Layout && hasLayer() &&
    2228                 (m_style->position() != style->position() ||
    2229                  m_style->zIndex() != style->zIndex() ||
    2230                  m_style->hasAutoZIndex() != style->hasAutoZIndex() ||
    2231                  !(m_style->clip() == style->clip()) ||
    2232                  m_style->hasClip() != style->hasClip() ||
    2233                  m_style->opacity() != style->opacity()))
     2262        if (diff == RenderStyle::Layout && hasLayer() &&
     2263                (m_style->position() != newStyle->position() ||
     2264                 m_style->zIndex() != newStyle->zIndex() ||
     2265                 m_style->hasAutoZIndex() != newStyle->hasAutoZIndex() ||
     2266                 !(m_style->clip() == newStyle->clip()) ||
     2267                 m_style->hasClip() != newStyle->hasClip() ||
     2268                 m_style->opacity() != newStyle->opacity()))
    22342269            layer()->repaintIncludingDescendants();
    22352270
    22362271        // When a layout hint happens and an object's position style changes, we have to do a layout
    22372272        // to dirty the render tree using the old position value now.
    2238         if (d == RenderStyle::Layout && m_parent && m_style->position() != style->position()) {
     2273        if (diff == RenderStyle::Layout && m_parent && m_style->position() != newStyle->position()) {
    22392274            markContainingBlocksForLayout();
    22402275            if (m_style->position() == StaticPosition)
    22412276                repaint();
    2242             if (isFloating() && !isPositioned() && (style->position() == AbsolutePosition || style->position() == FixedPosition))
     2277            if (isFloating() && !isPositioned() && (newStyle->position() == AbsolutePosition || newStyle->position() == FixedPosition))
    22432278                removeFromObjectLists();
    22442279            if (isRenderBlock()) {
    2245                 if (style->position() == StaticPosition)
     2280                if (newStyle->position() == StaticPosition)
    22462281                    // Clear our positioned objects list. Our absolutely positioned descendants will be
    22472282                    // inserted into our containing block's positioned objects list during layout.
     
    22632298        }
    22642299
    2265         if (isFloating() && (m_style->floating() != style->floating()))
     2300        if (isFloating() && (m_style->floating() != newStyle->floating()))
    22662301            // For changes in float styles, we need to conceivably remove ourselves
    22672302            // from the floating objects list.
    22682303            removeFromObjectLists();
    2269         else if (isPositioned() && (style->position() != AbsolutePosition && style->position() != FixedPosition))
     2304        else if (isPositioned() && (newStyle->position() != AbsolutePosition && newStyle->position() != FixedPosition))
    22702305            // For changes in positioning styles, we need to conceivably remove ourselves
    22712306            // from the positioned objects list.
    22722307            removeFromObjectLists();
    22732308
    2274         affectsParentBlock = m_style && isFloatingOrPositioned() &&
    2275             (!style->isFloating() && style->position() != AbsolutePosition && style->position() != FixedPosition)
     2309        s_affectsParentBlock = isFloatingOrPositioned() &&
     2310            (!newStyle->isFloating() && newStyle->position() != AbsolutePosition && newStyle->position() != FixedPosition)
    22762311            && parent() && (parent()->isBlockFlow() || parent()->isInlineFlow());
    22772312
    22782313        // reset style flags
    2279         if (d == RenderStyle::Layout || d == RenderStyle::LayoutPositionedMovementOnly) {
     2314        if (diff == RenderStyle::Layout || diff == RenderStyle::LayoutPositionedMovementOnly) {
    22802315            m_floating = false;
    22812316            m_positioned = false;
     
    22862321        m_hasTransform = false;
    22872322        m_hasReflection = false;
    2288     }
     2323    } else
     2324        s_affectsParentBlock = false;
    22892325
    22902326    if (view()->frameView()) {
    22912327        // FIXME: A better solution would be to only invalidate the fixed regions when scrolling.  It's overkill to
    22922328        // prevent the entire view from blitting on a scroll.
    2293         bool newStyleSlowScroll = style && (style->position() == FixedPosition || style->hasFixedBackgroundImage());
     2329        bool newStyleSlowScroll = newStyle && (newStyle->position() == FixedPosition || newStyle->hasFixedBackgroundImage());
    22942330        bool oldStyleSlowScroll = m_style && (m_style->position() == FixedPosition || m_style->hasFixedBackgroundImage());
    22952331        if (oldStyleSlowScroll != newStyleSlowScroll) {
     
    23002336        }
    23012337    }
    2302 
    2303     RenderStyle* oldStyle = m_style;
    2304     m_style = const_cast<RenderStyle*>(style);
    2305     if (m_style)
    2306         m_style->ref();
    2307 
    2308     updateFillImages(oldStyle ? oldStyle->backgroundLayers() : 0, m_style ? m_style->backgroundLayers() : 0);
    2309     updateFillImages(oldStyle ? oldStyle->maskLayers() : 0, m_style ? m_style->maskLayers() : 0);
    2310 
    2311     updateImage(oldStyle ? oldStyle->borderImage().image() : 0, m_style ? m_style->borderImage().image() : 0);
    2312     updateImage(oldStyle ? oldStyle->maskBoxImage().image() : 0, m_style ? m_style->maskBoxImage().image() : 0);
    2313 
    2314     if (oldStyle) {
    2315         oldStyle->deref(renderArena());
    2316         oldStyle = 0;
    2317     }
    2318 
     2338}
     2339
     2340void RenderObject::styleDidChange(RenderStyle::Diff diff, const RenderStyle* oldStyle)
     2341{
    23192342    setHasBoxDecorations(m_style->hasBorder() || m_style->hasBackground() || m_style->hasAppearance() || m_style->boxShadow());
    23202343
    2321     if (affectsParentBlock)
     2344    if (s_affectsParentBlock)
    23222345        handleDynamicFloatPositionChange();
    23232346
     
    23262349    // We do have to schedule layouts, though, since a style change can force us to
    23272350    // need to relayout.
    2328     if (d == RenderStyle::Layout && m_parent)
     2351    if (diff == RenderStyle::Layout && m_parent)
    23292352        setNeedsLayoutAndPrefWidthsRecalc();
    2330     else if (d == RenderStyle::LayoutPositionedMovementOnly && m_parent && !isText())
     2353    else if (diff == RenderStyle::LayoutPositionedMovementOnly && m_parent && !isText())
    23312354        setNeedsPositionedMovementLayout();
    2332     else if (m_parent && !isText() && (d == RenderStyle::RepaintLayer || d == RenderStyle::Repaint))
     2355    else if (m_parent && !isText() && (diff == RenderStyle::RepaintLayer || diff == RenderStyle::Repaint))
    23332356        // Do a repaint with the new style now, e.g., for example if we go from
    23342357        // not having an outline to having an outline.
    23352358        repaint();
    2336 }
    2337 
    2338 void RenderObject::setStyleInternal(RenderStyle* style)
    2339 {
    2340     if (m_style == style)
    2341         return;
    2342     if (m_style)
    2343         m_style->deref(renderArena());
    2344     m_style = style;
    2345     if (m_style)
    2346         m_style->ref();
    23472359}
    23482360
  • trunk/WebCore/rendering/RenderObject.h

    r37252 r37464  
    528528#endif
    529529
    530     // Used to signal a specific subrect within an object that must be repainted after
    531     // layout is complete.
    532     struct RepaintInfo {
    533         RepaintInfo(RenderObject* object = 0, const IntRect& repaintRect = IntRect())
    534             : m_object(object)
    535             , m_repaintRect(repaintRect)
    536         {
    537         }
    538 
    539         RenderObject* m_object;
    540         IntRect m_repaintRect;
    541     };
    542 
    543530    bool hitTest(const HitTestRequest&, HitTestResult&, const IntPoint&, int tx, int ty, HitTestFilter = HitTestAll);
    544531    virtual bool nodeAtPoint(const HitTestRequest&, HitTestResult&, int x, int y, int tx, int ty, HitTestAction);
     
    908895
    909896protected:
     897    // Overrides should call the superclass at the end
     898    virtual void styleWillChange(RenderStyle::Diff, const RenderStyle* newStyle);
     899    // Overrides should call the superclass at the start
     900    virtual void styleDidChange(RenderStyle::Diff, const RenderStyle* oldStyle);
     901   
    910902    virtual void printBoxDecorations(GraphicsContext*, int /*x*/, int /*y*/, int /*w*/, int /*h*/, int /*tx*/, int /*ty*/) { }
    911903
     
    960952    bool m_hasCounterNodeMap         : 1;
    961953    bool m_everHadLayout             : 1;
     954
     955private:
     956    // Store state between styleWillChange and styleDidChange
     957    static bool s_affectsParentBlock;
    962958};
    963959
  • trunk/WebCore/rendering/RenderReplaced.cpp

    r37252 r37464  
    6262}
    6363
    64 void RenderReplaced::setStyle(const RenderStyle* newStyle)
    65 {
    66     bool hadStyle = style();
    67     float oldZoom = hadStyle ? style()->effectiveZoom() : RenderStyle::initialZoom();
    68     RenderBox::setStyle(newStyle);
    69     if (hadStyle && newStyle && newStyle->effectiveZoom() != oldZoom)
     64void RenderReplaced::styleDidChange(RenderStyle::Diff diff, const RenderStyle* oldStyle)
     65{
     66    RenderBox::styleDidChange(diff, oldStyle);
     67
     68    bool hadStyle = (oldStyle != 0);
     69    float oldZoom = hadStyle ? oldStyle->effectiveZoom() : RenderStyle::initialZoom();
     70    if (hadStyle && style() && style()->effectiveZoom() != oldZoom)
    7071        intrinsicSizeChanged();
    7172}
  • trunk/WebCore/rendering/RenderReplaced.h

    r37252 r37464  
    4343    virtual int minimumReplacedHeight() const { return 0; }
    4444
    45     virtual void setStyle(const RenderStyle*);
    46 
    4745    virtual void paint(PaintInfo&, int tx, int ty);
    4846    virtual void paintReplaced(PaintInfo&, int tx, int ty) { }
     
    6765
    6866protected:
     67    virtual void styleDidChange(RenderStyle::Diff, const RenderStyle* oldStyle);
     68
    6969    void setIntrinsicSize(const IntSize&);
    7070    virtual void intrinsicSizeChanged();
  • trunk/WebCore/rendering/RenderSVGGradientStop.cpp

    r37252 r37464  
    4343}
    4444
    45 void RenderSVGGradientStop::setStyle(const RenderStyle* style)
     45void RenderSVGGradientStop::styleDidChange(RenderStyle::Diff diff, const RenderStyle* oldStyle)
    4646{
    47     RenderObject::setStyle(style);
     47    RenderObject::styleDidChange(diff, oldStyle);
    4848
    4949    // <stop> elements should only be allowed to make renderers under gradient elements
  • trunk/WebCore/rendering/RenderSVGGradientStop.h

    r37252 r37464  
    4141       
    4242        virtual void layout();
    43         virtual void setStyle(const RenderStyle*);
    44        
     43   
     44    protected:
     45        virtual void styleDidChange(RenderStyle::Diff, const RenderStyle* oldStyle);
     46
    4547    private:
    4648        SVGGradientElement* gradientElement() const;
  • trunk/WebCore/rendering/RenderScrollbarPart.cpp

    r37462 r37464  
    116116}
    117117
    118 void RenderScrollbarPart::setStyle(const RenderStyle* s)
     118void RenderScrollbarPart::styleDidChange(RenderStyle::Diff diff, const RenderStyle* oldStyle)
    119119{
    120     RenderBlock::setStyle(s);
     120    RenderBlock::styleDidChange(diff, oldStyle);
    121121    setInline(false);
    122122    setPositioned(false);
  • trunk/WebCore/rendering/RenderScrollbarPart.h

    r37462 r37464  
    4646    virtual void calcPrefWidths();
    4747   
    48     virtual void setStyle(const RenderStyle*);
     48protected:
     49    virtual void styleDidChange(RenderStyle::Diff, const RenderStyle* oldStyle);
    4950
    5051private:
  • trunk/WebCore/rendering/RenderSlider.cpp

    r37252 r37464  
    165165}
    166166
    167 void RenderSlider::setStyle(const RenderStyle* newStyle)
    168 {
    169     RenderBlock::setStyle(newStyle);
     167void RenderSlider::styleDidChange(RenderStyle::Diff diff, const RenderStyle* oldStyle)
     168{
     169    RenderBlock::styleDidChange(diff, oldStyle);
    170170   
    171171    if (m_thumb) {
    172         RenderStyle* thumbStyle = createThumbStyle(newStyle, m_thumb->renderer()->style());
     172        RenderStyle* thumbStyle = createThumbStyle(style(), m_thumb->renderer()->style());
    173173        m_thumb->renderer()->setStyle(thumbStyle);
    174174    }
  • trunk/WebCore/rendering/RenderSlider.h

    r37252 r37464  
    4242        virtual int baselinePosition( bool, bool ) const;
    4343        virtual void calcPrefWidths();
    44         virtual void setStyle(const RenderStyle*);
    4544        virtual void layout();
    4645        virtual void updateFromElement();
     
    6059        bool inDragMode() const;
    6160
     61    protected:
     62        virtual void styleDidChange(RenderStyle::Diff, const RenderStyle* oldStyle);
     63   
    6264    private:
    6365        RenderStyle* createThumbStyle(const RenderStyle* parentStyle, const RenderStyle* oldStyle = 0);
  • trunk/WebCore/rendering/RenderTable.cpp

    r37252 r37464  
    7171}
    7272
    73 void RenderTable::setStyle(const RenderStyle* newStyle)
    74 {
    75     ETableLayout oldTableLayout = style() ? style()->tableLayout() : TAUTO;
    76     RenderBlock::setStyle(newStyle);
     73void RenderTable::styleDidChange(RenderStyle::Diff diff, const RenderStyle* oldStyle)
     74{
     75    RenderBlock::styleDidChange(diff, oldStyle);
     76
     77    ETableLayout oldTableLayout = oldStyle ? oldStyle->tableLayout() : TAUTO;
    7778
    7879    // In the collapsed border model, there is no cell spacing.
  • trunk/WebCore/rendering/RenderTable.h

    r37252 r37464  
    6767    virtual bool isTable() const { return true; }
    6868
    69     virtual void setStyle(const RenderStyle*);
    70 
    7169    virtual bool avoidsFloats() const { return true; }
    7270
     
    194192    }
    195193
     194protected:
     195    virtual void styleDidChange(RenderStyle::Diff, const RenderStyle* oldStyle);
     196
    196197private:
    197198    void recalcSections() const;
  • trunk/WebCore/rendering/RenderTableCell.cpp

    r37252 r37464  
    221221}
    222222
    223 void RenderTableCell::setStyle(const RenderStyle* newStyle)
     223void RenderTableCell::styleWillChange(RenderStyle::Diff diff, const RenderStyle* newStyle)
    224224{
    225225    if (parent() && section() && style() && style()->height() != newStyle->height())
     
    228228    ASSERT(newStyle->display() == TABLE_CELL);
    229229
    230     RenderBlock::setStyle(newStyle);
     230    RenderBlock::styleWillChange(diff, newStyle);
     231}
     232
     233void RenderTableCell::styleDidChange(RenderStyle::Diff diff, const RenderStyle* oldStyle)
     234{
     235    RenderBlock::styleDidChange(diff, oldStyle);
    231236    setHasBoxDecorations(true);
    232237}
  • trunk/WebCore/rendering/RenderTableCell.h

    r37252 r37464  
    6565    virtual void calcWidth();
    6666    virtual void setWidth(int);
    67     virtual void setStyle(const RenderStyle*);
    6867
    6968    virtual bool expandsToEncloseOverhangingFloats() const { return true; }
     
    113112    virtual int borderBottomExtra() const { return m_bottomExtra; }
    114113
     114protected:
     115    virtual void styleWillChange(RenderStyle::Diff, const RenderStyle* newStyle);
     116    virtual void styleDidChange(RenderStyle::Diff, const RenderStyle* oldStyle);
     117
    115118private:
    116119    int m_row;
  • trunk/WebCore/rendering/RenderTableRow.cpp

    r37252 r37464  
    5555}
    5656
    57 void RenderTableRow::setStyle(const RenderStyle* newStyle)
     57void RenderTableRow::styleWillChange(RenderStyle::Diff diff, const RenderStyle* newStyle)
    5858{
    5959    if (section() && style() && style()->height() != newStyle->height())
     
    6262    ASSERT(newStyle->display() == TABLE_ROW);
    6363
    64     RenderContainer::setStyle(newStyle);
     64    RenderContainer::styleWillChange(diff, newStyle);
    6565}
    6666
  • trunk/WebCore/rendering/RenderTableRow.h

    r37252 r37464  
    4545    RenderTable* table() const { return static_cast<RenderTable*>(parent()->parent()); }
    4646
    47     virtual void setStyle(const RenderStyle*);
    4847    virtual void addChild(RenderObject* child, RenderObject* beforeChild = 0);
    4948    virtual int lineHeight(bool firstLine, bool isRootLineBox = false) const { return 0; }
     
    5857    virtual void paint(PaintInfo&, int tx, int ty);
    5958    virtual void imageChanged(WrappedImagePtr);
     59
     60protected:
     61    virtual void styleWillChange(RenderStyle::Diff, const RenderStyle* newStyle);
     62
    6063};
    6164
  • trunk/WebCore/rendering/RenderText.cpp

    r37252 r37464  
    9292}
    9393
    94 void RenderText::setStyle(const RenderStyle* newStyle)
    95 {
    96     RenderStyle* oldStyle = style();
    97     if (oldStyle == newStyle)
    98         return;
     94void RenderText::styleDidChange(RenderStyle::Diff diff, const RenderStyle* oldStyle)
     95{
     96    RenderObject::styleDidChange(diff, oldStyle);
    9997
    10098    ETextTransform oldTransform = oldStyle ? oldStyle->textTransform() : TTNONE;
    10199    ETextSecurity oldSecurity = oldStyle ? oldStyle->textSecurity() : TSNONE;
    102100
    103     RenderObject::setStyle(newStyle);
    104 
    105     if (oldTransform != newStyle->textTransform() || oldSecurity != newStyle->textSecurity()
     101    if (oldTransform != style()->textTransform() || oldSecurity != style()->textSecurity()
    106102#if ENABLE(SVG)
    107103        || isSVGText() /* All SVG text has to be transformed */
  • trunk/WebCore/rendering/RenderText.h

    r37252 r37464  
    4444
    4545    virtual PassRefPtr<StringImpl> originalText() const;
    46 
    47     virtual void setStyle(const RenderStyle*);
    4846
    4947    void extractTextBox(InlineTextBox*);
     
    132130
    133131protected:
     132    virtual void styleDidChange(RenderStyle::Diff, const RenderStyle* oldStyle);
     133
    134134    virtual void setTextInternal(PassRefPtr<StringImpl>);
    135135    virtual void calcPrefWidths(int leadWidth);
  • trunk/WebCore/rendering/RenderTextControl.cpp

    r37295 r37464  
    110110}
    111111
    112 void RenderTextControl::setStyle(const RenderStyle* style)
    113 {
    114     RenderBlock::setStyle(style);
     112void RenderTextControl::styleDidChange(RenderStyle::Diff diff, const RenderStyle* oldStyle)
     113{
     114    RenderBlock::styleDidChange(diff, oldStyle);
    115115    if (m_innerBlock) {
    116116        // We may have set the width and the height in the old style in layout(). Reset them now to avoid
     
    118118        m_innerBlock->renderer()->style()->setHeight(Length());
    119119        m_innerBlock->renderer()->style()->setWidth(Length());
    120         m_innerBlock->renderer()->setStyle(createInnerBlockStyle(style));
     120        m_innerBlock->renderer()->setStyle(createInnerBlockStyle(style()));
    121121    }
    122122
    123123    if (m_innerText) {
    124124        RenderBlock* textBlockRenderer = static_cast<RenderBlock*>(m_innerText->renderer());
    125         RenderStyle* textBlockStyle = createInnerTextStyle(style);
     125        RenderStyle* textBlockStyle = createInnerTextStyle(style());
    126126        // We may have set the width and the height in the old style in layout(). Reset them now to avoid
    127127        // getting a spurious layout hint.
     
    135135    }
    136136    if (m_resultsButton && m_resultsButton->renderer())
    137         m_resultsButton->renderer()->setStyle(createResultsButtonStyle(style));
     137        m_resultsButton->renderer()->setStyle(createResultsButtonStyle(style()));
    138138
    139139    if (m_cancelButton && m_cancelButton->renderer())
    140         m_cancelButton->renderer()->setStyle(createCancelButtonStyle(style));
     140        m_cancelButton->renderer()->setStyle(createCancelButtonStyle(style()));
    141141
    142142    setHasOverflowClip(false);
  • trunk/WebCore/rendering/RenderTextControl.h

    r37295 r37464  
    4848    virtual void calcPrefWidths();
    4949    virtual void removeLeftoverAnonymousBlock(RenderBlock*) { }
    50     virtual void setStyle(const RenderStyle*);
    5150    virtual void updateFromElement();
    5251    virtual bool canHaveChildren() const { return false; }
     
    108107    virtual void capsLockStateMayHaveChanged();
    109108
     109protected:
     110    virtual void styleDidChange(RenderStyle::Diff, const RenderStyle* oldStyle);
     111
    110112private:
    111113    // PopupMenuClient methods
  • trunk/WebCore/rendering/RenderWidget.cpp

    r37252 r37464  
    157157}
    158158
    159 void RenderWidget::setStyle(const RenderStyle* newStyle)
    160 {
    161     RenderReplaced::setStyle(newStyle);
     159void RenderWidget::styleDidChange(RenderStyle::Diff diff, const RenderStyle* oldStyle)
     160{
     161    RenderReplaced::styleDidChange(diff, oldStyle);
    162162    if (m_widget) {
    163163        if (style()->visibility() != VISIBLE)
  • trunk/WebCore/rendering/RenderWidget.h

    r37252 r37464  
    3838    virtual bool isWidget() const { return true; }
    3939
    40     virtual void setStyle(const RenderStyle*);
    41 
    4240    virtual void paint(PaintInfo&, int tx, int ty);
    4341
     
    5957    virtual bool nodeAtPoint(const HitTestRequest&, HitTestResult&, int x, int y, int tx, int ty, HitTestAction);
    6058
     59protected:
     60    virtual void styleDidChange(RenderStyle::Diff, const RenderStyle* oldStyle);
     61
    6162private:
    6263    void setWidgetGeometry(const IntRect&);
Note: See TracChangeset for help on using the changeset viewer.