Trim whitespace that comes right before a <br> when trimming whitespace. Bug

132561 relanding, r+sr=dbaron
This commit is contained in:
bzbarsky%mit.edu 2006-04-21 01:31:35 +00:00
Родитель 344c13ee1c
Коммит 5c3e8ea185
2 изменённых файлов: 9 добавлений и 5 удалений

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

@ -1006,7 +1006,7 @@ nsLineLayout::ReflowFrame(nsIFrame* aFrame,
// the float.
if (frameType) {
if (nsLayoutAtoms::placeholderFrame == frameType) {
pfd->SetFlag(PFD_ISPLACEHOLDERFRAME, PR_TRUE);
pfd->SetFlag(PFD_SKIPWHENTRIMMINGWHITESPACE, PR_TRUE);
nsIFrame* outOfFlowFrame = nsLayoutUtils::GetFloatFromPlaceholder(aFrame);
if (outOfFlowFrame) {
nsPlaceholderFrame* placeholder = NS_STATIC_CAST(nsPlaceholderFrame*, aFrame);
@ -1062,6 +1062,9 @@ nsLineLayout::ReflowFrame(nsIFrame* aFrame,
else if (nsLayoutAtoms::letterFrame==frameType) {
pfd->SetFlag(PFD_ISLETTERFRAME, PR_TRUE);
}
else if (nsLayoutAtoms::brFrame == frameType) {
pfd->SetFlag(PFD_SKIPWHENTRIMMINGWHITESPACE, PR_TRUE);
}
}
mSpaceManager->Translate(-tx, -ty);
@ -2617,7 +2620,7 @@ nsLineLayout::TrimTrailingWhiteSpaceIn(PerSpanData* psd,
}
}
else if (!pfd->GetFlag(PFD_ISTEXTFRAME) &&
!pfd->GetFlag(PFD_ISPLACEHOLDERFRAME)) {
!pfd->GetFlag(PFD_SKIPWHENTRIMMINGWHITESPACE)) {
// If we hit a frame on the end that's not text and not a placeholder,
// then there is no trailing whitespace to trim. Stop the search.
*aDeltaWidth = 0;

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

@ -397,14 +397,15 @@ protected:
#define PFD_ISLETTERFRAME 0x00000010
#define PFD_ISSTICKY 0x00000020
#define PFD_ISBULLET 0x00000040
#define PFD_ISPLACEHOLDERFRAME 0x00000080
#define PFD_LASTFLAG PFD_ISPLACEHOLDERFRAME
#define PFD_SKIPWHENTRIMMINGWHITESPACE 0x00000080
#define PFD_LASTFLAG PFD_SKIPWHENTRIMMINGWHITESPACE
PRPackedBool mFlags;
PRUint8 mFlags;
void SetFlag(PRUint32 aFlag, PRBool aValue)
{
NS_ASSERTION(aFlag<=PFD_LASTFLAG, "bad flag");
NS_ASSERTION(aFlag<=PR_UINT8_MAX, "bad flag");
NS_ASSERTION(aValue==PR_FALSE || aValue==PR_TRUE, "bad value");
if (aValue) { // set flag
mFlags |= aFlag;