зеркало из https://github.com/mozilla/gecko-dev.git
Bug 472769: Use snapToPixels when redrawing dirty background rectangles, to fix painting error in widgets at fractional positions. r+sr=roc
This commit is contained in:
Родитель
b068e39978
Коммит
0deabefc86
|
@ -1365,8 +1365,6 @@ nsCSSRendering::PaintBackgroundWithSC(nsPresContext* aPresContext,
|
||||||
|
|
||||||
// Compute the Thebes equivalent of the dirtyRect.
|
// Compute the Thebes equivalent of the dirtyRect.
|
||||||
gfxRect dirtyRectGfx(RectToGfxRect(dirtyRect, appUnitsPerPixel));
|
gfxRect dirtyRectGfx(RectToGfxRect(dirtyRect, appUnitsPerPixel));
|
||||||
dirtyRectGfx.Round();
|
|
||||||
dirtyRectGfx.Condition();
|
|
||||||
if (dirtyRectGfx.IsEmpty()) {
|
if (dirtyRectGfx.IsEmpty()) {
|
||||||
NS_WARNING("converted dirty rect should not be empty");
|
NS_WARNING("converted dirty rect should not be empty");
|
||||||
return;
|
return;
|
||||||
|
@ -1404,7 +1402,7 @@ nsCSSRendering::PaintBackgroundWithSC(nsPresContext* aPresContext,
|
||||||
// this far.)
|
// this far.)
|
||||||
if (!drawBackgroundImage) {
|
if (!drawBackgroundImage) {
|
||||||
ctx->NewPath();
|
ctx->NewPath();
|
||||||
ctx->Rectangle(dirtyRectGfx);
|
ctx->Rectangle(dirtyRectGfx, PR_TRUE);
|
||||||
ctx->Fill();
|
ctx->Fill();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1423,7 +1421,7 @@ nsCSSRendering::PaintBackgroundWithSC(nsPresContext* aPresContext,
|
||||||
!(status & imgIRequest::STATUS_SIZE_AVAILABLE)) {
|
!(status & imgIRequest::STATUS_SIZE_AVAILABLE)) {
|
||||||
if (drawBackgroundColor) {
|
if (drawBackgroundColor) {
|
||||||
ctx->NewPath();
|
ctx->NewPath();
|
||||||
ctx->Rectangle(dirtyRectGfx);
|
ctx->Rectangle(dirtyRectGfx, PR_TRUE);
|
||||||
ctx->Fill();
|
ctx->Fill();
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
@ -1531,7 +1529,7 @@ nsCSSRendering::PaintBackgroundWithSC(nsPresContext* aPresContext,
|
||||||
// even if the image isn't.
|
// even if the image isn't.
|
||||||
if (drawBackgroundColor) {
|
if (drawBackgroundColor) {
|
||||||
ctx->NewPath();
|
ctx->NewPath();
|
||||||
ctx->Rectangle(dirtyRectGfx);
|
ctx->Rectangle(dirtyRectGfx, PR_TRUE);
|
||||||
ctx->Fill();
|
ctx->Fill();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<style>
|
||||||
|
body { margin: 0px; }
|
||||||
|
div {
|
||||||
|
margin-top: 1px;
|
||||||
|
margin-left: 1px;
|
||||||
|
height: 100px;
|
||||||
|
width: 100px;
|
||||||
|
background: black;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body><div></div></body>
|
||||||
|
</html>
|
|
@ -0,0 +1,14 @@
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<style>
|
||||||
|
body { margin: 0px; }
|
||||||
|
div {
|
||||||
|
-moz-transform: translate(0.5px, 0.5px);
|
||||||
|
height: 100px;
|
||||||
|
width: 100px;
|
||||||
|
background: black;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body><div></div></body>
|
||||||
|
</html>
|
|
@ -0,0 +1,15 @@
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<style>
|
||||||
|
body { margin: 0px; }
|
||||||
|
div {
|
||||||
|
margin-top: 0.5px;
|
||||||
|
margin-left: 0.5px;
|
||||||
|
height: 100px;
|
||||||
|
width: 100px;
|
||||||
|
background: black;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body><div></div></body>
|
||||||
|
</html>
|
|
@ -0,0 +1,36 @@
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<style>
|
||||||
|
body { margin: 0px }
|
||||||
|
div.pt0 { -moz-transform:translateY(0.0px); }
|
||||||
|
div.pt1 { -moz-transform:translateY(0.1px); }
|
||||||
|
div.pt2 { -moz-transform:translateY(0.2px); }
|
||||||
|
div.pt3 { -moz-transform:translateY(0.3px); }
|
||||||
|
div.pt4 { -moz-transform:translateY(0.4px); }
|
||||||
|
div.pt5 { -moz-transform:translateY(0.5px); }
|
||||||
|
div.pt6 { -moz-transform:translateY(0.6px); }
|
||||||
|
div.pt7 { -moz-transform:translateY(0.7px); }
|
||||||
|
div.pt8 { -moz-transform:translateY(0.8px); }
|
||||||
|
div.pt9 { -moz-transform:translateY(0.9px); }
|
||||||
|
div.test {
|
||||||
|
border: 20px solid black;
|
||||||
|
width: 0px;
|
||||||
|
height: 0px;
|
||||||
|
display: inline-block;
|
||||||
|
margin-right: 4px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body
|
||||||
|
><div class="test pt0" ></div
|
||||||
|
><div class="test pt1" ></div
|
||||||
|
><div class="test pt2" ></div
|
||||||
|
><div class="test pt3" ></div
|
||||||
|
><div class="test pt4" ></div
|
||||||
|
><div class="test pt5" ></div
|
||||||
|
><div class="test pt6" ></div
|
||||||
|
><div class="test pt7" ></div
|
||||||
|
><div class="test pt8" ></div
|
||||||
|
><div class="test pt9" ></div
|
||||||
|
></body>
|
||||||
|
</html>
|
|
@ -0,0 +1,36 @@
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<style>
|
||||||
|
body { margin: 0px }
|
||||||
|
div.pt0 { -moz-transform:translateY(0.0px); }
|
||||||
|
div.pt1 { -moz-transform:translateY(0.1px); }
|
||||||
|
div.pt2 { -moz-transform:translateY(0.2px); }
|
||||||
|
div.pt3 { -moz-transform:translateY(0.3px); }
|
||||||
|
div.pt4 { -moz-transform:translateY(0.4px); }
|
||||||
|
div.pt5 { -moz-transform:translateY(0.5px); }
|
||||||
|
div.pt6 { -moz-transform:translateY(0.6px); }
|
||||||
|
div.pt7 { -moz-transform:translateY(0.7px); }
|
||||||
|
div.pt8 { -moz-transform:translateY(0.8px); }
|
||||||
|
div.pt9 { -moz-transform:translateY(0.9px); }
|
||||||
|
div.test {
|
||||||
|
background: black;
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
display: inline-block;
|
||||||
|
margin-right: 4px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body
|
||||||
|
><div class="test pt0" ></div
|
||||||
|
><div class="test pt1" ></div
|
||||||
|
><div class="test pt2" ></div
|
||||||
|
><div class="test pt3" ></div
|
||||||
|
><div class="test pt4" ></div
|
||||||
|
><div class="test pt5" ></div
|
||||||
|
><div class="test pt6" ></div
|
||||||
|
><div class="test pt7" ></div
|
||||||
|
><div class="test pt8" ></div
|
||||||
|
><div class="test pt9" ></div
|
||||||
|
></body>
|
||||||
|
</html>
|
|
@ -0,0 +1,35 @@
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<style>
|
||||||
|
body { margin: 0px }
|
||||||
|
div.pt0 { -moz-transform:translateX(0.0px); }
|
||||||
|
div.pt1 { -moz-transform:translateX(0.1px); }
|
||||||
|
div.pt2 { -moz-transform:translateX(0.2px); }
|
||||||
|
div.pt3 { -moz-transform:translateX(0.3px); }
|
||||||
|
div.pt4 { -moz-transform:translateX(0.4px); }
|
||||||
|
div.pt5 { -moz-transform:translateX(0.5px); }
|
||||||
|
div.pt6 { -moz-transform:translateX(0.6px); }
|
||||||
|
div.pt7 { -moz-transform:translateX(0.7px); }
|
||||||
|
div.pt8 { -moz-transform:translateX(0.8px); }
|
||||||
|
div.pt9 { -moz-transform:translateX(0.9px); }
|
||||||
|
div.test {
|
||||||
|
border: 20px solid black;
|
||||||
|
width: 0px;
|
||||||
|
height: 0px;
|
||||||
|
margin-bottom: 4px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body
|
||||||
|
><div class="test pt0" ></div
|
||||||
|
><div class="test pt1" ></div
|
||||||
|
><div class="test pt2" ></div
|
||||||
|
><div class="test pt3" ></div
|
||||||
|
><div class="test pt4" ></div
|
||||||
|
><div class="test pt5" ></div
|
||||||
|
><div class="test pt6" ></div
|
||||||
|
><div class="test pt7" ></div
|
||||||
|
><div class="test pt8" ></div
|
||||||
|
><div class="test pt9" ></div
|
||||||
|
></body>
|
||||||
|
</html>
|
|
@ -0,0 +1,35 @@
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<style>
|
||||||
|
body { margin: 0px }
|
||||||
|
div.pt0 { -moz-transform:translateX(0.0px); }
|
||||||
|
div.pt1 { -moz-transform:translateX(0.1px); }
|
||||||
|
div.pt2 { -moz-transform:translateX(0.2px); }
|
||||||
|
div.pt3 { -moz-transform:translateX(0.3px); }
|
||||||
|
div.pt4 { -moz-transform:translateX(0.4px); }
|
||||||
|
div.pt5 { -moz-transform:translateX(0.5px); }
|
||||||
|
div.pt6 { -moz-transform:translateX(0.6px); }
|
||||||
|
div.pt7 { -moz-transform:translateX(0.7px); }
|
||||||
|
div.pt8 { -moz-transform:translateX(0.8px); }
|
||||||
|
div.pt9 { -moz-transform:translateX(0.9px); }
|
||||||
|
div.test {
|
||||||
|
background: black;
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
margin-bottom: 4px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body
|
||||||
|
><div class="test pt0" ></div
|
||||||
|
><div class="test pt1" ></div
|
||||||
|
><div class="test pt2" ></div
|
||||||
|
><div class="test pt3" ></div
|
||||||
|
><div class="test pt4" ></div
|
||||||
|
><div class="test pt5" ></div
|
||||||
|
><div class="test pt6" ></div
|
||||||
|
><div class="test pt7" ></div
|
||||||
|
><div class="test pt8" ></div
|
||||||
|
><div class="test pt9" ></div
|
||||||
|
></body>
|
||||||
|
</html>
|
|
@ -1032,6 +1032,10 @@ fails == 461512-1.html 461512-1-ref.html # Bug 461512
|
||||||
== 471356-1.html 471356-1-ref.html
|
== 471356-1.html 471356-1-ref.html
|
||||||
== 471594-1.xhtml 471594-1-ref.html
|
== 471594-1.xhtml 471594-1-ref.html
|
||||||
== 472500-1.xul 472500-1-ref.xul
|
== 472500-1.xul 472500-1-ref.xul
|
||||||
|
== 472769-1a.html 472769-1-ref.html
|
||||||
|
== 472769-1b.html 472769-1-ref.html
|
||||||
|
== 472769-2.html 472769-2-ref.html
|
||||||
|
== 472769-3.html 472769-3-ref.html
|
||||||
== 473847-1.xul 473847-1-ref.xul
|
== 473847-1.xul 473847-1-ref.xul
|
||||||
== 474336-1.xul 474336-1-ref.xul
|
== 474336-1.xul 474336-1-ref.xul
|
||||||
== 474417-1.html 474417-1-ref.html
|
== 474417-1.html 474417-1-ref.html
|
||||||
|
|
Загрузка…
Ссылка в новой задаче