bug 29595 (and others)

fixes layout of pages where a single line is impacted by 2 or more floaters
r=troy


git-svn-id: svn://10.0.0.236/trunk@63783 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
buster%netscape.com
2000-03-22 23:19:10 +00:00
parent c285c2a054
commit bf63049426
26 changed files with 972 additions and 198 deletions

View File

@@ -32,10 +32,16 @@
#include "nsAbsoluteContainingBlock.h"
#include "nsLayoutAtoms.h"
#undef NOISY_FINAL_SIZE
#ifdef DEBUG
#undef NOISY_PUSHING
#endif
nsIID nsInlineFrame::kInlineFrameCID = NS_INLINE_FRAME_CID;
//////////////////////////////////////////////////////////////////////
// Basic nsInlineFrame methods
@@ -426,6 +432,9 @@ nsInlineFrame::ReflowFrames(nsIPresContext* aPresContext,
PRBool reflowingFirstLetter = lineLayout->GetFirstLetterStyleOK();
PRBool isComplete;
frame = PullOneFrame(aPresContext, irs, &isComplete);
#ifdef NOISY_PUSHING
printf("%p pulled up %p\n", this, frame);
#endif
if (nsnull == frame) {
if (!isComplete) {
aStatus = NS_FRAME_NOT_COMPLETE;
@@ -668,6 +677,10 @@ nsInlineFrame::PushFrames(nsIPresContext* aPresContext,
NS_PRECONDITION(prevNextSibling == aFromChild, "bad prev sibling");
#endif
#ifdef NOISY_PUSHING
printf("%p pushing aFromChild %p, disconnecting from prev sib %p\n",
this, aFromChild, aPrevSibling);
#endif
// Disconnect aFromChild from its previous sibling
aPrevSibling->SetNextSibling(nsnull);