Bug 722777 - Tables with 'transform' property set don't act as abs-pos/fixed-pos containers; r=roc

--HG--
rename : layout/reftests/transform/abspos-1a.html => layout/reftests/transform/abspos-1f.html
rename : layout/reftests/transform/abspos-1b.html => layout/reftests/transform/abspos-1g.html
This commit is contained in:
Aryeh Gregor 2012-02-10 21:05:00 +00:00
Родитель b3fe67f1c6
Коммит ae42fdb086
12 изменённых файлов: 79 добавлений и 0 удалений

Просмотреть файл

@ -0,0 +1,12 @@
<html>
<head>
</head>
<body>
<div style="width: 100px; height: 200px; -moz-transform: translate(50px, 50px); background-color: gold; display: table">
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
<div style="background-color: navy; color: gold; width: 200px; height: 100px; position: absolute; left: 50px; top: 100px;">
0 1 2 3 4 5 6 7 8 9
</div>
</div>
</body>
</html>

Просмотреть файл

@ -0,0 +1,12 @@
<html>
<head>
</head>
<body>
<div style="width: 100px; height: 200px; -moz-transform: translate(50px, 50px) ;background-color: gold;display: inline-table">
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
<div style="background-color: navy; color: gold; width: 200px; height: 100px; position: fixed; left: 50px; top: 100px;">
0 1 2 3 4 5 6 7 8 9
</div>
</div>
</body>
</html>

Просмотреть файл

@ -66,6 +66,8 @@ random == rotate-1f.html rotate-1-ref.html
== abspos-1c.html abspos-1-ref.html
== abspos-1d.html abspos-1-ref.html
!= abspos-1e.html abspos-1-ref.html
== abspos-1f.html abspos-1-ref.html
== abspos-1g.html abspos-1-ref.html
# Origin can use "top" "right" etc.
== origin-name-1a.html origin-name-1-ref.html
== origin-name-1b.html origin-name-1-ref.html
@ -110,3 +112,9 @@ fails-if(Android) == stresstest-1.html stresstest-1-ref.html
# Bugs
== 601894-1.html 601894-ref.html
== 601894-2.html 601894-ref.html
# Bug 722777
== table-1a.html table-1-ref.html
== table-1b.html table-1-ref.html
== table-1c.html table-1-ref.html
== table-2a.html table-2-ref.html
== table-2b.html table-2-ref.html

Просмотреть файл

@ -0,0 +1,7 @@
<!doctype html>
<div style="-moz-transform:translate(200px) rotate(180deg);-moz-transform-origin:left">
<table>
<caption>Hello</caption>
<tr><td>there!
</table>
</div>

Просмотреть файл

@ -0,0 +1,5 @@
<!doctype html>
<table style="-moz-transform:translate(200px) rotate(180deg);-moz-transform-origin:left">
<caption>Hello</caption>
<tr><td>there!
</table>

Просмотреть файл

@ -0,0 +1,5 @@
<!doctype html>
<table style="display:inline-table;-moz-transform:translate(200px) rotate(180deg);-moz-transform-origin:left">
<caption>Hello</caption>
<tr><td>there!
</table>

Просмотреть файл

@ -0,0 +1,7 @@
<!doctype html>
<div style="-moz-transform:translateX(200px) rotate(180deg) translateY(-100%);-moz-transform-origin:left">
<table style="-moz-transform:translateY(100%)">
<caption>Hello</caption>
<tr><td>there!
</table>
</div>

Просмотреть файл

@ -0,0 +1,6 @@
<!doctype html>
<div style="-moz-transform:translate(200px) rotate(180deg);-moz-transform-origin:left">
<table>
<caption style=caption-side:bottom>there!</caption>
<tr><td>Hello
</table>

Просмотреть файл

@ -0,0 +1,5 @@
<!doctype html>
<table style="-moz-transform:translate(200px) rotate(180deg);-moz-transform-origin:left">
<caption style=caption-side:bottom>there!</caption>
<tr><td>Hello
</table>

Просмотреть файл

@ -0,0 +1,5 @@
<!doctype html>
<table style="display:inline-table;-moz-transform:translate(200px) rotate(180deg);-moz-transform-origin:left">
<caption style=caption-side:bottom>there!</caption>
<tr><td>Hello
</table>

Просмотреть файл

@ -74,6 +74,9 @@
page-break-after: inherit;
vertical-align: inherit; /* needed for inline-table */
line-height: inherit; /* needed for vertical-align on inline-table */
/* Bug 722777 */
-moz-transform: inherit;
-moz-transform-origin: inherit;
}
*|*::-moz-table-row {

Просмотреть файл

@ -213,6 +213,10 @@ nsTableFrame::Init(nsIContent* aContent,
const nsStyleTableBorder* tableStyle = GetStyleTableBorder();
bool borderCollapse = (NS_STYLE_BORDER_COLLAPSE == tableStyle->mBorderCollapse);
SetBorderCollapse(borderCollapse);
// Transforms need to affect the outer frame, not the inner frame (bug 722777)
mState &= ~NS_FRAME_MAY_BE_TRANSFORMED;
// Create the cell map if this frame is the first-in-flow.
if (!aPrevInFlow) {
mCellMap = new nsTableCellMap(*this, borderCollapse);