diff --git a/mozilla/layout/html/table/src/BasicTableLayoutStrategy.cpp b/mozilla/layout/html/table/src/BasicTableLayoutStrategy.cpp index d876ffeafce..302fb896073 100644 --- a/mozilla/layout/html/table/src/BasicTableLayoutStrategy.cpp +++ b/mozilla/layout/html/table/src/BasicTableLayoutStrategy.cpp @@ -232,6 +232,7 @@ PRBool BasicTableLayoutStrategy::AssignPreliminaryColumnWidths() nscoord maxColWidth = 0; nscoord effectiveMinColumnWidth = 0; // min col width ignoring cells with colspans nscoord effectiveMaxColumnWidth = 0; // max col width ignoring cells with colspans + nscoord specifiedFixedColWidth = 0; // the width of the column if given stylistically (or via cell Width attribute) // Get column information nsTableColFrame *colFrame = mTableFrame->GetColFrame(colIndex); @@ -243,7 +244,6 @@ PRBool BasicTableLayoutStrategy::AssignPreliminaryColumnWidths() // Get fixed column width if it has one PRBool haveColWidth = PR_FALSE; - nscoord specifiedFixedColWidth=0; if (eStyleUnit_Coord==colPosition->mWidth.GetUnit()) { haveColWidth = PR_TRUE; @@ -375,7 +375,7 @@ PRBool BasicTableLayoutStrategy::AssignPreliminaryColumnWidths() // keep a running total of the amount of space taken up by all fixed-width columns if (PR_TRUE==haveColWidth) { - mFixedTableWidth += maxColWidth + colInset; + mFixedTableWidth += specifiedFixedColWidth + colInset; if (0==colIndex) mFixedTableWidth += colInset; } @@ -388,7 +388,10 @@ PRBool BasicTableLayoutStrategy::AssignPreliminaryColumnWidths() colFrame->SetMaxColWidth(effectiveMaxColumnWidth); colFrame->SetEffectiveMinColWidth(effectiveMinColumnWidth); colFrame->SetEffectiveMaxColWidth(effectiveMaxColumnWidth); - mTableFrame->SetColumnWidth(colIndex, effectiveMaxColumnWidth); + if (PR_TRUE==haveColWidth) + mTableFrame->SetColumnWidth(colIndex, specifiedFixedColWidth); + else + mTableFrame->SetColumnWidth(colIndex, effectiveMaxColumnWidth); // add col[i] metrics to the running totals for the table min/max width if (NS_UNCONSTRAINEDSIZE!=mMinTableWidth) diff --git a/mozilla/layout/tables/BasicTableLayoutStrategy.cpp b/mozilla/layout/tables/BasicTableLayoutStrategy.cpp index d876ffeafce..302fb896073 100644 --- a/mozilla/layout/tables/BasicTableLayoutStrategy.cpp +++ b/mozilla/layout/tables/BasicTableLayoutStrategy.cpp @@ -232,6 +232,7 @@ PRBool BasicTableLayoutStrategy::AssignPreliminaryColumnWidths() nscoord maxColWidth = 0; nscoord effectiveMinColumnWidth = 0; // min col width ignoring cells with colspans nscoord effectiveMaxColumnWidth = 0; // max col width ignoring cells with colspans + nscoord specifiedFixedColWidth = 0; // the width of the column if given stylistically (or via cell Width attribute) // Get column information nsTableColFrame *colFrame = mTableFrame->GetColFrame(colIndex); @@ -243,7 +244,6 @@ PRBool BasicTableLayoutStrategy::AssignPreliminaryColumnWidths() // Get fixed column width if it has one PRBool haveColWidth = PR_FALSE; - nscoord specifiedFixedColWidth=0; if (eStyleUnit_Coord==colPosition->mWidth.GetUnit()) { haveColWidth = PR_TRUE; @@ -375,7 +375,7 @@ PRBool BasicTableLayoutStrategy::AssignPreliminaryColumnWidths() // keep a running total of the amount of space taken up by all fixed-width columns if (PR_TRUE==haveColWidth) { - mFixedTableWidth += maxColWidth + colInset; + mFixedTableWidth += specifiedFixedColWidth + colInset; if (0==colIndex) mFixedTableWidth += colInset; } @@ -388,7 +388,10 @@ PRBool BasicTableLayoutStrategy::AssignPreliminaryColumnWidths() colFrame->SetMaxColWidth(effectiveMaxColumnWidth); colFrame->SetEffectiveMinColWidth(effectiveMinColumnWidth); colFrame->SetEffectiveMaxColWidth(effectiveMaxColumnWidth); - mTableFrame->SetColumnWidth(colIndex, effectiveMaxColumnWidth); + if (PR_TRUE==haveColWidth) + mTableFrame->SetColumnWidth(colIndex, specifiedFixedColWidth); + else + mTableFrame->SetColumnWidth(colIndex, effectiveMaxColumnWidth); // add col[i] metrics to the running totals for the table min/max width if (NS_UNCONSTRAINEDSIZE!=mMinTableWidth)