limit the spread of desired content width in colspans with specified fixed width's

bug 42187, it fixes also the regression in bug 2684. r=karnaze sr=attinasi


git-svn-id: svn://10.0.0.236/trunk@89990 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
bernd.mielke%snafu.de
2001-03-21 06:02:21 +00:00
parent 1b5116db6d
commit a65d68f47f
2 changed files with 30 additions and 4 deletions

View File

@@ -332,9 +332,9 @@ BasicTableLayoutStrategy::BalanceColumnWidths(nsIPresContext* aPresCont
// allocate the rest to auto columns, with some exceptions
if ( (tableIsAutoWidth && (perAdjTableWidth - totalAllocated > 0)) ||
(!tableIsAutoWidth && (totalAllocated < maxWidth)) ) {
PRInt32 numEffCols = mTableFrame->GetEffectiveColCount();
PRInt32 numEffCols = mTableFrame->GetEffectiveColCount();
PRBool excludePct = (totalCounts[PCT] != numEffCols);
PRBool excludeFix = (totalCounts[PCT] + totalCounts[FIX] < numEffCols);
PRBool excludeFix = (totalCounts[PCT] + totalCounts[FIX] + totalCounts[FIX_ADJ] < numEffCols);
PRBool excludePro = (totalCounts[DES_CON] > 0);
PRBool exclude0Pro = (totalCounts[MIN_PRO] != num0Proportional);
if (tableIsAutoWidth) {
@@ -845,6 +845,19 @@ BasicTableLayoutStrategy::ComputeNonPctColspanWidths(PRInt32 aWidthInd
colFrame->SetWidth(aWidthIndex + NUM_MAJOR_WIDTHS, newColAdjWidth);
colFrame->SetConstrainingCell(aCellFrame); // XXX is this right?
}
else {
if((newColAdjWidth > 0) && (FIX == aWidthIndex)) {
if(colFrame->GetWidth(FIX) < 0) {
nscoord desCon = colFrame->GetWidth(DES_CON);
if (desCon > newColAdjWidth) {
newColAdjWidth = desCon;
}
}
if(colFrame->GetWidth(FIX_ADJ) < newColAdjWidth) {
colFrame->SetWidth(FIX_ADJ, PR_MAX(colWidth,newColAdjWidth));
}
}
}
}
}