diff --git a/layout/generic/nsBlockFrame.cpp b/layout/generic/nsBlockFrame.cpp index 0e1aabbff07d..f9c2f4da2318 100644 --- a/layout/generic/nsBlockFrame.cpp +++ b/layout/generic/nsBlockFrame.cpp @@ -4118,7 +4118,17 @@ nsBlockFrame::PostPlaceLine(nsBlockReflowState& aState, } // Update xmost - nscoord xmost = aLine->mBounds.XMost(); + nscoord xmost; + if(aLine->IsBlock() && aState.GetFlag(BRS_NOWRAP)) { + // since the nowrap blocks tend to be as wide as their widest element or + // sequel of elements that can't be wrapped anymore (see patch for bug 80817) + // let them set xmost to be the width of the widest element of the reflowed line + // (patches bug 93363 and other NOWRAP dups) + xmost = aMaxElementSize.width; + } else { + xmost = aLine->mBounds.XMost(); + } + #ifdef DEBUG if (CRAZY_WIDTH(xmost)) { ListTag(stdout); diff --git a/layout/html/base/src/nsBlockFrame.cpp b/layout/html/base/src/nsBlockFrame.cpp index 0e1aabbff07d..f9c2f4da2318 100644 --- a/layout/html/base/src/nsBlockFrame.cpp +++ b/layout/html/base/src/nsBlockFrame.cpp @@ -4118,7 +4118,17 @@ nsBlockFrame::PostPlaceLine(nsBlockReflowState& aState, } // Update xmost - nscoord xmost = aLine->mBounds.XMost(); + nscoord xmost; + if(aLine->IsBlock() && aState.GetFlag(BRS_NOWRAP)) { + // since the nowrap blocks tend to be as wide as their widest element or + // sequel of elements that can't be wrapped anymore (see patch for bug 80817) + // let them set xmost to be the width of the widest element of the reflowed line + // (patches bug 93363 and other NOWRAP dups) + xmost = aMaxElementSize.width; + } else { + xmost = aLine->mBounds.XMost(); + } + #ifdef DEBUG if (CRAZY_WIDTH(xmost)) { ListTag(stdout);