OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
4 * (C) 2000 Dirk Mueller (mueller@kde.org) | 4 * (C) 2000 Dirk Mueller (mueller@kde.org) |
5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com) | 5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com) |
6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2011 Apple Inc. All rights reserv
ed. | 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2011 Apple Inc. All rights reserv
ed. |
7 * Copyright (C) 2009 Google Inc. All rights reserved. | 7 * Copyright (C) 2009 Google Inc. All rights reserved. |
8 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo
bile.com/) | 8 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo
bile.com/) |
9 * | 9 * |
10 * This library is free software; you can redistribute it and/or | 10 * This library is free software; you can redistribute it and/or |
(...skipping 1832 matching lines...) Loading... |
1843 else { | 1843 else { |
1844 // An anonymous block must be made to wrap this inline. | 1844 // An anonymous block must be made to wrap this inline. |
1845 RenderBlock* block = toRenderBlock(parent())->createAnonymousBlock()
; | 1845 RenderBlock* block = toRenderBlock(parent())->createAnonymousBlock()
; |
1846 RenderObjectChildList* childlist = parent()->virtualChildren(); | 1846 RenderObjectChildList* childlist = parent()->virtualChildren(); |
1847 childlist->insertChildNode(parent(), block, this); | 1847 childlist->insertChildNode(parent(), block, this); |
1848 block->children()->appendChildNode(block, childlist->removeChildNode
(parent(), this)); | 1848 block->children()->appendChildNode(block, childlist->removeChildNode
(parent(), this)); |
1849 } | 1849 } |
1850 } | 1850 } |
1851 } | 1851 } |
1852 | 1852 |
1853 StyleDifference RenderObject::adjustStyleDifference(StyleDifference diff, unsign
ed contextSensitiveProperties) const | 1853 StyleDifference RenderObject::adjustStyleDifference(StyleDifference diff) const |
1854 { | 1854 { |
1855 // FIXME: The calls to hasDirectReasonsForCompositing are using state that m
ay not be up to date. | 1855 // FIXME: The calls to hasDirectReasonsForCompositing are using state that m
ay not be up to date. |
1856 DisableCompositingQueryAsserts disabler; | 1856 DisableCompositingQueryAsserts disabler; |
1857 | 1857 |
1858 if (contextSensitiveProperties & ContextSensitivePropertyTransform && isSVG(
)) | 1858 if (diff.transformChanged() && isSVG()) |
1859 diff = StyleDifferenceLayout; | 1859 diff.setNeedsFullLayout(); |
1860 | 1860 |
1861 // If transform changed, and the layer does not paint into its own separate
backing, then we need to repaint. | 1861 // If transform changed, and the layer does not paint into its own separate
backing, then we need to repaint. |
1862 if (contextSensitiveProperties & ContextSensitivePropertyTransform && diff
<= StyleDifferenceRepaintLayer) { | 1862 if (diff.transformChanged() && !diff.needsLayout()) { |
1863 // Text nodes share style with their parents but transforms don't apply
to them, | 1863 // Text nodes share style with their parents but transforms don't apply
to them, |
1864 // hence the !isText() check. | 1864 // hence the !isText() check. |
1865 if (!isText() && (!hasLayer() || !toRenderLayerModelObject(this)->layer(
)->hasDirectReasonsForCompositing())) | 1865 if (!isText() && (!hasLayer() || !toRenderLayerModelObject(this)->layer(
)->hasDirectReasonsForCompositing())) |
1866 diff = StyleDifferenceRepaintLayer; | 1866 diff.setNeedsRepaintLayer(); |
1867 else if (diff < StyleDifferenceRecompositeLayer) | 1867 else |
1868 diff = StyleDifferenceRecompositeLayer; | 1868 diff.setNeedsRecompositeLayer(); |
1869 } | 1869 } |
1870 | 1870 |
1871 // If opacity or filters changed, and the layer does not paint into its own
separate backing, then we need to repaint (also | 1871 // If opacity or filters changed, and the layer does not paint into its own
separate backing, then we need to repaint (also |
1872 // ignoring text nodes) | 1872 // ignoring text nodes) |
1873 if (contextSensitiveProperties & ContextSensitivePropertyOpacity && diff <=
StyleDifferenceRepaintLayer) { | 1873 if (diff.opacityChanged() && !diff.needsLayout()) { |
1874 if (!isText() && (!hasLayer() || !toRenderLayerModelObject(this)->layer(
)->hasDirectReasonsForCompositing())) | 1874 if (!isText() && (!hasLayer() || !toRenderLayerModelObject(this)->layer(
)->hasDirectReasonsForCompositing())) |
1875 diff = StyleDifferenceRepaintLayer; | 1875 diff.setNeedsRepaintLayer(); |
1876 else if (diff < StyleDifferenceRecompositeLayer) | 1876 else |
1877 diff = StyleDifferenceRecompositeLayer; | 1877 diff.setNeedsRecompositeLayer(); |
1878 } | 1878 } |
1879 | 1879 |
1880 if ((contextSensitiveProperties & ContextSensitivePropertyFilter) && hasLaye
r() && diff <= StyleDifferenceRepaintLayer) { | 1880 if (diff.filterChanged() && hasLayer() && !diff.needsLayout()) { |
1881 RenderLayer* layer = toRenderLayerModelObject(this)->layer(); | 1881 RenderLayer* layer = toRenderLayerModelObject(this)->layer(); |
1882 if (!layer->hasDirectReasonsForCompositing() || layer->paintsWithFilters
()) | 1882 if (!layer->hasDirectReasonsForCompositing() || layer->paintsWithFilters
()) |
1883 diff = StyleDifferenceRepaintLayer; | 1883 diff.setNeedsRepaintLayer(); |
1884 else if (diff < StyleDifferenceRecompositeLayer) | 1884 else |
1885 diff = StyleDifferenceRecompositeLayer; | 1885 diff.setNeedsRecompositeLayer(); |
1886 } | 1886 } |
1887 | 1887 |
1888 if ((contextSensitiveProperties & ContextSensitivePropertyTextOrColor) && di
ff < StyleDifferenceRepaint | 1888 if (diff.textOrColorChanged() && !diff.needsRepaint() && !diff.needsLayout() |
1889 && hasImmediateNonWhitespaceTextChildOrPropertiesDependentOnColor()) | 1889 && hasImmediateNonWhitespaceTextChildOrPropertiesDependentOnColor()) |
1890 diff = StyleDifferenceRepaint; | 1890 diff.setNeedsRepaintObject(); |
1891 | 1891 |
1892 // The answer to layerTypeRequired() for plugins, iframes, and canvas can ch
ange without the actual | 1892 // The answer to layerTypeRequired() for plugins, iframes, and canvas can ch
ange without the actual |
1893 // style changing, since it depends on whether we decide to composite these
elements. When the | 1893 // style changing, since it depends on whether we decide to composite these
elements. When the |
1894 // layer status of one of these elements changes, we need to force a layout. | 1894 // layer status of one of these elements changes, we need to force a layout. |
1895 if (diff == StyleDifferenceEqual && style() && isLayerModelObject()) { | 1895 if (diff.hasNoChange() && style() && isLayerModelObject()) { |
1896 bool requiresLayer = toRenderLayerModelObject(this)->layerTypeRequired()
!= NoLayer; | 1896 bool requiresLayer = toRenderLayerModelObject(this)->layerTypeRequired()
!= NoLayer; |
1897 if (hasLayer() != requiresLayer) | 1897 if (hasLayer() != requiresLayer) |
1898 diff = StyleDifferenceLayout; | 1898 diff.setNeedsFullLayout(); |
1899 } | 1899 } |
1900 | 1900 |
1901 // If we have no layer(), just treat a RepaintLayer hint as a normal Repaint
. | 1901 // If we have no layer(), just treat a RepaintLayer hint as a normal Repaint
. |
1902 if (diff == StyleDifferenceRepaintLayer && !hasLayer()) | 1902 if (diff.needsRepaintLayer() && !hasLayer()) { |
1903 diff = StyleDifferenceRepaint; | 1903 diff.resetNeedsRepaint(); |
| 1904 diff.setNeedsRepaintObject(); |
| 1905 } |
1904 | 1906 |
1905 return diff; | 1907 return diff; |
1906 } | 1908 } |
1907 | 1909 |
1908 void RenderObject::setPseudoStyle(PassRefPtr<RenderStyle> pseudoStyle) | 1910 void RenderObject::setPseudoStyle(PassRefPtr<RenderStyle> pseudoStyle) |
1909 { | 1911 { |
1910 ASSERT(pseudoStyle->styleType() == BEFORE || pseudoStyle->styleType() == AFT
ER); | 1912 ASSERT(pseudoStyle->styleType() == BEFORE || pseudoStyle->styleType() == AFT
ER); |
1911 | 1913 |
1912 // FIXME: We should consider just making all pseudo items use an inherited s
tyle. | 1914 // FIXME: We should consider just making all pseudo items use an inherited s
tyle. |
1913 | 1915 |
(...skipping 43 matching lines...) Loading... |
1957 { | 1959 { |
1958 ASSERT(style); | 1960 ASSERT(style); |
1959 | 1961 |
1960 if (m_style == style) { | 1962 if (m_style == style) { |
1961 // We need to run through adjustStyleDifference() for iframes, plugins,
and canvas so | 1963 // We need to run through adjustStyleDifference() for iframes, plugins,
and canvas so |
1962 // style sharing is disabled for them. That should ensure that we never
hit this code path. | 1964 // style sharing is disabled for them. That should ensure that we never
hit this code path. |
1963 ASSERT(!isRenderIFrame() && !isEmbeddedObject() && !isCanvas()); | 1965 ASSERT(!isRenderIFrame() && !isEmbeddedObject() && !isCanvas()); |
1964 return; | 1966 return; |
1965 } | 1967 } |
1966 | 1968 |
1967 StyleDifference diff = StyleDifferenceEqual; | 1969 StyleDifference diff; |
1968 unsigned contextSensitiveProperties = ContextSensitivePropertyNone; | |
1969 if (m_style) | 1970 if (m_style) |
1970 diff = m_style->visualInvalidationDiff(*style, contextSensitivePropertie
s); | 1971 diff = m_style->visualInvalidationDiff(*style); |
1971 | 1972 |
1972 diff = adjustStyleDifference(diff, contextSensitiveProperties); | 1973 diff = adjustStyleDifference(diff); |
1973 | 1974 |
1974 styleWillChange(diff, *style); | 1975 styleWillChange(diff, *style); |
1975 | 1976 |
1976 RefPtr<RenderStyle> oldStyle = m_style.release(); | 1977 RefPtr<RenderStyle> oldStyle = m_style.release(); |
1977 setStyleInternal(style); | 1978 setStyleInternal(style); |
1978 | 1979 |
1979 updateFillImages(oldStyle ? oldStyle->backgroundLayers() : 0, m_style ? m_st
yle->backgroundLayers() : 0); | 1980 updateFillImages(oldStyle ? oldStyle->backgroundLayers() : 0, m_style ? m_st
yle->backgroundLayers() : 0); |
1980 updateFillImages(oldStyle ? oldStyle->maskLayers() : 0, m_style ? m_style->m
askLayers() : 0); | 1981 updateFillImages(oldStyle ? oldStyle->maskLayers() : 0, m_style ? m_style->m
askLayers() : 0); |
1981 | 1982 |
1982 updateImage(oldStyle ? oldStyle->borderImage().image() : 0, m_style ? m_styl
e->borderImage().image() : 0); | 1983 updateImage(oldStyle ? oldStyle->borderImage().image() : 0, m_style ? m_styl
e->borderImage().image() : 0); |
1983 updateImage(oldStyle ? oldStyle->maskBoxImage().image() : 0, m_style ? m_sty
le->maskBoxImage().image() : 0); | 1984 updateImage(oldStyle ? oldStyle->maskBoxImage().image() : 0, m_style ? m_sty
le->maskBoxImage().image() : 0); |
1984 | 1985 |
1985 updateShapeImage(oldStyle ? oldStyle->shapeOutside() : 0, m_style ? m_style-
>shapeOutside() : 0); | 1986 updateShapeImage(oldStyle ? oldStyle->shapeOutside() : 0, m_style ? m_style-
>shapeOutside() : 0); |
1986 | 1987 |
1987 bool doesNotNeedLayout = !m_parent || isText(); | 1988 bool doesNotNeedLayout = !m_parent || isText(); |
1988 | 1989 |
1989 styleDidChange(diff, oldStyle.get()); | 1990 styleDidChange(diff, oldStyle.get()); |
1990 | 1991 |
1991 // FIXME: |this| might be destroyed here. This can currently happen for a Re
nderTextFragment when | 1992 // FIXME: |this| might be destroyed here. This can currently happen for a Re
nderTextFragment when |
1992 // its first-letter block gets an update in RenderTextFragment::styleDidChan
ge. For RenderTextFragment(s), | 1993 // its first-letter block gets an update in RenderTextFragment::styleDidChan
ge. For RenderTextFragment(s), |
1993 // we will safely bail out with the doesNotNeedLayout flag. We might want to
broaden this condition | 1994 // we will safely bail out with the doesNotNeedLayout flag. We might want to
broaden this condition |
1994 // in the future as we move renderer changes out of layout and into style ch
anges. | 1995 // in the future as we move renderer changes out of layout and into style ch
anges. |
1995 if (doesNotNeedLayout) | 1996 if (doesNotNeedLayout) |
1996 return; | 1997 return; |
1997 | 1998 |
1998 // Now that the layer (if any) has been updated, we need to adjust the diff
again, | 1999 // Now that the layer (if any) has been updated, we need to adjust the diff
again, |
1999 // check whether we should layout now, and decide if we need to repaint. | 2000 // check whether we should layout now, and decide if we need to repaint. |
2000 StyleDifference updatedDiff = adjustStyleDifference(diff, contextSensitivePr
operties); | 2001 StyleDifference updatedDiff = adjustStyleDifference(diff); |
2001 | 2002 |
2002 if (diff <= StyleDifferenceLayoutPositionedMovementOnly) { | 2003 if (!diff.needsFullLayout()) { |
2003 if (updatedDiff == StyleDifferenceLayout) | 2004 if (updatedDiff.needsFullLayout()) |
2004 setNeedsLayoutAndPrefWidthsRecalc(); | 2005 setNeedsLayoutAndPrefWidthsRecalc(); |
2005 else if (updatedDiff == StyleDifferenceLayoutPositionedMovementOnly) | 2006 else if (updatedDiff.needsPositionedMovementLayoutOnly()) |
2006 setNeedsPositionedMovementLayout(); | 2007 setNeedsPositionedMovementLayout(); |
2007 } | 2008 } |
2008 | 2009 |
2009 if (contextSensitiveProperties & ContextSensitivePropertyTransform && !needs
Layout()) { | 2010 if (diff.transformChanged() && !needsLayout()) { |
2010 if (RenderBlock* container = containingBlock()) | 2011 if (RenderBlock* container = containingBlock()) |
2011 container->setNeedsOverflowRecalcAfterStyleChange(); | 2012 container->setNeedsOverflowRecalcAfterStyleChange(); |
2012 if (isBox()) | 2013 if (isBox()) |
2013 toRenderBox(this)->updateLayerTransform(); | 2014 toRenderBox(this)->updateLayerTransform(); |
2014 } | 2015 } |
2015 | 2016 |
2016 if (updatedDiff == StyleDifferenceRepaint || updatedDiff == StyleDifferenceR
epaintLayer) { | 2017 if (updatedDiff.needsRepaint()) { |
2017 // Do a repaint with the new style now, e.g., for example if we go from | 2018 // Do a repaint with the new style now, e.g., for example if we go from |
2018 // not having an outline to having an outline. | 2019 // not having an outline to having an outline. |
2019 repaint(); | 2020 repaint(); |
2020 } | 2021 } |
2021 } | 2022 } |
2022 | 2023 |
2023 static inline bool rendererHasBackground(const RenderObject* renderer) | 2024 static inline bool rendererHasBackground(const RenderObject* renderer) |
2024 { | 2025 { |
2025 return renderer && renderer->hasBackground(); | 2026 return renderer && renderer->hasBackground(); |
2026 } | 2027 } |
(...skipping 13 matching lines...) Loading... |
2040 } | 2041 } |
2041 | 2042 |
2042 // Keep layer hierarchy visibility bits up to date if visibility changes
. | 2043 // Keep layer hierarchy visibility bits up to date if visibility changes
. |
2043 if (m_style->visibility() != newStyle.visibility()) { | 2044 if (m_style->visibility() != newStyle.visibility()) { |
2044 // We might not have an enclosing layer yet because we might not be
in the tree. | 2045 // We might not have an enclosing layer yet because we might not be
in the tree. |
2045 if (RenderLayer* layer = enclosingLayer()) { | 2046 if (RenderLayer* layer = enclosingLayer()) { |
2046 if (newStyle.visibility() == VISIBLE) { | 2047 if (newStyle.visibility() == VISIBLE) { |
2047 layer->setHasVisibleContent(); | 2048 layer->setHasVisibleContent(); |
2048 } else if (layer->hasVisibleContent() && (this == layer->rendere
r() || layer->renderer()->style()->visibility() != VISIBLE)) { | 2049 } else if (layer->hasVisibleContent() && (this == layer->rendere
r() || layer->renderer()->style()->visibility() != VISIBLE)) { |
2049 layer->dirtyVisibleContentStatus(); | 2050 layer->dirtyVisibleContentStatus(); |
2050 if (diff > StyleDifferenceRepaintLayer) | 2051 if (diff.needsLayout()) |
2051 repaint(); | 2052 repaint(); |
2052 } | 2053 } |
2053 } | 2054 } |
2054 } | 2055 } |
2055 | 2056 |
2056 if (m_parent && diff == StyleDifferenceRepaint) | 2057 if (m_parent && diff.needsRepaintObjectOnly()) |
2057 repaint(); | 2058 repaint(); |
2058 if (isFloating() && (m_style->floating() != newStyle.floating())) | 2059 if (isFloating() && (m_style->floating() != newStyle.floating())) |
2059 // For changes in float styles, we need to conceivably remove oursel
ves | 2060 // For changes in float styles, we need to conceivably remove oursel
ves |
2060 // from the floating objects list. | 2061 // from the floating objects list. |
2061 toRenderBox(this)->removeFloatingOrPositionedChildFromBlockLists(); | 2062 toRenderBox(this)->removeFloatingOrPositionedChildFromBlockLists(); |
2062 else if (isOutOfFlowPositioned() && (m_style->position() != newStyle.pos
ition())) | 2063 else if (isOutOfFlowPositioned() && (m_style->position() != newStyle.pos
ition())) |
2063 // For changes in positioning styles, we need to conceivably remove
ourselves | 2064 // For changes in positioning styles, we need to conceivably remove
ourselves |
2064 // from the positioned objects list. | 2065 // from the positioned objects list. |
2065 toRenderBox(this)->removeFloatingOrPositionedChildFromBlockLists(); | 2066 toRenderBox(this)->removeFloatingOrPositionedChildFromBlockLists(); |
2066 | 2067 |
2067 s_affectsParentBlock = isFloatingOrOutOfFlowPositioned() | 2068 s_affectsParentBlock = isFloatingOrOutOfFlowPositioned() |
2068 && (!newStyle.isFloating() && !newStyle.hasOutOfFlowPosition()) | 2069 && (!newStyle.isFloating() && !newStyle.hasOutOfFlowPosition()) |
2069 && parent() && (parent()->isRenderBlockFlow() || parent()->isRenderI
nline()); | 2070 && parent() && (parent()->isRenderBlockFlow() || parent()->isRenderI
nline()); |
2070 | 2071 |
2071 // Clearing these bits is required to avoid leaving stale renderers. | 2072 // Clearing these bits is required to avoid leaving stale renderers. |
2072 // FIXME: We shouldn't need that hack if our logic was totally correct. | 2073 // FIXME: We shouldn't need that hack if our logic was totally correct. |
2073 if (diff == StyleDifferenceLayout || diff == StyleDifferenceLayoutPositi
onedMovementOnly) { | 2074 if (diff.needsFullLayout() || diff.needsPositionedMovementLayoutOnly())
{ |
2074 setFloating(false); | 2075 setFloating(false); |
2075 clearPositionedState(); | 2076 clearPositionedState(); |
2076 } | 2077 } |
2077 } else | 2078 } else { |
2078 s_affectsParentBlock = false; | 2079 s_affectsParentBlock = false; |
| 2080 } |
2079 | 2081 |
2080 if (view()->frameView()) { | 2082 if (view()->frameView()) { |
2081 bool shouldBlitOnFixedBackgroundImage = false; | 2083 bool shouldBlitOnFixedBackgroundImage = false; |
2082 #if ENABLE(FAST_MOBILE_SCROLLING) | 2084 #if ENABLE(FAST_MOBILE_SCROLLING) |
2083 // On low-powered/mobile devices, preventing blitting on a scroll can ca
use noticeable delays | 2085 // On low-powered/mobile devices, preventing blitting on a scroll can ca
use noticeable delays |
2084 // when scrolling a page with a fixed background image. As an optimizati
on, assuming there are | 2086 // when scrolling a page with a fixed background image. As an optimizati
on, assuming there are |
2085 // no fixed positoned elements on the page, we can acclerate scrolling (
via blitting) if we | 2087 // no fixed positoned elements on the page, we can acclerate scrolling (
via blitting) if we |
2086 // ignore the CSS property "background-attachment: fixed". | 2088 // ignore the CSS property "background-attachment: fixed". |
2087 shouldBlitOnFixedBackgroundImage = true; | 2089 shouldBlitOnFixedBackgroundImage = true; |
2088 #endif | 2090 #endif |
(...skipping 47 matching lines...) Loading... |
2136 } | 2138 } |
2137 | 2139 |
2138 void RenderObject::styleDidChange(StyleDifference diff, const RenderStyle* oldSt
yle) | 2140 void RenderObject::styleDidChange(StyleDifference diff, const RenderStyle* oldSt
yle) |
2139 { | 2141 { |
2140 if (s_affectsParentBlock) | 2142 if (s_affectsParentBlock) |
2141 handleDynamicFloatPositionChange(); | 2143 handleDynamicFloatPositionChange(); |
2142 | 2144 |
2143 if (!m_parent) | 2145 if (!m_parent) |
2144 return; | 2146 return; |
2145 | 2147 |
2146 if (diff == StyleDifferenceLayout) { | 2148 if (diff.needsFullLayout()) { |
2147 RenderCounter::rendererStyleChanged(*this, oldStyle, m_style.get()); | 2149 RenderCounter::rendererStyleChanged(*this, oldStyle, m_style.get()); |
2148 | 2150 |
2149 // If the object already needs layout, then setNeedsLayout won't do | 2151 // If the object already needs layout, then setNeedsLayout won't do |
2150 // any work. But if the containing block has changed, then we may need | 2152 // any work. But if the containing block has changed, then we may need |
2151 // to mark the new containing blocks for layout. The change that can | 2153 // to mark the new containing blocks for layout. The change that can |
2152 // directly affect the containing block of this object is a change to | 2154 // directly affect the containing block of this object is a change to |
2153 // the position style. | 2155 // the position style. |
2154 if (needsLayout() && oldStyle->position() != m_style->position()) | 2156 if (needsLayout() && oldStyle->position() != m_style->position()) |
2155 markContainingBlocksForLayout(); | 2157 markContainingBlocksForLayout(); |
2156 | 2158 |
2157 // Ditto. | 2159 // Ditto. |
2158 if (needsOverflowRecalcAfterStyleChange() && oldStyle->position() != m_s
tyle->position()) | 2160 if (needsOverflowRecalcAfterStyleChange() && oldStyle->position() != m_s
tyle->position()) |
2159 markContainingBlocksForOverflowRecalc(); | 2161 markContainingBlocksForOverflowRecalc(); |
2160 | 2162 |
2161 if (diff == StyleDifferenceLayout) | 2163 setNeedsLayoutAndPrefWidthsRecalc(); |
2162 setNeedsLayoutAndPrefWidthsRecalc(); | 2164 } else if (diff.needsPositionedMovementLayoutOnly()) { |
2163 } else if (diff == StyleDifferenceLayoutPositionedMovementOnly) | |
2164 setNeedsPositionedMovementLayout(); | 2165 setNeedsPositionedMovementLayout(); |
| 2166 } |
2165 | 2167 |
2166 // Don't check for repaint here; we need to wait until the layer has been | 2168 // Don't check for repaint here; we need to wait until the layer has been |
2167 // updated by subclasses before we know if we have to repaint (in setStyle()
). | 2169 // updated by subclasses before we know if we have to repaint (in setStyle()
). |
2168 | 2170 |
2169 if (oldStyle && !areCursorsEqual(oldStyle, style())) { | 2171 if (oldStyle && !areCursorsEqual(oldStyle, style())) { |
2170 if (LocalFrame* frame = this->frame()) | 2172 if (LocalFrame* frame = this->frame()) |
2171 frame->eventHandler().scheduleCursorUpdate(); | 2173 frame->eventHandler().scheduleCursorUpdate(); |
2172 } | 2174 } |
2173 } | 2175 } |
2174 | 2176 |
(...skipping 1221 matching lines...) Loading... |
3396 { | 3398 { |
3397 if (object1) { | 3399 if (object1) { |
3398 const WebCore::RenderObject* root = object1; | 3400 const WebCore::RenderObject* root = object1; |
3399 while (root->parent()) | 3401 while (root->parent()) |
3400 root = root->parent(); | 3402 root = root->parent(); |
3401 root->showRenderTreeAndMark(object1, "*", object2, "-", 0); | 3403 root->showRenderTreeAndMark(object1, "*", object2, "-", 0); |
3402 } | 3404 } |
3403 } | 3405 } |
3404 | 3406 |
3405 #endif | 3407 #endif |
OLD | NEW |