Flush out content updates before messing with the frame tree. Bug 313516, r+sr=roc
git-svn-id: svn://10.0.0.236/trunk@183015 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
parent
4cf2631a92
commit
cfd25f13dd
@ -989,9 +989,6 @@ nsObjectLoadingContent::NotifyStateChanged(ObjectType aOldType,
|
|||||||
// If our state changed, then we already recreated frames
|
// If our state changed, then we already recreated frames
|
||||||
// Otherwise, need to do that here
|
// Otherwise, need to do that here
|
||||||
|
|
||||||
// Need the following line before calling RecreateFramesFor
|
|
||||||
mozAutoDocUpdate upd(doc, UPDATE_CONTENT_STATE, PR_TRUE);
|
|
||||||
|
|
||||||
PRUint32 numShells = doc->GetNumberOfShells();
|
PRUint32 numShells = doc->GetNumberOfShells();
|
||||||
for (PRUint32 i = 0; i < numShells; ++i) {
|
for (PRUint32 i = 0; i < numShells; ++i) {
|
||||||
nsIPresShell* shell = doc->GetShellAt(i);
|
nsIPresShell* shell = doc->GetShellAt(i);
|
||||||
|
|||||||
@ -3738,11 +3738,16 @@ PresShell::RecreateFramesFor(nsIContent* aContent)
|
|||||||
// Don't call RecreateFramesForContent since that is not exported and we want
|
// Don't call RecreateFramesForContent since that is not exported and we want
|
||||||
// to keep the number of entrypoints down.
|
// to keep the number of entrypoints down.
|
||||||
|
|
||||||
|
NS_ASSERTION(mViewManager, "Should have view manager");
|
||||||
|
mViewManager->BeginUpdateViewBatch();
|
||||||
|
|
||||||
|
// Have to make sure that the content notifications are flushed before we
|
||||||
|
// start messing with the frame model; otherwise we can get content doubling.
|
||||||
|
mDocument->FlushPendingNotifications(Flush_ContentAndNotify);
|
||||||
|
|
||||||
nsStyleChangeList changeList;
|
nsStyleChangeList changeList;
|
||||||
changeList.AppendChange(nsnull, aContent, nsChangeHint_ReconstructFrame);
|
changeList.AppendChange(nsnull, aContent, nsChangeHint_ReconstructFrame);
|
||||||
|
|
||||||
NS_ASSERTION(mViewManager, "Should have view manager");
|
|
||||||
mViewManager->BeginUpdateViewBatch();
|
|
||||||
nsresult rv = mFrameConstructor->ProcessRestyledFrames(changeList);
|
nsresult rv = mFrameConstructor->ProcessRestyledFrames(changeList);
|
||||||
mViewManager->EndUpdateViewBatch(NS_VMREFRESH_NO_SYNC);
|
mViewManager->EndUpdateViewBatch(NS_VMREFRESH_NO_SYNC);
|
||||||
#ifdef ACCESSIBILITY
|
#ifdef ACCESSIBILITY
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user