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

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

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

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

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