bugs 17138, 17168 and others - col allocation involving colspans honors constraints; pct colspans were allocating incorrectly if pct cols existed.

git-svn-id: svn://10.0.0.236/trunk@52879 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
karnaze%netscape.com
1999-11-05 22:36:59 +00:00
parent c5c9738319
commit 49e55fa057
4 changed files with 660 additions and 286 deletions

View File

@@ -98,6 +98,39 @@ protected:
*/
virtual PRBool AssignPreliminaryColumnWidths(nscoord aComputedWidth);
/**
* Calculate the adjusted widths (min, desired, fixed, or pct) for a cell
* spanning multiple columns.
* @param aWidthIndex - the width to calculate (see nsTableColFrame.h for enums)
* @param aCellFrame - the frame of the cell with a colspan
* @param aColIndex - the column index of the cell in the table
* @param aColSpan - the colspan of the cell
* @param aConsiderPct - if true, consider columns that have pct widths and are spanned by the cell
*/
void ComputeColspanWidths(PRInt32 aWidthIndex,
nsTableCellFrame* aCellFrame,
PRInt32 aColIndex,
PRInt32 aColSpan,
PRBool aConsiderPct);
/**
* main helper for above. For min width calculations, it can get called up to
* 3 times, 1st to let constrained (fix or pct) cols reach their limit, 2nd
* to let auto cols reach their limit and 3rd to spread any remainder among
* auto cols. If there are no auto cols then only constrained cols are considered.
* @param aCellWidth - the width of the cell
* @param aLimitType - value indicating which type of width is being targeted
* to reach a limit
* @return - true if the computation completed, false otherwise
*/
PRBool ComputeColspanWidths(PRInt32 aWidthIndex,
nsTableCellFrame* aCellFrame,
nscoord aCellWidth,
PRInt32 aColIndex,
PRInt32 aColSpan,
PRBool aConsiderPct,
PRInt32 aLimitType);
nscoord AssignPercentageColumnWidths(nscoord aBasis,
PRBool aTableIsAutoWidth);