diff --git a/mozilla/layout/html/table/src/BasicTableLayoutStrategy.cpp b/mozilla/layout/html/table/src/BasicTableLayoutStrategy.cpp index 5022e964847..dee15836d66 100644 --- a/mozilla/layout/html/table/src/BasicTableLayoutStrategy.cpp +++ b/mozilla/layout/html/table/src/BasicTableLayoutStrategy.cpp @@ -141,7 +141,20 @@ PRBool BasicTableLayoutStrategy::Initialize(nsSize* aMaxElementSize) if (nsnull!=aMaxElementSize) { aMaxElementSize->height = 0; - aMaxElementSize->width = mMinTableWidth; + + // begin REMOVE_ME_WHEN_TABLE_STYLE_IS_RESOLVED! + nsIFrame * parent = nsnull; + mTableFrame->GetGeometricParent(parent); + const nsStylePosition* tablePosition; + parent->GetStyleData(eStyleStruct_Position, ((nsStyleStruct *&)tablePosition)); + // end REMOVE_ME_WHEN_TABLE_STYLE_IS_RESOLVED! + nsMargin borderPadding; + const nsStyleSpacing* spacing; + if (tablePosition->mWidth.GetUnit()==eStyleUnit_Coord) + aMaxElementSize->width = tablePosition->mWidth.GetCoordValue(); + else + aMaxElementSize->width = mMinTableWidth; + if (PR_TRUE==gsDebug) printf("BTLS::Init setting aMaxElementSize->width = %d\n", aMaxElementSize->width); } @@ -302,6 +315,7 @@ PRBool BasicTableLayoutStrategy::AssignPreliminaryColumnWidths() nsSize cellDesiredSize = cellFrame->GetPass1DesiredSize(); nscoord cellDesiredWidth = cellDesiredSize.width; nscoord cellMinWidth = cellMinSize.width; + if (1==colSpan) { if (0==minColContentWidth) diff --git a/mozilla/layout/html/table/src/nsTableCellFrame.cpp b/mozilla/layout/html/table/src/nsTableCellFrame.cpp index 45247adb7a7..f99a50e6c6b 100644 --- a/mozilla/layout/html/table/src/nsTableCellFrame.cpp +++ b/mozilla/layout/html/table/src/nsTableCellFrame.cpp @@ -310,13 +310,11 @@ NS_METHOD nsTableCellFrame::Reflow(nsIPresContext& aPresContext, if (PR_TRUE==gsDebug || PR_TRUE==gsDebugNT) { if (nsnull!=pMaxElementSize) - printf(" %p cellFrame child returned desiredSize=%d,%d,\ - and maxElementSize=%d,%d\n", + printf(" %p cellFrame child returned desiredSize=%d,%d, and maxElementSize=%d,%d\n", this, kidSize.width, kidSize.height, pMaxElementSize->width, pMaxElementSize->height); else - printf(" %p cellFrame child returned desiredSize=%d,%d,\ - and maxElementSize=nsnull\n", + printf(" %p cellFrame child returned desiredSize=%d,%d, and maxElementSize=nsnull\n", this, kidSize.width, kidSize.height); } diff --git a/mozilla/layout/html/table/src/nsTableFrame.cpp b/mozilla/layout/html/table/src/nsTableFrame.cpp index 4c16f63c6c3..bfef44df0d7 100644 --- a/mozilla/layout/html/table/src/nsTableFrame.cpp +++ b/mozilla/layout/html/table/src/nsTableFrame.cpp @@ -1651,6 +1651,11 @@ void nsTableFrame::PlaceChild(nsIPresContext* aPresContext, aState.availSize.height -= aKidRect.height; } + if (nsnull!=aMaxElementSize) { + aMaxElementSize->width = aKidMaxElementSize.width; + aMaxElementSize->height = aKidMaxElementSize.height; + } + // If this is a footer row group, add it to the list of footer row groups const nsStyleDisplay *childDisplay; aKidFrame->GetStyleData(eStyleStruct_Display, ((nsStyleStruct *&)childDisplay)); diff --git a/mozilla/layout/html/table/src/nsTableRowFrame.cpp b/mozilla/layout/html/table/src/nsTableRowFrame.cpp index bc570e5ac4c..12767c31369 100644 --- a/mozilla/layout/html/table/src/nsTableRowFrame.cpp +++ b/mozilla/layout/html/table/src/nsTableRowFrame.cpp @@ -576,8 +576,8 @@ nsTableRowFrame::InitialReflow(nsIPresContext& aPresContext, if (gsDebug1) printf ("%p InitR: avail=%d\n", this, kidAvailSize.width); status = ReflowChild(kidFrame, &aPresContext, kidSize, kidReflowState); if (gsDebug1) - printf ("%p Initial Reflow: desired=%d, MES=%d\n", - this, kidSize.width, kidMaxElementSize.width); + printf ("TR %p for cell %p Initial Reflow: desired=%d, MES=%d\n", + this, kidFrame, kidSize.width, kidMaxElementSize.width); ((nsTableCellFrame *)kidFrame)->SetPass1DesiredSize(kidSize); ((nsTableCellFrame *)kidFrame)->SetPass1MaxElementSize(kidMaxElementSize); NS_ASSERTION(NS_FRAME_IS_COMPLETE(status), "unexpected child reflow status"); @@ -785,7 +785,9 @@ nsresult nsTableRowFrame::IncrementalReflow(nsIPresContext& aPresContext, kidReflowState.reflowCommand = nsnull; kidReflowState.maxSize.width = NS_UNCONSTRAINEDSIZE; status = ReflowChild(kidFrame, &aPresContext, desiredSize, kidReflowState); - + if (gsDebug1) + printf ("TR %p for cell %p Incremental Reflow: desired=%d, MES=%d\n", + this, kidFrame, desiredSize.width, kidMaxElementSize.width); // Update the cell layout data. ((nsTableCellFrame *)kidFrame)->SetPass1DesiredSize(desiredSize); ((nsTableCellFrame *)kidFrame)->SetPass1MaxElementSize(kidMaxElementSize); diff --git a/mozilla/layout/tables/BasicTableLayoutStrategy.cpp b/mozilla/layout/tables/BasicTableLayoutStrategy.cpp index 5022e964847..dee15836d66 100644 --- a/mozilla/layout/tables/BasicTableLayoutStrategy.cpp +++ b/mozilla/layout/tables/BasicTableLayoutStrategy.cpp @@ -141,7 +141,20 @@ PRBool BasicTableLayoutStrategy::Initialize(nsSize* aMaxElementSize) if (nsnull!=aMaxElementSize) { aMaxElementSize->height = 0; - aMaxElementSize->width = mMinTableWidth; + + // begin REMOVE_ME_WHEN_TABLE_STYLE_IS_RESOLVED! + nsIFrame * parent = nsnull; + mTableFrame->GetGeometricParent(parent); + const nsStylePosition* tablePosition; + parent->GetStyleData(eStyleStruct_Position, ((nsStyleStruct *&)tablePosition)); + // end REMOVE_ME_WHEN_TABLE_STYLE_IS_RESOLVED! + nsMargin borderPadding; + const nsStyleSpacing* spacing; + if (tablePosition->mWidth.GetUnit()==eStyleUnit_Coord) + aMaxElementSize->width = tablePosition->mWidth.GetCoordValue(); + else + aMaxElementSize->width = mMinTableWidth; + if (PR_TRUE==gsDebug) printf("BTLS::Init setting aMaxElementSize->width = %d\n", aMaxElementSize->width); } @@ -302,6 +315,7 @@ PRBool BasicTableLayoutStrategy::AssignPreliminaryColumnWidths() nsSize cellDesiredSize = cellFrame->GetPass1DesiredSize(); nscoord cellDesiredWidth = cellDesiredSize.width; nscoord cellMinWidth = cellMinSize.width; + if (1==colSpan) { if (0==minColContentWidth) diff --git a/mozilla/layout/tables/nsTableCellFrame.cpp b/mozilla/layout/tables/nsTableCellFrame.cpp index 45247adb7a7..f99a50e6c6b 100644 --- a/mozilla/layout/tables/nsTableCellFrame.cpp +++ b/mozilla/layout/tables/nsTableCellFrame.cpp @@ -310,13 +310,11 @@ NS_METHOD nsTableCellFrame::Reflow(nsIPresContext& aPresContext, if (PR_TRUE==gsDebug || PR_TRUE==gsDebugNT) { if (nsnull!=pMaxElementSize) - printf(" %p cellFrame child returned desiredSize=%d,%d,\ - and maxElementSize=%d,%d\n", + printf(" %p cellFrame child returned desiredSize=%d,%d, and maxElementSize=%d,%d\n", this, kidSize.width, kidSize.height, pMaxElementSize->width, pMaxElementSize->height); else - printf(" %p cellFrame child returned desiredSize=%d,%d,\ - and maxElementSize=nsnull\n", + printf(" %p cellFrame child returned desiredSize=%d,%d, and maxElementSize=nsnull\n", this, kidSize.width, kidSize.height); } diff --git a/mozilla/layout/tables/nsTableFrame.cpp b/mozilla/layout/tables/nsTableFrame.cpp index 4c16f63c6c3..bfef44df0d7 100644 --- a/mozilla/layout/tables/nsTableFrame.cpp +++ b/mozilla/layout/tables/nsTableFrame.cpp @@ -1651,6 +1651,11 @@ void nsTableFrame::PlaceChild(nsIPresContext* aPresContext, aState.availSize.height -= aKidRect.height; } + if (nsnull!=aMaxElementSize) { + aMaxElementSize->width = aKidMaxElementSize.width; + aMaxElementSize->height = aKidMaxElementSize.height; + } + // If this is a footer row group, add it to the list of footer row groups const nsStyleDisplay *childDisplay; aKidFrame->GetStyleData(eStyleStruct_Display, ((nsStyleStruct *&)childDisplay)); diff --git a/mozilla/layout/tables/nsTableRowFrame.cpp b/mozilla/layout/tables/nsTableRowFrame.cpp index bc570e5ac4c..12767c31369 100644 --- a/mozilla/layout/tables/nsTableRowFrame.cpp +++ b/mozilla/layout/tables/nsTableRowFrame.cpp @@ -576,8 +576,8 @@ nsTableRowFrame::InitialReflow(nsIPresContext& aPresContext, if (gsDebug1) printf ("%p InitR: avail=%d\n", this, kidAvailSize.width); status = ReflowChild(kidFrame, &aPresContext, kidSize, kidReflowState); if (gsDebug1) - printf ("%p Initial Reflow: desired=%d, MES=%d\n", - this, kidSize.width, kidMaxElementSize.width); + printf ("TR %p for cell %p Initial Reflow: desired=%d, MES=%d\n", + this, kidFrame, kidSize.width, kidMaxElementSize.width); ((nsTableCellFrame *)kidFrame)->SetPass1DesiredSize(kidSize); ((nsTableCellFrame *)kidFrame)->SetPass1MaxElementSize(kidMaxElementSize); NS_ASSERTION(NS_FRAME_IS_COMPLETE(status), "unexpected child reflow status"); @@ -785,7 +785,9 @@ nsresult nsTableRowFrame::IncrementalReflow(nsIPresContext& aPresContext, kidReflowState.reflowCommand = nsnull; kidReflowState.maxSize.width = NS_UNCONSTRAINEDSIZE; status = ReflowChild(kidFrame, &aPresContext, desiredSize, kidReflowState); - + if (gsDebug1) + printf ("TR %p for cell %p Incremental Reflow: desired=%d, MES=%d\n", + this, kidFrame, desiredSize.width, kidMaxElementSize.width); // Update the cell layout data. ((nsTableCellFrame *)kidFrame)->SetPass1DesiredSize(desiredSize); ((nsTableCellFrame *)kidFrame)->SetPass1MaxElementSize(kidMaxElementSize);