From 439ee5ba38880dc5b0f1f2d6e86b82f3c2d01435 Mon Sep 17 00:00:00 2001 From: "kmcclusk%netscape.com" Date: Thu, 8 Jun 2000 23:19:38 +0000 Subject: [PATCH] Changed nsBulletFrame to set the dirty flag on the it's parent's first frame instead of itself when an Image is updated b=36703 r=buster@netscape.com tested on WINNT, Linux git-svn-id: svn://10.0.0.236/trunk@71818 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/layout/generic/nsBulletFrame.cpp | 21 +++++++++++++------ .../layout/html/base/src/nsBulletFrame.cpp | 21 +++++++++++++------ 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/mozilla/layout/generic/nsBulletFrame.cpp b/mozilla/layout/generic/nsBulletFrame.cpp index 56d2aff8615..e18e07511fb 100644 --- a/mozilla/layout/generic/nsBulletFrame.cpp +++ b/mozilla/layout/generic/nsBulletFrame.cpp @@ -929,12 +929,21 @@ nsBulletFrame::UpdateBulletCB(nsIPresContext* aPresContext, nsIFrame* parent; aFrame->GetParent(&parent); if (parent) { - // Mark the bullet frame dirty and ask its parent to reflow it. - nsFrameState state; - aFrame->GetFrameState(&state); - state |= NS_FRAME_IS_DIRTY; - aFrame->SetFrameState(state); - parent->ReflowDirtyChild(shell, aFrame); + // Reflow the first child of the parent not the bullet frame. + // The bullet frame is not in a line list so marking it dirty + // has no effect. The reflowing of the bullet frame is done + // indirectly. + nsIFrame* frame = nsnull; + parent->FirstChild(aPresContext, nsnull, &frame); + if (nsnull != frame) { + nsFrameState state; + frame->GetFrameState(&state); + state |= NS_FRAME_IS_DIRTY; + frame->SetFrameState(state); + parent->ReflowDirtyChild(shell, frame); + } else { + NS_ASSERTION(0, "No frame to mark dirty for bullet frame."); + } } else { NS_ASSERTION(0, "No parent to pass the reflow request up to."); diff --git a/mozilla/layout/html/base/src/nsBulletFrame.cpp b/mozilla/layout/html/base/src/nsBulletFrame.cpp index 56d2aff8615..e18e07511fb 100644 --- a/mozilla/layout/html/base/src/nsBulletFrame.cpp +++ b/mozilla/layout/html/base/src/nsBulletFrame.cpp @@ -929,12 +929,21 @@ nsBulletFrame::UpdateBulletCB(nsIPresContext* aPresContext, nsIFrame* parent; aFrame->GetParent(&parent); if (parent) { - // Mark the bullet frame dirty and ask its parent to reflow it. - nsFrameState state; - aFrame->GetFrameState(&state); - state |= NS_FRAME_IS_DIRTY; - aFrame->SetFrameState(state); - parent->ReflowDirtyChild(shell, aFrame); + // Reflow the first child of the parent not the bullet frame. + // The bullet frame is not in a line list so marking it dirty + // has no effect. The reflowing of the bullet frame is done + // indirectly. + nsIFrame* frame = nsnull; + parent->FirstChild(aPresContext, nsnull, &frame); + if (nsnull != frame) { + nsFrameState state; + frame->GetFrameState(&state); + state |= NS_FRAME_IS_DIRTY; + frame->SetFrameState(state); + parent->ReflowDirtyChild(shell, frame); + } else { + NS_ASSERTION(0, "No frame to mark dirty for bullet frame."); + } } else { NS_ASSERTION(0, "No parent to pass the reflow request up to.");