зеркало из https://github.com/mozilla/gecko-dev.git
Made table frame construction flexible enough to allow arbitrary content to be mapped
to arbitrary table related display types.
This commit is contained in:
Родитель
87e2ee2cc6
Коммит
6256ccca5b
|
@ -227,8 +227,10 @@ nsIAtom* nsHTMLAtoms::suppress;
|
||||||
nsIAtom* nsHTMLAtoms::tabindex;
|
nsIAtom* nsHTMLAtoms::tabindex;
|
||||||
nsIAtom* nsHTMLAtoms::table;
|
nsIAtom* nsHTMLAtoms::table;
|
||||||
nsIAtom* nsHTMLAtoms::tablePseudo;
|
nsIAtom* nsHTMLAtoms::tablePseudo;
|
||||||
|
nsIAtom* nsHTMLAtoms::tableCellPseudo;
|
||||||
nsIAtom* nsHTMLAtoms::tableColGroupPseudo;
|
nsIAtom* nsHTMLAtoms::tableColGroupPseudo;
|
||||||
nsIAtom* nsHTMLAtoms::tableColPseudo;
|
nsIAtom* nsHTMLAtoms::tableColPseudo;
|
||||||
|
nsIAtom* nsHTMLAtoms::tableOuterPseudo;
|
||||||
nsIAtom* nsHTMLAtoms::tableRowGroupPseudo;
|
nsIAtom* nsHTMLAtoms::tableRowGroupPseudo;
|
||||||
nsIAtom* nsHTMLAtoms::tableRowPseudo;
|
nsIAtom* nsHTMLAtoms::tableRowPseudo;
|
||||||
nsIAtom* nsHTMLAtoms::tabstop;
|
nsIAtom* nsHTMLAtoms::tabstop;
|
||||||
|
@ -477,8 +479,10 @@ void nsHTMLAtoms::AddrefAtoms()
|
||||||
tabindex = NS_NewAtom("TABINDEX");
|
tabindex = NS_NewAtom("TABINDEX");
|
||||||
table = NS_NewAtom("TABLE");
|
table = NS_NewAtom("TABLE");
|
||||||
tablePseudo = NS_NewAtom(":TABLE");
|
tablePseudo = NS_NewAtom(":TABLE");
|
||||||
|
tableCellPseudo = NS_NewAtom(":TABLE-CELL");
|
||||||
tableColGroupPseudo = NS_NewAtom(":TABLE-COLUMN-GROUP");
|
tableColGroupPseudo = NS_NewAtom(":TABLE-COLUMN-GROUP");
|
||||||
tableColPseudo = NS_NewAtom(":TABLE-COLUMN");
|
tableColPseudo = NS_NewAtom(":TABLE-COLUMN");
|
||||||
|
tableOuterPseudo = NS_NewAtom(":TABLE-OUTER");
|
||||||
tableRowGroupPseudo = NS_NewAtom(":TABLE-ROW-GROUP");
|
tableRowGroupPseudo = NS_NewAtom(":TABLE-ROW-GROUP");
|
||||||
tableRowPseudo = NS_NewAtom(":TABLE-ROW");
|
tableRowPseudo = NS_NewAtom(":TABLE-ROW");
|
||||||
tabstop = NS_NewAtom("TABSTOP");
|
tabstop = NS_NewAtom("TABSTOP");
|
||||||
|
@ -718,8 +722,10 @@ void nsHTMLAtoms::ReleaseAtoms()
|
||||||
NS_RELEASE(suppress);
|
NS_RELEASE(suppress);
|
||||||
NS_RELEASE(table);
|
NS_RELEASE(table);
|
||||||
NS_RELEASE(tablePseudo);
|
NS_RELEASE(tablePseudo);
|
||||||
|
NS_RELEASE(tableCellPseudo);
|
||||||
NS_RELEASE(tableColGroupPseudo);
|
NS_RELEASE(tableColGroupPseudo);
|
||||||
NS_RELEASE(tableColPseudo);
|
NS_RELEASE(tableColPseudo);
|
||||||
|
NS_RELEASE(tableOuterPseudo);
|
||||||
NS_RELEASE(tableRowGroupPseudo);
|
NS_RELEASE(tableRowGroupPseudo);
|
||||||
NS_RELEASE(tableRowPseudo);
|
NS_RELEASE(tableRowPseudo);
|
||||||
NS_RELEASE(tabstop);
|
NS_RELEASE(tabstop);
|
||||||
|
|
|
@ -263,8 +263,10 @@ public:
|
||||||
static nsIAtom* tabindex;
|
static nsIAtom* tabindex;
|
||||||
static nsIAtom* table;
|
static nsIAtom* table;
|
||||||
static nsIAtom* tablePseudo;
|
static nsIAtom* tablePseudo;
|
||||||
|
static nsIAtom* tableCellPseudo;
|
||||||
static nsIAtom* tableColGroupPseudo;
|
static nsIAtom* tableColGroupPseudo;
|
||||||
static nsIAtom* tableColPseudo;
|
static nsIAtom* tableColPseudo;
|
||||||
|
static nsIAtom* tableOuterPseudo;
|
||||||
static nsIAtom* tableRowGroupPseudo;
|
static nsIAtom* tableRowGroupPseudo;
|
||||||
static nsIAtom* tableRowPseudo;
|
static nsIAtom* tableRowPseudo;
|
||||||
static nsIAtom* tabstop;
|
static nsIAtom* tabstop;
|
||||||
|
|
|
@ -104,8 +104,9 @@ protected:
|
||||||
GenericElementCollection* mCells;
|
GenericElementCollection* mCells;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifdef XXX_debugging
|
||||||
static
|
static
|
||||||
void TempList(nsIDOMHTMLTableElement* aTable) {
|
void DebugList(nsIDOMHTMLTableElement* aTable) {
|
||||||
nsIHTMLContent* content = nsnull;
|
nsIHTMLContent* content = nsnull;
|
||||||
nsresult result = aTable->QueryInterface(kIHTMLContentIID, (void**)&content);
|
nsresult result = aTable->QueryInterface(kIHTMLContentIID, (void**)&content);
|
||||||
if (NS_SUCCEEDED(result) && (nsnull != content)) {
|
if (NS_SUCCEEDED(result) && (nsnull != content)) {
|
||||||
|
@ -130,6 +131,7 @@ void TempList(nsIDOMHTMLTableElement* aTable) {
|
||||||
NS_RELEASE(content);
|
NS_RELEASE(content);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
nsresult
|
nsresult
|
||||||
NS_NewHTMLTableRowElement(nsIHTMLContent** aInstancePtrResult, nsIAtom* aTag)
|
NS_NewHTMLTableRowElement(nsIHTMLContent** aInstancePtrResult, nsIAtom* aTag)
|
||||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -263,8 +263,10 @@ public:
|
||||||
static nsIAtom* tabindex;
|
static nsIAtom* tabindex;
|
||||||
static nsIAtom* table;
|
static nsIAtom* table;
|
||||||
static nsIAtom* tablePseudo;
|
static nsIAtom* tablePseudo;
|
||||||
|
static nsIAtom* tableCellPseudo;
|
||||||
static nsIAtom* tableColGroupPseudo;
|
static nsIAtom* tableColGroupPseudo;
|
||||||
static nsIAtom* tableColPseudo;
|
static nsIAtom* tableColPseudo;
|
||||||
|
static nsIAtom* tableOuterPseudo;
|
||||||
static nsIAtom* tableRowGroupPseudo;
|
static nsIAtom* tableRowGroupPseudo;
|
||||||
static nsIAtom* tableRowPseudo;
|
static nsIAtom* tableRowPseudo;
|
||||||
static nsIAtom* tabstop;
|
static nsIAtom* tabstop;
|
||||||
|
|
|
@ -227,8 +227,10 @@ nsIAtom* nsHTMLAtoms::suppress;
|
||||||
nsIAtom* nsHTMLAtoms::tabindex;
|
nsIAtom* nsHTMLAtoms::tabindex;
|
||||||
nsIAtom* nsHTMLAtoms::table;
|
nsIAtom* nsHTMLAtoms::table;
|
||||||
nsIAtom* nsHTMLAtoms::tablePseudo;
|
nsIAtom* nsHTMLAtoms::tablePseudo;
|
||||||
|
nsIAtom* nsHTMLAtoms::tableCellPseudo;
|
||||||
nsIAtom* nsHTMLAtoms::tableColGroupPseudo;
|
nsIAtom* nsHTMLAtoms::tableColGroupPseudo;
|
||||||
nsIAtom* nsHTMLAtoms::tableColPseudo;
|
nsIAtom* nsHTMLAtoms::tableColPseudo;
|
||||||
|
nsIAtom* nsHTMLAtoms::tableOuterPseudo;
|
||||||
nsIAtom* nsHTMLAtoms::tableRowGroupPseudo;
|
nsIAtom* nsHTMLAtoms::tableRowGroupPseudo;
|
||||||
nsIAtom* nsHTMLAtoms::tableRowPseudo;
|
nsIAtom* nsHTMLAtoms::tableRowPseudo;
|
||||||
nsIAtom* nsHTMLAtoms::tabstop;
|
nsIAtom* nsHTMLAtoms::tabstop;
|
||||||
|
@ -477,8 +479,10 @@ void nsHTMLAtoms::AddrefAtoms()
|
||||||
tabindex = NS_NewAtom("TABINDEX");
|
tabindex = NS_NewAtom("TABINDEX");
|
||||||
table = NS_NewAtom("TABLE");
|
table = NS_NewAtom("TABLE");
|
||||||
tablePseudo = NS_NewAtom(":TABLE");
|
tablePseudo = NS_NewAtom(":TABLE");
|
||||||
|
tableCellPseudo = NS_NewAtom(":TABLE-CELL");
|
||||||
tableColGroupPseudo = NS_NewAtom(":TABLE-COLUMN-GROUP");
|
tableColGroupPseudo = NS_NewAtom(":TABLE-COLUMN-GROUP");
|
||||||
tableColPseudo = NS_NewAtom(":TABLE-COLUMN");
|
tableColPseudo = NS_NewAtom(":TABLE-COLUMN");
|
||||||
|
tableOuterPseudo = NS_NewAtom(":TABLE-OUTER");
|
||||||
tableRowGroupPseudo = NS_NewAtom(":TABLE-ROW-GROUP");
|
tableRowGroupPseudo = NS_NewAtom(":TABLE-ROW-GROUP");
|
||||||
tableRowPseudo = NS_NewAtom(":TABLE-ROW");
|
tableRowPseudo = NS_NewAtom(":TABLE-ROW");
|
||||||
tabstop = NS_NewAtom("TABSTOP");
|
tabstop = NS_NewAtom("TABSTOP");
|
||||||
|
@ -718,8 +722,10 @@ void nsHTMLAtoms::ReleaseAtoms()
|
||||||
NS_RELEASE(suppress);
|
NS_RELEASE(suppress);
|
||||||
NS_RELEASE(table);
|
NS_RELEASE(table);
|
||||||
NS_RELEASE(tablePseudo);
|
NS_RELEASE(tablePseudo);
|
||||||
|
NS_RELEASE(tableCellPseudo);
|
||||||
NS_RELEASE(tableColGroupPseudo);
|
NS_RELEASE(tableColGroupPseudo);
|
||||||
NS_RELEASE(tableColPseudo);
|
NS_RELEASE(tableColPseudo);
|
||||||
|
NS_RELEASE(tableOuterPseudo);
|
||||||
NS_RELEASE(tableRowGroupPseudo);
|
NS_RELEASE(tableRowGroupPseudo);
|
||||||
NS_RELEASE(tableRowPseudo);
|
NS_RELEASE(tableRowPseudo);
|
||||||
NS_RELEASE(tabstop);
|
NS_RELEASE(tabstop);
|
||||||
|
|
|
@ -227,8 +227,10 @@ nsIAtom* nsHTMLAtoms::suppress;
|
||||||
nsIAtom* nsHTMLAtoms::tabindex;
|
nsIAtom* nsHTMLAtoms::tabindex;
|
||||||
nsIAtom* nsHTMLAtoms::table;
|
nsIAtom* nsHTMLAtoms::table;
|
||||||
nsIAtom* nsHTMLAtoms::tablePseudo;
|
nsIAtom* nsHTMLAtoms::tablePseudo;
|
||||||
|
nsIAtom* nsHTMLAtoms::tableCellPseudo;
|
||||||
nsIAtom* nsHTMLAtoms::tableColGroupPseudo;
|
nsIAtom* nsHTMLAtoms::tableColGroupPseudo;
|
||||||
nsIAtom* nsHTMLAtoms::tableColPseudo;
|
nsIAtom* nsHTMLAtoms::tableColPseudo;
|
||||||
|
nsIAtom* nsHTMLAtoms::tableOuterPseudo;
|
||||||
nsIAtom* nsHTMLAtoms::tableRowGroupPseudo;
|
nsIAtom* nsHTMLAtoms::tableRowGroupPseudo;
|
||||||
nsIAtom* nsHTMLAtoms::tableRowPseudo;
|
nsIAtom* nsHTMLAtoms::tableRowPseudo;
|
||||||
nsIAtom* nsHTMLAtoms::tabstop;
|
nsIAtom* nsHTMLAtoms::tabstop;
|
||||||
|
@ -477,8 +479,10 @@ void nsHTMLAtoms::AddrefAtoms()
|
||||||
tabindex = NS_NewAtom("TABINDEX");
|
tabindex = NS_NewAtom("TABINDEX");
|
||||||
table = NS_NewAtom("TABLE");
|
table = NS_NewAtom("TABLE");
|
||||||
tablePseudo = NS_NewAtom(":TABLE");
|
tablePseudo = NS_NewAtom(":TABLE");
|
||||||
|
tableCellPseudo = NS_NewAtom(":TABLE-CELL");
|
||||||
tableColGroupPseudo = NS_NewAtom(":TABLE-COLUMN-GROUP");
|
tableColGroupPseudo = NS_NewAtom(":TABLE-COLUMN-GROUP");
|
||||||
tableColPseudo = NS_NewAtom(":TABLE-COLUMN");
|
tableColPseudo = NS_NewAtom(":TABLE-COLUMN");
|
||||||
|
tableOuterPseudo = NS_NewAtom(":TABLE-OUTER");
|
||||||
tableRowGroupPseudo = NS_NewAtom(":TABLE-ROW-GROUP");
|
tableRowGroupPseudo = NS_NewAtom(":TABLE-ROW-GROUP");
|
||||||
tableRowPseudo = NS_NewAtom(":TABLE-ROW");
|
tableRowPseudo = NS_NewAtom(":TABLE-ROW");
|
||||||
tabstop = NS_NewAtom("TABSTOP");
|
tabstop = NS_NewAtom("TABSTOP");
|
||||||
|
@ -718,8 +722,10 @@ void nsHTMLAtoms::ReleaseAtoms()
|
||||||
NS_RELEASE(suppress);
|
NS_RELEASE(suppress);
|
||||||
NS_RELEASE(table);
|
NS_RELEASE(table);
|
||||||
NS_RELEASE(tablePseudo);
|
NS_RELEASE(tablePseudo);
|
||||||
|
NS_RELEASE(tableCellPseudo);
|
||||||
NS_RELEASE(tableColGroupPseudo);
|
NS_RELEASE(tableColGroupPseudo);
|
||||||
NS_RELEASE(tableColPseudo);
|
NS_RELEASE(tableColPseudo);
|
||||||
|
NS_RELEASE(tableOuterPseudo);
|
||||||
NS_RELEASE(tableRowGroupPseudo);
|
NS_RELEASE(tableRowGroupPseudo);
|
||||||
NS_RELEASE(tableRowPseudo);
|
NS_RELEASE(tableRowPseudo);
|
||||||
NS_RELEASE(tabstop);
|
NS_RELEASE(tabstop);
|
||||||
|
|
|
@ -263,8 +263,10 @@ public:
|
||||||
static nsIAtom* tabindex;
|
static nsIAtom* tabindex;
|
||||||
static nsIAtom* table;
|
static nsIAtom* table;
|
||||||
static nsIAtom* tablePseudo;
|
static nsIAtom* tablePseudo;
|
||||||
|
static nsIAtom* tableCellPseudo;
|
||||||
static nsIAtom* tableColGroupPseudo;
|
static nsIAtom* tableColGroupPseudo;
|
||||||
static nsIAtom* tableColPseudo;
|
static nsIAtom* tableColPseudo;
|
||||||
|
static nsIAtom* tableOuterPseudo;
|
||||||
static nsIAtom* tableRowGroupPseudo;
|
static nsIAtom* tableRowGroupPseudo;
|
||||||
static nsIAtom* tableRowPseudo;
|
static nsIAtom* tableRowPseudo;
|
||||||
static nsIAtom* tabstop;
|
static nsIAtom* tabstop;
|
||||||
|
|
|
@ -104,8 +104,9 @@ protected:
|
||||||
GenericElementCollection* mCells;
|
GenericElementCollection* mCells;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifdef XXX_debugging
|
||||||
static
|
static
|
||||||
void TempList(nsIDOMHTMLTableElement* aTable) {
|
void DebugList(nsIDOMHTMLTableElement* aTable) {
|
||||||
nsIHTMLContent* content = nsnull;
|
nsIHTMLContent* content = nsnull;
|
||||||
nsresult result = aTable->QueryInterface(kIHTMLContentIID, (void**)&content);
|
nsresult result = aTable->QueryInterface(kIHTMLContentIID, (void**)&content);
|
||||||
if (NS_SUCCEEDED(result) && (nsnull != content)) {
|
if (NS_SUCCEEDED(result) && (nsnull != content)) {
|
||||||
|
@ -130,6 +131,7 @@ void TempList(nsIDOMHTMLTableElement* aTable) {
|
||||||
NS_RELEASE(content);
|
NS_RELEASE(content);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
nsresult
|
nsresult
|
||||||
NS_NewHTMLTableRowElement(nsIHTMLContent** aInstancePtrResult, nsIAtom* aTag)
|
NS_NewHTMLTableRowElement(nsIHTMLContent** aInstancePtrResult, nsIAtom* aTag)
|
||||||
|
|
|
@ -574,6 +574,10 @@ NOFRAMES {
|
||||||
background: inherit;
|
background: inherit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
:TABLE-CELL {
|
||||||
|
display: table-cell;
|
||||||
|
}
|
||||||
|
|
||||||
:TABLE-COLUMN {
|
:TABLE-COLUMN {
|
||||||
display: table-column;
|
display: table-column;
|
||||||
}
|
}
|
||||||
|
@ -582,6 +586,10 @@ NOFRAMES {
|
||||||
display: table-column-group;
|
display: table-column-group;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
:TABLE-OUTER {
|
||||||
|
display: table;
|
||||||
|
}
|
||||||
|
|
||||||
:TABLE-ROW {
|
:TABLE-ROW {
|
||||||
display: table-row;
|
display: table-row;
|
||||||
}
|
}
|
||||||
|
@ -606,8 +614,14 @@ NOFRAMES {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
<<<<<<< ua.css
|
||||||
|
=======
|
||||||
:MOZ-COMMENT {
|
:MOZ-COMMENT {
|
||||||
display: none;
|
display: none;
|
||||||
|
<<<<<<< ua.css
|
||||||
|
}>>>>>>> 3.86
|
||||||
|
=======
|
||||||
}
|
}
|
||||||
|
|
||||||
:DROPDOWN-VISIBLE {
|
:DROPDOWN-VISIBLE {
|
||||||
|
@ -634,3 +648,4 @@ NOFRAMES {
|
||||||
color: white;
|
color: white;
|
||||||
border: 1px dotted white;
|
border: 1px dotted white;
|
||||||
}
|
}
|
||||||
|
>>>>>>> 3.87
|
||||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -63,6 +63,8 @@ static const PRBool gsDebugIR = PR_FALSE;
|
||||||
NS_DEF_PTR(nsIStyleContext);
|
NS_DEF_PTR(nsIStyleContext);
|
||||||
NS_DEF_PTR(nsIContent);
|
NS_DEF_PTR(nsIContent);
|
||||||
|
|
||||||
|
static NS_DEFINE_IID(kITableRowGroupFrameIID, NS_ITABLEROWGROUPFRAME_IID);
|
||||||
|
|
||||||
static const PRInt32 kColumnWidthIncrement=100;
|
static const PRInt32 kColumnWidthIncrement=100;
|
||||||
|
|
||||||
/* ----------- CellData ---------- */
|
/* ----------- CellData ---------- */
|
||||||
|
@ -3248,6 +3250,7 @@ NS_METHOD nsTableFrame::ReflowMappedChildren(nsIPresContext& aPresContext,
|
||||||
{
|
{
|
||||||
// Keep track of the first row group frame: we need this to correctly clear
|
// Keep track of the first row group frame: we need this to correctly clear
|
||||||
// the isTopOfPage flag and when pushing frames
|
// the isTopOfPage flag and when pushing frames
|
||||||
|
// XXX what about header and footer groups?
|
||||||
if (nsnull == firstRowGroupFrame) {
|
if (nsnull == firstRowGroupFrame) {
|
||||||
if (NS_STYLE_DISPLAY_TABLE_ROW_GROUP == childDisplay->mDisplay) {
|
if (NS_STYLE_DISPLAY_TABLE_ROW_GROUP == childDisplay->mDisplay) {
|
||||||
firstRowGroupFrame = kidFrame;
|
firstRowGroupFrame = kidFrame;
|
||||||
|
@ -3255,7 +3258,7 @@ NS_METHOD nsTableFrame::ReflowMappedChildren(nsIPresContext& aPresContext,
|
||||||
}
|
}
|
||||||
|
|
||||||
nsMargin borderPadding;
|
nsMargin borderPadding;
|
||||||
GetTableBorderForRowGroup((nsTableRowGroupFrame *)kidFrame, borderPadding);
|
GetTableBorderForRowGroup(GetRowGroupFrameFor(kidFrame, childDisplay), borderPadding);
|
||||||
const nsStyleSpacing* tableSpacing;
|
const nsStyleSpacing* tableSpacing;
|
||||||
GetStyleData(eStyleStruct_Spacing, ((const nsStyleStruct *&)tableSpacing));
|
GetStyleData(eStyleStruct_Spacing, ((const nsStyleStruct *&)tableSpacing));
|
||||||
nsMargin padding;
|
nsMargin padding;
|
||||||
|
@ -4926,18 +4929,23 @@ nsTableFrame::GetFrameName(nsString& aResult) const
|
||||||
return MakeFrameName("Table", aResult);
|
return MakeFrameName("Table", aResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This assumes that aFrame is a scroll frame if
|
||||||
// XXX make this a macro if it becomes an issue
|
// XXX make this a macro if it becomes an issue
|
||||||
|
// XXX it has the side effect of setting mHasScrollableRowGroup
|
||||||
nsTableRowGroupFrame*
|
nsTableRowGroupFrame*
|
||||||
nsTableFrame::GetRowGroupFrameFor(nsIFrame* aFrame, const nsStyleDisplay* aDisplay)
|
nsTableFrame::GetRowGroupFrameFor(nsIFrame* aFrame, const nsStyleDisplay* aDisplay)
|
||||||
{
|
{
|
||||||
if ((NS_STYLE_OVERFLOW_SCROLL == aDisplay->mOverflow) ||
|
nsIFrame* result = nsnull;
|
||||||
(NS_STYLE_OVERFLOW_AUTO == aDisplay->mOverflow)) {
|
if (IsRowGroup(aDisplay->mDisplay)) {
|
||||||
|
nsresult rv = aFrame->QueryInterface(kITableRowGroupFrameIID, (void **)&result);
|
||||||
|
if (NS_SUCCEEDED(rv) && (nsnull != result)) {
|
||||||
|
;
|
||||||
|
} else { // it is a scroll frame that contains the row group frame
|
||||||
|
aFrame->FirstChild(nsnull, result);
|
||||||
mHasScrollableRowGroup = PR_TRUE;
|
mHasScrollableRowGroup = PR_TRUE;
|
||||||
nsIFrame* child = nsnull;
|
|
||||||
aFrame->FirstChild(nsnull, child);
|
|
||||||
return (nsTableRowGroupFrame*)child;
|
|
||||||
} else {
|
|
||||||
return (nsTableRowGroupFrame*)aFrame;
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return (nsTableRowGroupFrame*)result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -90,6 +90,21 @@ struct RowGroupReflowState {
|
||||||
|
|
||||||
/* ----------- nsTableRowGroupFrame ---------- */
|
/* ----------- nsTableRowGroupFrame ---------- */
|
||||||
|
|
||||||
|
nsresult
|
||||||
|
nsTableRowGroupFrame::QueryInterface(const nsIID& aIID, void** aInstancePtr)
|
||||||
|
{
|
||||||
|
if (NULL == aInstancePtr) {
|
||||||
|
return NS_ERROR_NULL_POINTER;
|
||||||
|
}
|
||||||
|
static NS_DEFINE_IID(kITableRowGroupIID, NS_ITABLEROWGROUPFRAME_IID);
|
||||||
|
if (aIID.Equals(kITableRowGroupIID)) {
|
||||||
|
*aInstancePtr = (void*)this;
|
||||||
|
return NS_OK;
|
||||||
|
} else {
|
||||||
|
return nsHTMLContainerFrame::QueryInterface(aIID, aInstancePtr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
NS_METHOD nsTableRowGroupFrame::GetRowCount(PRInt32 &aCount)
|
NS_METHOD nsTableRowGroupFrame::GetRowCount(PRInt32 &aCount)
|
||||||
{
|
{
|
||||||
// init out-param
|
// init out-param
|
||||||
|
|
|
@ -25,6 +25,10 @@
|
||||||
class nsTableRowFrame;
|
class nsTableRowFrame;
|
||||||
struct RowGroupReflowState;
|
struct RowGroupReflowState;
|
||||||
|
|
||||||
|
#define NS_ITABLEROWGROUPFRAME_IID \
|
||||||
|
{ 0xe940e7bc, 0xb534, 0x11d2, \
|
||||||
|
{ 0x95, 0xa2, 0x0, 0x60, 0xb0, 0xc3, 0x44, 0x14 } }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* nsTableRowGroupFrame is the frame that maps row groups
|
* nsTableRowGroupFrame is the frame that maps row groups
|
||||||
* (HTML tags THEAD, TFOOT, and TBODY). This class cannot be reused
|
* (HTML tags THEAD, TFOOT, and TBODY). This class cannot be reused
|
||||||
|
@ -50,6 +54,8 @@ public:
|
||||||
friend nsresult
|
friend nsresult
|
||||||
NS_NewTableRowGroupFrame(nsIFrame*& aResult);
|
NS_NewTableRowGroupFrame(nsIFrame*& aResult);
|
||||||
|
|
||||||
|
NS_METHOD QueryInterface(const nsIID& aIID, void** aInstancePtr);
|
||||||
|
|
||||||
NS_IMETHOD SetInitialChildList(nsIPresContext& aPresContext,
|
NS_IMETHOD SetInitialChildList(nsIPresContext& aPresContext,
|
||||||
nsIAtom* aListName,
|
nsIAtom* aListName,
|
||||||
nsIFrame* aChildList);
|
nsIFrame* aChildList);
|
||||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -574,6 +574,10 @@ NOFRAMES {
|
||||||
background: inherit;
|
background: inherit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
:TABLE-CELL {
|
||||||
|
display: table-cell;
|
||||||
|
}
|
||||||
|
|
||||||
:TABLE-COLUMN {
|
:TABLE-COLUMN {
|
||||||
display: table-column;
|
display: table-column;
|
||||||
}
|
}
|
||||||
|
@ -582,6 +586,10 @@ NOFRAMES {
|
||||||
display: table-column-group;
|
display: table-column-group;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
:TABLE-OUTER {
|
||||||
|
display: table;
|
||||||
|
}
|
||||||
|
|
||||||
:TABLE-ROW {
|
:TABLE-ROW {
|
||||||
display: table-row;
|
display: table-row;
|
||||||
}
|
}
|
||||||
|
@ -606,8 +614,14 @@ NOFRAMES {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
<<<<<<< ua.css
|
||||||
|
=======
|
||||||
:MOZ-COMMENT {
|
:MOZ-COMMENT {
|
||||||
display: none;
|
display: none;
|
||||||
|
<<<<<<< ua.css
|
||||||
|
}>>>>>>> 3.86
|
||||||
|
=======
|
||||||
}
|
}
|
||||||
|
|
||||||
:DROPDOWN-VISIBLE {
|
:DROPDOWN-VISIBLE {
|
||||||
|
@ -634,3 +648,4 @@ NOFRAMES {
|
||||||
color: white;
|
color: white;
|
||||||
border: 1px dotted white;
|
border: 1px dotted white;
|
||||||
}
|
}
|
||||||
|
>>>>>>> 3.87
|
||||||
|
|
|
@ -63,6 +63,8 @@ static const PRBool gsDebugIR = PR_FALSE;
|
||||||
NS_DEF_PTR(nsIStyleContext);
|
NS_DEF_PTR(nsIStyleContext);
|
||||||
NS_DEF_PTR(nsIContent);
|
NS_DEF_PTR(nsIContent);
|
||||||
|
|
||||||
|
static NS_DEFINE_IID(kITableRowGroupFrameIID, NS_ITABLEROWGROUPFRAME_IID);
|
||||||
|
|
||||||
static const PRInt32 kColumnWidthIncrement=100;
|
static const PRInt32 kColumnWidthIncrement=100;
|
||||||
|
|
||||||
/* ----------- CellData ---------- */
|
/* ----------- CellData ---------- */
|
||||||
|
@ -3248,6 +3250,7 @@ NS_METHOD nsTableFrame::ReflowMappedChildren(nsIPresContext& aPresContext,
|
||||||
{
|
{
|
||||||
// Keep track of the first row group frame: we need this to correctly clear
|
// Keep track of the first row group frame: we need this to correctly clear
|
||||||
// the isTopOfPage flag and when pushing frames
|
// the isTopOfPage flag and when pushing frames
|
||||||
|
// XXX what about header and footer groups?
|
||||||
if (nsnull == firstRowGroupFrame) {
|
if (nsnull == firstRowGroupFrame) {
|
||||||
if (NS_STYLE_DISPLAY_TABLE_ROW_GROUP == childDisplay->mDisplay) {
|
if (NS_STYLE_DISPLAY_TABLE_ROW_GROUP == childDisplay->mDisplay) {
|
||||||
firstRowGroupFrame = kidFrame;
|
firstRowGroupFrame = kidFrame;
|
||||||
|
@ -3255,7 +3258,7 @@ NS_METHOD nsTableFrame::ReflowMappedChildren(nsIPresContext& aPresContext,
|
||||||
}
|
}
|
||||||
|
|
||||||
nsMargin borderPadding;
|
nsMargin borderPadding;
|
||||||
GetTableBorderForRowGroup((nsTableRowGroupFrame *)kidFrame, borderPadding);
|
GetTableBorderForRowGroup(GetRowGroupFrameFor(kidFrame, childDisplay), borderPadding);
|
||||||
const nsStyleSpacing* tableSpacing;
|
const nsStyleSpacing* tableSpacing;
|
||||||
GetStyleData(eStyleStruct_Spacing, ((const nsStyleStruct *&)tableSpacing));
|
GetStyleData(eStyleStruct_Spacing, ((const nsStyleStruct *&)tableSpacing));
|
||||||
nsMargin padding;
|
nsMargin padding;
|
||||||
|
@ -4926,18 +4929,23 @@ nsTableFrame::GetFrameName(nsString& aResult) const
|
||||||
return MakeFrameName("Table", aResult);
|
return MakeFrameName("Table", aResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This assumes that aFrame is a scroll frame if
|
||||||
// XXX make this a macro if it becomes an issue
|
// XXX make this a macro if it becomes an issue
|
||||||
|
// XXX it has the side effect of setting mHasScrollableRowGroup
|
||||||
nsTableRowGroupFrame*
|
nsTableRowGroupFrame*
|
||||||
nsTableFrame::GetRowGroupFrameFor(nsIFrame* aFrame, const nsStyleDisplay* aDisplay)
|
nsTableFrame::GetRowGroupFrameFor(nsIFrame* aFrame, const nsStyleDisplay* aDisplay)
|
||||||
{
|
{
|
||||||
if ((NS_STYLE_OVERFLOW_SCROLL == aDisplay->mOverflow) ||
|
nsIFrame* result = nsnull;
|
||||||
(NS_STYLE_OVERFLOW_AUTO == aDisplay->mOverflow)) {
|
if (IsRowGroup(aDisplay->mDisplay)) {
|
||||||
|
nsresult rv = aFrame->QueryInterface(kITableRowGroupFrameIID, (void **)&result);
|
||||||
|
if (NS_SUCCEEDED(rv) && (nsnull != result)) {
|
||||||
|
;
|
||||||
|
} else { // it is a scroll frame that contains the row group frame
|
||||||
|
aFrame->FirstChild(nsnull, result);
|
||||||
mHasScrollableRowGroup = PR_TRUE;
|
mHasScrollableRowGroup = PR_TRUE;
|
||||||
nsIFrame* child = nsnull;
|
|
||||||
aFrame->FirstChild(nsnull, child);
|
|
||||||
return (nsTableRowGroupFrame*)child;
|
|
||||||
} else {
|
|
||||||
return (nsTableRowGroupFrame*)aFrame;
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return (nsTableRowGroupFrame*)result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -90,6 +90,21 @@ struct RowGroupReflowState {
|
||||||
|
|
||||||
/* ----------- nsTableRowGroupFrame ---------- */
|
/* ----------- nsTableRowGroupFrame ---------- */
|
||||||
|
|
||||||
|
nsresult
|
||||||
|
nsTableRowGroupFrame::QueryInterface(const nsIID& aIID, void** aInstancePtr)
|
||||||
|
{
|
||||||
|
if (NULL == aInstancePtr) {
|
||||||
|
return NS_ERROR_NULL_POINTER;
|
||||||
|
}
|
||||||
|
static NS_DEFINE_IID(kITableRowGroupIID, NS_ITABLEROWGROUPFRAME_IID);
|
||||||
|
if (aIID.Equals(kITableRowGroupIID)) {
|
||||||
|
*aInstancePtr = (void*)this;
|
||||||
|
return NS_OK;
|
||||||
|
} else {
|
||||||
|
return nsHTMLContainerFrame::QueryInterface(aIID, aInstancePtr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
NS_METHOD nsTableRowGroupFrame::GetRowCount(PRInt32 &aCount)
|
NS_METHOD nsTableRowGroupFrame::GetRowCount(PRInt32 &aCount)
|
||||||
{
|
{
|
||||||
// init out-param
|
// init out-param
|
||||||
|
|
|
@ -25,6 +25,10 @@
|
||||||
class nsTableRowFrame;
|
class nsTableRowFrame;
|
||||||
struct RowGroupReflowState;
|
struct RowGroupReflowState;
|
||||||
|
|
||||||
|
#define NS_ITABLEROWGROUPFRAME_IID \
|
||||||
|
{ 0xe940e7bc, 0xb534, 0x11d2, \
|
||||||
|
{ 0x95, 0xa2, 0x0, 0x60, 0xb0, 0xc3, 0x44, 0x14 } }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* nsTableRowGroupFrame is the frame that maps row groups
|
* nsTableRowGroupFrame is the frame that maps row groups
|
||||||
* (HTML tags THEAD, TFOOT, and TBODY). This class cannot be reused
|
* (HTML tags THEAD, TFOOT, and TBODY). This class cannot be reused
|
||||||
|
@ -50,6 +54,8 @@ public:
|
||||||
friend nsresult
|
friend nsresult
|
||||||
NS_NewTableRowGroupFrame(nsIFrame*& aResult);
|
NS_NewTableRowGroupFrame(nsIFrame*& aResult);
|
||||||
|
|
||||||
|
NS_METHOD QueryInterface(const nsIID& aIID, void** aInstancePtr);
|
||||||
|
|
||||||
NS_IMETHOD SetInitialChildList(nsIPresContext& aPresContext,
|
NS_IMETHOD SetInitialChildList(nsIPresContext& aPresContext,
|
||||||
nsIAtom* aListName,
|
nsIAtom* aListName,
|
||||||
nsIFrame* aChildList);
|
nsIFrame* aChildList);
|
||||||
|
|
|
@ -170,5 +170,47 @@ column widths and collapsing borders.</CAPTION>
|
||||||
<CAPTION ALIGN=BOTTOM>Table 5 has a scrolling tbody.</CAPTION>
|
<CAPTION ALIGN=BOTTOM>Table 5 has a scrolling tbody.</CAPTION>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
<BR>
|
||||||
|
This is a table formed from a list with display of table-row and
|
||||||
|
list items with display of table-cell.
|
||||||
|
<DIV style="background-color: orange; width: 230px;">
|
||||||
|
<UL style="display: table-row;">
|
||||||
|
<LI style="display: table-cell;">ONE</LI>
|
||||||
|
<LI style="display: table-cell;">TWO</LI>
|
||||||
|
<LI style="display: table-cell;">THREE</LI>
|
||||||
|
<LI style="display: table-cell;">FOUR</LI>
|
||||||
|
<LI style="display: table-cell;">FIVE</LI>
|
||||||
|
</UL>
|
||||||
|
</DIV>
|
||||||
|
<BR>
|
||||||
|
|
||||||
|
This is a table formed from a list with display of table-row-group and
|
||||||
|
list items with display of table-cell.
|
||||||
|
<BR>
|
||||||
|
<DIV style="background-color: orange; width: 100px;">
|
||||||
|
<UL style="display:table-row-group">
|
||||||
|
<LI style="display:table-cell;">ONE</LI>
|
||||||
|
<LI style="display:table-cell;">TWO</LI>
|
||||||
|
<LI style="display:table-cell;">THREE</LI>
|
||||||
|
<LI style="display:table-cell;">FOUR</LI>
|
||||||
|
<LI style="display:table-cell;">FIVE</LI>
|
||||||
|
<LI style="display:table-cell;">SIX</LI>
|
||||||
|
</UL>
|
||||||
|
</DIV>
|
||||||
|
<BR>
|
||||||
|
|
||||||
|
This is like the previous table plus the list's overflow property set
|
||||||
|
<DIV style="background-color:orange; width:50px; height: 50px;">
|
||||||
|
<UL style="display:table-row-group; overflow:auto; height: 50px;">
|
||||||
|
<LI style="display:table-cell;">ONE</LI>
|
||||||
|
<LI style="display:table-cell;">TWO</LI>
|
||||||
|
<LI style="display:table-cell;">THREE</LI>
|
||||||
|
<LI style="display:table-cell;">FOUR</LI>
|
||||||
|
<LI style="display:table-cell;">FIVE</LI>
|
||||||
|
<LI style="display:table-cell;">SIX</LI>
|
||||||
|
</UL>
|
||||||
|
</DIV>
|
||||||
|
<BR>
|
||||||
|
|
||||||
</BODY>
|
</BODY>
|
||||||
</HTML>
|
</HTML>
|
||||||
|
|
Загрузка…
Ссылка в новой задаче