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
This commit is contained in:
bernd.mielke%snafu.de 2001-03-21 06:02:21 +00:00
parent 67cb858eee
commit bbaf6b9149
2 changed files with 30 additions and 4 deletions

View File

@ -334,7 +334,7 @@ BasicTableLayoutStrategy::BalanceColumnWidths(nsIPresContext* aPresCont
(!tableIsAutoWidth && (totalAllocated < maxWidth)) ) {
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));
}
}
}
}
}

View File

@ -334,7 +334,7 @@ BasicTableLayoutStrategy::BalanceColumnWidths(nsIPresContext* aPresCont
(!tableIsAutoWidth && (totalAllocated < maxWidth)) ) {
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));
}
}
}
}
}