diff --git a/mozilla/layout/html/table/src/BasicTableLayoutStrategy.cpp b/mozilla/layout/html/table/src/BasicTableLayoutStrategy.cpp index 2ecbba8c34f..4aed03f84e7 100644 --- a/mozilla/layout/html/table/src/BasicTableLayoutStrategy.cpp +++ b/mozilla/layout/html/table/src/BasicTableLayoutStrategy.cpp @@ -30,7 +30,7 @@ NS_DEF_PTR(nsIStyleContext); #ifdef NS_DEBUG -static PRBool gsDebug = PR_FALSE; +static PRBool gsDebug = PR_TRUE; static PRBool gsDebugCLD = PR_FALSE; #else static const PRBool gsDebug = PR_FALSE; @@ -489,8 +489,7 @@ PRBool BasicTableLayoutStrategy::AssignPreliminaryColumnWidths() colFrame->SetMinColWidth(spanCellMinWidth); // set the new min width for the col mMinTableWidth += spanCellMinWidth-colMinWidth; // add in the col min width delta if (gsDebug==PR_TRUE) - printf (" for spanning cell into col %d with remaining span=%d, \ - old min = %d, new min = %d\n", + printf (" for spanning cell into col %d with remaining span=%d, old min = %d, new min = %d\n", colIndex, spanInfo->span, colMinWidth, spanCellMinWidth); // if the new min width is greater than the desired width, bump up the desired width nscoord colMaxWidth = colFrame->GetMaxColWidth(); @@ -498,19 +497,29 @@ PRBool BasicTableLayoutStrategy::AssignPreliminaryColumnWidths() { colFrame->SetMaxColWidth(spanCellMinWidth); mMaxTableWidth += spanCellMinWidth - colMaxWidth; + if (gsDebug) + printf(" also set max from %d to %d\n", colMaxWidth, spanCellMinWidth); } } } else { - spanCellMinWidth = spanInfo->cellMinWidth/spanInfo->initialColSpan; - colFrame->SetMinColWidth(spanCellMinWidth); - //QQQ - //mMinTableWidth += spanCellMinWidth-colMinWidth; // add in the col min width delta - if (gsDebug==PR_TRUE) - printf (" for spanning cell into col %d with remaining span=%d, \ - old min = %d, new min = %d\n", - colIndex, spanInfo->span, colMinWidth, spanCellMinWidth); + if (colMinWidth < spanCellMinWidth) + { + spanCellMinWidth = spanInfo->cellMinWidth/spanInfo->initialColSpan; + colFrame->SetMinColWidth(spanCellMinWidth); + if (gsDebug==PR_TRUE) + printf (" for spanning cell into col %d with remaining span=%d, old min = %d, new min = %d\n", + colIndex, spanInfo->span, colMinWidth, spanCellMinWidth); + // if the new min width is greater than the desired width, bump up the desired width + nscoord colMaxWidth = colFrame->GetMaxColWidth(); + if (colMaxWidth < spanCellMinWidth) + { + colFrame->SetMaxColWidth(spanCellMinWidth); + if (gsDebug) + printf(" also set max from %d to %d\n", colMaxWidth, spanCellMinWidth); + } + } } @@ -531,8 +540,7 @@ PRBool BasicTableLayoutStrategy::AssignPreliminaryColumnWidths() mMaxTableWidth += spanCellMaxWidth-colMaxWidth; // add in the col max width delta mTableFrame->SetColumnWidth(colIndex, spanCellMaxWidth); // set the column to the new desired max width if (gsDebug==PR_TRUE) - printf (" for spanning cell into col %d with remaining span=%d, \ - old max = %d, new max = %d\n", + printf (" for spanning cell into col %d with remaining span=%d, old max = %d, new max = %d\n", colIndex, spanInfo->span, colMaxWidth, spanCellMaxWidth); } } @@ -543,11 +551,8 @@ PRBool BasicTableLayoutStrategy::AssignPreliminaryColumnWidths() spanCellMaxWidth = PR_MAX(spanCellMaxWidth, minColWidth); colFrame->SetMaxColWidth(spanCellMaxWidth); mTableFrame->SetColumnWidth(colIndex, spanCellMaxWidth); - //QQQ mMaxTW already taken care of at this point? - //mMaxTableWidth += spanCellMaxWidth-colMaxWidth; // add in the col max width delta if (gsDebug==PR_TRUE) - printf (" for spanning cell into col %d with remaining span=%d, \ - old max = %d, new max = %d\n", + printf (" for spanning cell into col %d with remaining span=%d, old max = %d, new max = %d\n", colIndex, spanInfo->span, colMaxWidth, spanCellMaxWidth); } @@ -842,22 +847,28 @@ PRBool BasicTableLayoutStrategy::BalanceColumnsTableFits(const nsReflowState& aR { minColWidth = spanCellMinWidth; // set the new min width for the col if (gsDebug==PR_TRUE) - printf (" for spanning cell into col %d with remaining span=%d, \ - new min = %d\n", + printf (" for spanning cell into col %d with remaining span=%d, new min = %d\n", colIndex, spanInfo->span, minColWidth); // if the new min width is greater than the desired width, bump up the desired width maxColWidth = PR_MAX(maxColWidth, minColWidth); + if (gsDebug) + printf (" and maxColWidth = %d\n", maxColWidth); } } else { spanCellMinWidth = spanInfo->cellMinWidth/spanInfo->initialColSpan; - minColWidth = spanCellMinWidth; - //QQQ is mMinTableWidth already taken care of at this point? - if (gsDebug==PR_TRUE) - printf (" for spanning cell into col %d with remaining span=%d, \ - new min = %d\n", - colIndex, spanInfo->span, minColWidth); + if (minColWidth < spanCellMinWidth) + { + minColWidth = spanCellMinWidth; + if (gsDebug==PR_TRUE) + printf (" for spanning cell into col %d with remaining span=%d, new min = %d\n", + colIndex, spanInfo->span, minColWidth); + // if the new min width is greater than the desired width, bump up the desired width + maxColWidth = PR_MAX(maxColWidth, minColWidth); + if (gsDebug) + printf (" and maxColWidth = %d\n", maxColWidth); + } } @@ -1349,20 +1360,26 @@ PRBool BasicTableLayoutStrategy::BalanceColumnsConstrained( const nsReflowState& { minColWidth = spanCellMinWidth; // set the new min width for the col if (gsDebug==PR_TRUE) - printf (" for spanning cell into col %d with remaining span=%d, \ - new min = %d\n", + printf (" for spanning cell into col %d with remaining span=%d, new min = %d\n", colIndex, spanInfo->span, minColWidth); + maxColWidth = PR_MAX(maxColWidth, minColWidth); + if (gsDebug) + printf (" maxColWidth = %d\n", maxColWidth); } } else { spanCellMinWidth = spanInfo->cellMinWidth/spanInfo->initialColSpan; - minColWidth = spanCellMinWidth; - //QQQ is mMinTableWidth already taken care of at this point? - if (gsDebug==PR_TRUE) - printf (" for spanning cell into col %d with remaining span=%d, \ - new min = %d\n", + if (minColWidth < spanCellMinWidth) + { + minColWidth = spanCellMinWidth; + if (gsDebug==PR_TRUE) + printf (" for spanning cell into col %d with remaining span=%d, new min = %d\n", colIndex, spanInfo->span, minColWidth); + maxColWidth = PR_MAX(maxColWidth, minColWidth); + if (gsDebug) + printf (" maxColWidth = %d\n", maxColWidth); + } } @@ -2026,6 +2043,7 @@ void BasicTableLayoutStrategy::AdjustTableThatIsTooNarrow(nscoord aComputedWidth break; } } + delete [] colsToGrow; } // end while (0SetMinColWidth(spanCellMinWidth); // set the new min width for the col mMinTableWidth += spanCellMinWidth-colMinWidth; // add in the col min width delta if (gsDebug==PR_TRUE) - printf (" for spanning cell into col %d with remaining span=%d, \ - old min = %d, new min = %d\n", + printf (" for spanning cell into col %d with remaining span=%d, old min = %d, new min = %d\n", colIndex, spanInfo->span, colMinWidth, spanCellMinWidth); // if the new min width is greater than the desired width, bump up the desired width nscoord colMaxWidth = colFrame->GetMaxColWidth(); @@ -498,19 +497,29 @@ PRBool BasicTableLayoutStrategy::AssignPreliminaryColumnWidths() { colFrame->SetMaxColWidth(spanCellMinWidth); mMaxTableWidth += spanCellMinWidth - colMaxWidth; + if (gsDebug) + printf(" also set max from %d to %d\n", colMaxWidth, spanCellMinWidth); } } } else { - spanCellMinWidth = spanInfo->cellMinWidth/spanInfo->initialColSpan; - colFrame->SetMinColWidth(spanCellMinWidth); - //QQQ - //mMinTableWidth += spanCellMinWidth-colMinWidth; // add in the col min width delta - if (gsDebug==PR_TRUE) - printf (" for spanning cell into col %d with remaining span=%d, \ - old min = %d, new min = %d\n", - colIndex, spanInfo->span, colMinWidth, spanCellMinWidth); + if (colMinWidth < spanCellMinWidth) + { + spanCellMinWidth = spanInfo->cellMinWidth/spanInfo->initialColSpan; + colFrame->SetMinColWidth(spanCellMinWidth); + if (gsDebug==PR_TRUE) + printf (" for spanning cell into col %d with remaining span=%d, old min = %d, new min = %d\n", + colIndex, spanInfo->span, colMinWidth, spanCellMinWidth); + // if the new min width is greater than the desired width, bump up the desired width + nscoord colMaxWidth = colFrame->GetMaxColWidth(); + if (colMaxWidth < spanCellMinWidth) + { + colFrame->SetMaxColWidth(spanCellMinWidth); + if (gsDebug) + printf(" also set max from %d to %d\n", colMaxWidth, spanCellMinWidth); + } + } } @@ -531,8 +540,7 @@ PRBool BasicTableLayoutStrategy::AssignPreliminaryColumnWidths() mMaxTableWidth += spanCellMaxWidth-colMaxWidth; // add in the col max width delta mTableFrame->SetColumnWidth(colIndex, spanCellMaxWidth); // set the column to the new desired max width if (gsDebug==PR_TRUE) - printf (" for spanning cell into col %d with remaining span=%d, \ - old max = %d, new max = %d\n", + printf (" for spanning cell into col %d with remaining span=%d, old max = %d, new max = %d\n", colIndex, spanInfo->span, colMaxWidth, spanCellMaxWidth); } } @@ -543,11 +551,8 @@ PRBool BasicTableLayoutStrategy::AssignPreliminaryColumnWidths() spanCellMaxWidth = PR_MAX(spanCellMaxWidth, minColWidth); colFrame->SetMaxColWidth(spanCellMaxWidth); mTableFrame->SetColumnWidth(colIndex, spanCellMaxWidth); - //QQQ mMaxTW already taken care of at this point? - //mMaxTableWidth += spanCellMaxWidth-colMaxWidth; // add in the col max width delta if (gsDebug==PR_TRUE) - printf (" for spanning cell into col %d with remaining span=%d, \ - old max = %d, new max = %d\n", + printf (" for spanning cell into col %d with remaining span=%d, old max = %d, new max = %d\n", colIndex, spanInfo->span, colMaxWidth, spanCellMaxWidth); } @@ -842,22 +847,28 @@ PRBool BasicTableLayoutStrategy::BalanceColumnsTableFits(const nsReflowState& aR { minColWidth = spanCellMinWidth; // set the new min width for the col if (gsDebug==PR_TRUE) - printf (" for spanning cell into col %d with remaining span=%d, \ - new min = %d\n", + printf (" for spanning cell into col %d with remaining span=%d, new min = %d\n", colIndex, spanInfo->span, minColWidth); // if the new min width is greater than the desired width, bump up the desired width maxColWidth = PR_MAX(maxColWidth, minColWidth); + if (gsDebug) + printf (" and maxColWidth = %d\n", maxColWidth); } } else { spanCellMinWidth = spanInfo->cellMinWidth/spanInfo->initialColSpan; - minColWidth = spanCellMinWidth; - //QQQ is mMinTableWidth already taken care of at this point? - if (gsDebug==PR_TRUE) - printf (" for spanning cell into col %d with remaining span=%d, \ - new min = %d\n", - colIndex, spanInfo->span, minColWidth); + if (minColWidth < spanCellMinWidth) + { + minColWidth = spanCellMinWidth; + if (gsDebug==PR_TRUE) + printf (" for spanning cell into col %d with remaining span=%d, new min = %d\n", + colIndex, spanInfo->span, minColWidth); + // if the new min width is greater than the desired width, bump up the desired width + maxColWidth = PR_MAX(maxColWidth, minColWidth); + if (gsDebug) + printf (" and maxColWidth = %d\n", maxColWidth); + } } @@ -1349,20 +1360,26 @@ PRBool BasicTableLayoutStrategy::BalanceColumnsConstrained( const nsReflowState& { minColWidth = spanCellMinWidth; // set the new min width for the col if (gsDebug==PR_TRUE) - printf (" for spanning cell into col %d with remaining span=%d, \ - new min = %d\n", + printf (" for spanning cell into col %d with remaining span=%d, new min = %d\n", colIndex, spanInfo->span, minColWidth); + maxColWidth = PR_MAX(maxColWidth, minColWidth); + if (gsDebug) + printf (" maxColWidth = %d\n", maxColWidth); } } else { spanCellMinWidth = spanInfo->cellMinWidth/spanInfo->initialColSpan; - minColWidth = spanCellMinWidth; - //QQQ is mMinTableWidth already taken care of at this point? - if (gsDebug==PR_TRUE) - printf (" for spanning cell into col %d with remaining span=%d, \ - new min = %d\n", + if (minColWidth < spanCellMinWidth) + { + minColWidth = spanCellMinWidth; + if (gsDebug==PR_TRUE) + printf (" for spanning cell into col %d with remaining span=%d, new min = %d\n", colIndex, spanInfo->span, minColWidth); + maxColWidth = PR_MAX(maxColWidth, minColWidth); + if (gsDebug) + printf (" maxColWidth = %d\n", maxColWidth); + } } @@ -2026,6 +2043,7 @@ void BasicTableLayoutStrategy::AdjustTableThatIsTooNarrow(nscoord aComputedWidth break; } } + delete [] colsToGrow; } // end while (0