From 8caf6868637b4e207e3e07e58eab3eb731ee7bde Mon Sep 17 00:00:00 2001 From: "troy%netscape.com" Date: Wed, 14 Jul 1999 15:15:01 +0000 Subject: [PATCH] Area frame no longer invalidates its entire bounds after an incremental reflow, and instead it's up to the individual frames to invalidate their damaged areas git-svn-id: svn://10.0.0.236/trunk@39259 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/layout/generic/nsAreaFrame.cpp | 52 -------------------- mozilla/layout/html/base/src/nsAreaFrame.cpp | 52 -------------------- 2 files changed, 104 deletions(-) diff --git a/mozilla/layout/generic/nsAreaFrame.cpp b/mozilla/layout/generic/nsAreaFrame.cpp index 1ecbc045dee..519158a7be8 100644 --- a/mozilla/layout/generic/nsAreaFrame.cpp +++ b/mozilla/layout/generic/nsAreaFrame.cpp @@ -312,58 +312,6 @@ nsAreaFrame::Reflow(nsIPresContext& aPresContext, mCombinedArea = aDesiredSize.mCombinedArea; } - // XXX This code is really temporary; the lower level frame - // classes need to contribute to the area that needs damage - // repair. This class should only worry about damage repairing - // it's border+padding area. - nsRect damageArea(0, 0, 0, 0); - - // Decide how much to repaint based on the reflow type. - // Note: we don't have to handle the initial reflow case and the - // resize reflow case, because they're handled by the scroll frame - if (eReflowReason_Incremental == aReflowState.reason) { - nsIReflowCommand::ReflowType reflowType; - aReflowState.reflowCommand->GetType(reflowType); - - // For append reflow commands that target the flowed frames just - // repaint the newly added part of the frame. - if (nsIReflowCommand::FrameAppended == reflowType) { - //this blows. we're repainting everything, but we have no choice - //since we don't know how we got here. see the XXX above for a - //real fix. -#if 1 - damageArea.y = 0; - damageArea.height = aDesiredSize.height; - damageArea.width = aDesiredSize.width; -#else - // It's an append reflow command - damageArea.y = mRect.YMost(); - damageArea.width = aDesiredSize.width; - damageArea.height = aDesiredSize.height - mRect.height; - if ((damageArea.height < 0) || - (aDesiredSize.height == mRect.height)) { - // Since we don't know what changed, assume it all changed. - damageArea.y = 0; - damageArea.height = aDesiredSize.height; - } -#endif - } else { - // Ideally the frame that is the target of the reflow command - // (or its parent frame) would generate a damage rect, but - // since none of the frame classes know how to do this then - // for the time being just repaint the entire frame - damageArea.width = aDesiredSize.width; - // If the new height is smaller than the old height then make - // sure we erase whatever used to be displayed - damageArea.height = PR_MAX(aDesiredSize.height, mRect.height); - } - } - - // If this is really the body, force a repaint of the damage area - if ((NS_BLOCK_DOCUMENT_ROOT & mFlags) && !damageArea.IsEmpty()) { - Invalidate(damageArea); - } - return rv; } diff --git a/mozilla/layout/html/base/src/nsAreaFrame.cpp b/mozilla/layout/html/base/src/nsAreaFrame.cpp index 1ecbc045dee..519158a7be8 100644 --- a/mozilla/layout/html/base/src/nsAreaFrame.cpp +++ b/mozilla/layout/html/base/src/nsAreaFrame.cpp @@ -312,58 +312,6 @@ nsAreaFrame::Reflow(nsIPresContext& aPresContext, mCombinedArea = aDesiredSize.mCombinedArea; } - // XXX This code is really temporary; the lower level frame - // classes need to contribute to the area that needs damage - // repair. This class should only worry about damage repairing - // it's border+padding area. - nsRect damageArea(0, 0, 0, 0); - - // Decide how much to repaint based on the reflow type. - // Note: we don't have to handle the initial reflow case and the - // resize reflow case, because they're handled by the scroll frame - if (eReflowReason_Incremental == aReflowState.reason) { - nsIReflowCommand::ReflowType reflowType; - aReflowState.reflowCommand->GetType(reflowType); - - // For append reflow commands that target the flowed frames just - // repaint the newly added part of the frame. - if (nsIReflowCommand::FrameAppended == reflowType) { - //this blows. we're repainting everything, but we have no choice - //since we don't know how we got here. see the XXX above for a - //real fix. -#if 1 - damageArea.y = 0; - damageArea.height = aDesiredSize.height; - damageArea.width = aDesiredSize.width; -#else - // It's an append reflow command - damageArea.y = mRect.YMost(); - damageArea.width = aDesiredSize.width; - damageArea.height = aDesiredSize.height - mRect.height; - if ((damageArea.height < 0) || - (aDesiredSize.height == mRect.height)) { - // Since we don't know what changed, assume it all changed. - damageArea.y = 0; - damageArea.height = aDesiredSize.height; - } -#endif - } else { - // Ideally the frame that is the target of the reflow command - // (or its parent frame) would generate a damage rect, but - // since none of the frame classes know how to do this then - // for the time being just repaint the entire frame - damageArea.width = aDesiredSize.width; - // If the new height is smaller than the old height then make - // sure we erase whatever used to be displayed - damageArea.height = PR_MAX(aDesiredSize.height, mRect.height); - } - } - - // If this is really the body, force a repaint of the damage area - if ((NS_BLOCK_DOCUMENT_ROOT & mFlags) && !damageArea.IsEmpty()) { - Invalidate(damageArea); - } - return rv; }