forked from mirrors/gecko-dev
This patch changes the direction context the dir=bottomend/bottomstart value from the CSS direction property value to locale dir, with the help from :-moz-locale-dir(rtl) selector. The change is justified because: - In the web content, we have since rely on the nsScrollFrame to set the direction explicity. - XUL window should always render in the application locale; it should be fine to disregard direction property set in the local document DOM teee, as it is unlikely to be differ than the locale dir. This remove the one last bit of JavaScript from the resizer binding. MozReview-Commit-ID: AweJ5GARNUE --HG-- extra : rebase_source : 17772435a1f9cfdbc7289eb41d69e5922ffdb302 extra : source : edfba1676e4bb74e32cc987d851f7a6b12abef3b
113 lines
4.1 KiB
XML
113 lines
4.1 KiB
XML
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
|
|
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
|
screenX="200" screenY="200" width="300" height="300"
|
|
onload="setTimeout(doTest, 0)">
|
|
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script>
|
|
<script><![CDATA[
|
|
var is = window.opener.SimpleTest.is;
|
|
|
|
function doTest() {
|
|
// from test_resizer.xul
|
|
var expectX = 200;
|
|
var expectY = 200;
|
|
var expectXMost = 500;
|
|
var expectYMost = 500;
|
|
var screenScale = expectX/window.screenX;
|
|
var root = document.documentElement;
|
|
|
|
var oldScreenX = window.screenX;
|
|
var oldScreenY = window.screenY;
|
|
var oldWidth = window.outerWidth;
|
|
var oldHeight = window.outerHeight;
|
|
|
|
function testResizer(dx, dy) {
|
|
var offset = 20;
|
|
var scale = 5;
|
|
// target the centre of the resizer
|
|
var offsetX = window.innerWidth/2 + (window.innerWidth/3)*dx;
|
|
var offsetY = window.innerHeight/2 + (window.innerHeight/3)*dy;
|
|
|
|
for (var mouseX = -1; mouseX <= 1; ++mouseX) {
|
|
for (var mouseY = -1; mouseY <= 1; ++mouseY) {
|
|
var newExpectX = expectX;
|
|
var newExpectXMost = expectXMost;
|
|
var newExpectY = expectY;
|
|
var newExpectYMost = expectYMost;
|
|
if (dx < 0) {
|
|
newExpectX += mouseX*scale;
|
|
} else if (dx > 0) {
|
|
newExpectXMost += mouseX*scale;
|
|
}
|
|
if (dy < 0) {
|
|
newExpectY += mouseY*scale;
|
|
} else if (dy > 0) {
|
|
newExpectYMost += mouseY*scale;
|
|
}
|
|
|
|
synthesizeMouse(root, offsetX, offsetY, { type:"mousedown" });
|
|
synthesizeMouse(root, offsetX + mouseX*scale, offsetY + mouseY*scale, { type:"mousemove" });
|
|
is(window.screenX*screenScale, newExpectX,
|
|
"Bad x for " + dx + "," + dy + " moving " + mouseX + "," + mouseY);
|
|
is(window.screenY*screenScale, newExpectY,
|
|
"Bad y for " + dx + "," + dy + " moving " + mouseX + "," + mouseY);
|
|
is(window.outerWidth, newExpectXMost - newExpectX,
|
|
"Bad width for " + dx + "," + dy + " moving " + mouseX + "," + mouseY);
|
|
is(window.outerHeight, newExpectYMost - newExpectY,
|
|
"Bad height for " + dx + "," + dy + " moving " + mouseX + "," + mouseY);
|
|
|
|
// move it back before we release! Adjust for any window movement
|
|
synthesizeMouse(root, offsetX - (newExpectX - expectX),
|
|
offsetY - (newExpectY - expectY), { type:"mousemove" });
|
|
synthesizeMouse(root, offsetX, offsetY, { type:"mouseup" });
|
|
}
|
|
}
|
|
}
|
|
|
|
testResizer(-1, -1);
|
|
testResizer(-1, 0);
|
|
testResizer(-1, 1);
|
|
testResizer(0, -1);
|
|
testResizer(0, 1);
|
|
testResizer(1, -1);
|
|
testResizer(1, 0);
|
|
testResizer(1, 1);
|
|
|
|
var resizers = document.getElementsByTagName("resizer");
|
|
Array.forEach(resizers, function (element) {
|
|
is(getComputedStyle(element, "").cursor,
|
|
element.getAttribute("expectedcursor"),
|
|
"cursor for " + element.dir);
|
|
});
|
|
|
|
// now check the cursors in rtl. The bottomend resizer
|
|
// should be reversed
|
|
document.documentElement.setAttribute("localedir", "rtl");
|
|
Array.forEach(resizers, function (element) {
|
|
is(getComputedStyle(element, "").cursor,
|
|
element.dir == "bottomend" ? "sw-resize" :
|
|
element.getAttribute("expectedcursor"),
|
|
"cursor for " + element.dir);
|
|
});
|
|
|
|
window.close();
|
|
window.opener.lastResizerTest();
|
|
}
|
|
]]></script>
|
|
<hbox id="container" flex="1">
|
|
<vbox flex="1">
|
|
<resizer dir="topleft" expectedcursor="nw-resize" flex="1"/>
|
|
<resizer dir="left" expectedcursor="ew-resize" flex="1"/>
|
|
<resizer dir="bottomleft" expectedcursor="sw-resize" flex="1"/>
|
|
</vbox>
|
|
<vbox flex="1">
|
|
<resizer dir="top" expectedcursor="ns-resize" flex="1"/>
|
|
<resizer id="bottomend" dir="bottomend" expectedcursor="se-resize" flex="1"/>
|
|
<resizer dir="bottom" expectedcursor="ns-resize" flex="1"/>
|
|
</vbox>
|
|
<vbox flex="1">
|
|
<resizer dir="topright" expectedcursor="ne-resize" flex="1"/>
|
|
<resizer dir="right" expectedcursor="ew-resize" flex="1"/>
|
|
<resizer dir="bottomright" expectedcursor="se-resize" flex="1"/>
|
|
</vbox>
|
|
</hbox>
|
|
</window>
|