Bug 445685 - Improve performance with large numbers of text fragments. r=jwatt,sr=roc

This commit is contained in:
Robert Longson 2008-07-30 20:28:12 +01:00
Родитель 14e1a51238
Коммит c9d6c50b04
3 изменённых файлов: 16 добавлений и 4 удалений

Просмотреть файл

@ -229,8 +229,11 @@ NS_IMETHODIMP
nsSVGGlyphFrame::DidSetStyleContext() nsSVGGlyphFrame::DidSetStyleContext()
{ {
nsSVGGlyphFrameBase::DidSetStyleContext(); nsSVGGlyphFrameBase::DidSetStyleContext();
ClearTextRun();
NotifyGlyphMetricsChange(); if (!(GetStateBits() & NS_FRAME_FIRST_REFLOW)) {
ClearTextRun();
NotifyGlyphMetricsChange();
}
return NS_OK; return NS_OK;
} }
@ -459,8 +462,6 @@ nsSVGGlyphFrame::InitialUpdate()
NS_ASSERTION(!(mState & NS_FRAME_IN_REFLOW), NS_ASSERTION(!(mState & NS_FRAME_IN_REFLOW),
"We don't actually participate in reflow"); "We don't actually participate in reflow");
NotifyGlyphMetricsChange();
// Do unset the various reflow bits, though. // Do unset the various reflow bits, though.
mState &= ~(NS_FRAME_FIRST_REFLOW | NS_FRAME_IS_DIRTY | mState &= ~(NS_FRAME_FIRST_REFLOW | NS_FRAME_IS_DIRTY |
NS_FRAME_HAS_DIRTY_CHILDREN); NS_FRAME_HAS_DIRTY_CHILDREN);

Просмотреть файл

@ -266,6 +266,16 @@ nsSVGTextFrame::UpdateCoveredRegion()
return nsSVGTextFrameBase::UpdateCoveredRegion(); return nsSVGTextFrameBase::UpdateCoveredRegion();
} }
NS_IMETHODIMP
nsSVGTextFrame::InitialUpdate()
{
nsresult rv = nsSVGTextFrameBase::InitialUpdate();
UpdateGlyphPositioning(PR_FALSE);
return rv;
}
NS_IMETHODIMP NS_IMETHODIMP
nsSVGTextFrame::GetBBox(nsIDOMSVGRect **_retval) nsSVGTextFrame::GetBBox(nsIDOMSVGRect **_retval)
{ {

Просмотреть файл

@ -87,6 +87,7 @@ public:
NS_IMETHOD PaintSVG(nsSVGRenderState* aContext, nsRect *aDirtyRect); NS_IMETHOD PaintSVG(nsSVGRenderState* aContext, nsRect *aDirtyRect);
NS_IMETHOD GetFrameForPointSVG(float x, float y, nsIFrame** hit); NS_IMETHOD GetFrameForPointSVG(float x, float y, nsIFrame** hit);
NS_IMETHOD UpdateCoveredRegion(); NS_IMETHOD UpdateCoveredRegion();
NS_IMETHOD InitialUpdate();
NS_IMETHOD GetBBox(nsIDOMSVGRect **_retval); NS_IMETHOD GetBBox(nsIDOMSVGRect **_retval);
// nsSVGContainerFrame methods: // nsSVGContainerFrame methods: