Back out the patch for bug 399159 because it's suspected of having caused the Tp regression

This commit is contained in:
gavin%gavinsharp.com 2007-10-17 17:03:09 +00:00
Родитель 5793ff6c5c
Коммит e7c20bae80
1 изменённых файлов: 19 добавлений и 34 удалений

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

@ -1971,8 +1971,7 @@ public:
* Count the number of justifiable characters in the given DOM range
*/
PRUint32 ComputeJustifiableCharacters(PRInt32 aOffset, PRInt32 aLength);
void FindJustificationRange(gfxSkipCharsIterator* aStart,
gfxSkipCharsIterator* aEnd);
void FindEndOfJustificationRange(gfxSkipCharsIterator* aIter);
const nsStyleText* GetStyleText() { return mTextStyle; }
nsTextFrame* GetFrame() { return mFrame; }
@ -2144,8 +2143,8 @@ PropertyProvider::GetSpacingInternal(PRUint32 aStart, PRUint32 aLength,
// Scan non-skipped characters and adjust justifiable chars, adding
// justification space on either side of the cluster
PRBool isCJK = IsChineseJapaneseLangGroup(mFrame);
gfxSkipCharsIterator justificationStart(mStart), justificationEnd(mStart);
FindJustificationRange(&justificationStart, &justificationEnd);
gfxSkipCharsIterator justificationEnd(mStart);
FindEndOfJustificationRange(&justificationEnd);
nsSkipCharsRunIterator
run(start, nsSkipCharsRunIterator::LENGTH_UNSKIPPED_ONLY, aLength);
@ -2161,8 +2160,7 @@ PropertyProvider::GetSpacingInternal(PRUint32 aStart, PRUint32 aLength,
FindClusterEnd(mTextRun, run.GetOriginalOffset() + run.GetRunLength(), &iter);
PRUint32 clusterLastChar = iter.GetSkippedOffset();
// Only apply justification to characters before justificationEnd
if (clusterFirstChar >= justificationStart.GetSkippedOffset() &&
clusterLastChar < justificationEnd.GetSkippedOffset()) {
if (clusterLastChar < justificationEnd.GetSkippedOffset()) {
aSpacing[clusterFirstChar - aStart].mBefore += halfJustificationSpace;
aSpacing[clusterLastChar - aStart].mAfter += halfJustificationSpace;
}
@ -2333,31 +2331,18 @@ static PRUint32 GetSkippedDistance(const gfxSkipCharsIterator& aStart,
}
void
PropertyProvider::FindJustificationRange(gfxSkipCharsIterator* aStart,
gfxSkipCharsIterator* aEnd)
PropertyProvider::FindEndOfJustificationRange(gfxSkipCharsIterator* aIter)
{
NS_ASSERTION(aStart && aEnd, "aStart or/and aEnd is null");
aStart->SetOriginalOffset(mStart.GetOriginalOffset());
aEnd->SetOriginalOffset(mStart.GetOriginalOffset() + mLength);
// Ignore first cluster at start of line for justification purposes
if (mFrame->GetStateBits() & TEXT_START_OF_LINE) {
while (aStart->GetOriginalOffset() < aEnd->GetOriginalOffset()) {
aStart->AdvanceOriginal(1);
if (!aStart->IsOriginalCharSkipped() &&
mTextRun->IsClusterStart(aStart->GetSkippedOffset()))
break;
}
}
aIter->SetOriginalOffset(mStart.GetOriginalOffset() + mLength);
// Ignore trailing cluster at end of line for justification purposes
if (mFrame->GetStateBits() & TEXT_END_OF_LINE) {
while (aEnd->GetOriginalOffset() > aStart->GetOriginalOffset()) {
aEnd->AdvanceOriginal(-1);
if (!aEnd->IsOriginalCharSkipped() &&
mTextRun->IsClusterStart(aEnd->GetSkippedOffset()))
break;
}
if (!(mFrame->GetStateBits() & TEXT_END_OF_LINE))
return;
while (aIter->GetOriginalOffset() > mStart.GetOriginalOffset()) {
aIter->AdvanceOriginal(-1);
if (!aIter->IsOriginalCharSkipped() &&
mTextRun->IsClusterStart(aIter->GetSkippedOffset()))
break;
}
}
@ -2368,14 +2353,14 @@ PropertyProvider::SetupJustificationSpacing()
mTextStyle->WhiteSpaceIsSignificant())
return;
gfxSkipCharsIterator start(mStart), end(mStart);
gfxSkipCharsIterator end(mStart);
end.AdvanceOriginal(mLength);
gfxSkipCharsIterator realEnd(end);
FindJustificationRange(&start, &end);
FindEndOfJustificationRange(&end);
PRInt32 justifiableCharacters =
ComputeJustifiableCharacters(start.GetOriginalOffset(),
end.GetOriginalOffset() - start.GetOriginalOffset());
ComputeJustifiableCharacters(mStart.GetOriginalOffset(),
end.GetOriginalOffset() - mStart.GetOriginalOffset());
if (justifiableCharacters == 0) {
// Nothing to do, nothing is justifiable and we shouldn't have any
// justification space assigned
@ -5481,8 +5466,8 @@ nsTextFrame::TrimTrailingWhiteSpace(nsPresContext* aPresContext,
PropertyProvider provider(mTextRun, textStyle, frag, this, start, contentLength,
nsnull, 0);
PRBool isCJK = IsChineseJapaneseLangGroup(this);
gfxSkipCharsIterator justificationStart(iter), justificationEnd(iter);
provider.FindJustificationRange(&justificationStart, &justificationEnd);
gfxSkipCharsIterator justificationEnd(iter);
provider.FindEndOfJustificationRange(&justificationEnd);
PRInt32 i;
for (i = justificationEnd.GetOriginalOffset(); i < trimmed.GetEnd(); ++i) {