Handle returning nulls from CheckLineOrder correctly. bug=345616 r=smotagu sr=roc

This commit is contained in:
uriber%gmail.com 2006-08-04 05:40:57 +00:00
Родитель dff86bc0d5
Коммит 8ceacf042e
3 изменённых файлов: 14 добавлений и 6 удалений

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

@ -4491,14 +4491,18 @@ nsFrame::GetFrameFromDirection(nsPresContext* aPresContext, nsPeekOffsetStruct *
PRBool isReordered;
result = it->CheckLineOrder(thisLine, &isReordered, &firstFrame, &lastFrame);
nsIFrame** framePtr = aPos->mDirection == eDirPrevious ? &firstFrame : &lastFrame;
nsBidiLevel embeddingLevel = nsBidiPresUtils::GetFrameEmbeddingLevel(*framePtr);
if (((embeddingLevel & 1) && lineIsRTL || !(embeddingLevel & 1) && !lineIsRTL) ==
(aPos->mDirection == eDirPrevious)) {
GetFirstLeaf(aPresContext, framePtr);
if (*framePtr) {
nsBidiLevel embeddingLevel = nsBidiPresUtils::GetFrameEmbeddingLevel(*framePtr);
if (((embeddingLevel & 1) && lineIsRTL || !(embeddingLevel & 1) && !lineIsRTL) ==
(aPos->mDirection == eDirPrevious)) {
GetFirstLeaf(aPresContext, framePtr);
} else {
GetLastLeaf(aPresContext, framePtr);
}
atLineEdge = *framePtr == traversedFrame;
} else {
GetLastLeaf(aPresContext, framePtr);
atLineEdge = PR_TRUE;
}
atLineEdge = *framePtr == traversedFrame;
} else
#endif
{

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

@ -741,6 +741,8 @@ nsLineIterator::CheckLineOrder(PRInt32 aLine,
if (!line->mFirstChild) { // empty line
*aIsReordered = PR_FALSE;
*aFirstVisual = nsnull;
*aLastVisual = nsnull;
return NS_OK;
}

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

@ -1946,6 +1946,8 @@ nsTableRowGroupFrame::CheckLineOrder(PRInt32 aLine,
nsIFrame **aLastVisual)
{
*aIsReordered = PR_FALSE;
*aFirstVisual = nsnull;
*aLastVisual = nsnull;
return NS_OK;
}
#endif // IBMBIDI