Bug 770106. nsDisplayButtonBorderBackground should use the button's border-box for hit-testing, not its visual overflow area. r=mattwoodrow

This commit is contained in:
Robert O'Callahan 2012-09-28 23:19:38 +12:00
parent b393ee686c
commit a350224ed9
3 changed files with 27 additions and 1 deletions

View File

@ -147,6 +147,7 @@ MOCHITEST_FILES = \
test_bug725426.html \
test_bug731777.html \
test_bug761572.html \
test_bug770106.html \
test_maxLineBoxWidth.html \
$(NULL)

View File

@ -0,0 +1,24 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Test for Bug 770106</title>
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
</head>
<body>
<span id="s">Hello</span>
<button><div style="pointer-events:none; position:relative; width:100px; background:yellow; left:-100px;">Kitty</div></button>
<pre id="test">
<script type="application/javascript">
/** Test for Bug 770106 **/
var sRect = s.getBoundingClientRect();
is(document.elementFromPoint(sRect.left + sRect.width/2, sRect.top + sRect.height/2),
document.getElementById("s"), "Correct object selected");
</script>
</pre>
</body>
</html>

View File

@ -126,7 +126,8 @@ private:
nsRect
nsDisplayButtonBorderBackground::GetBounds(nsDisplayListBuilder* aBuilder, bool* aSnap) {
*aSnap = false;
return mFrame->GetVisualOverflowRectRelativeToSelf() + ToReferenceFrame();
return aBuilder->IsForEventDelivery() ? nsRect(ToReferenceFrame(), mFrame->GetSize())
: mFrame->GetVisualOverflowRectRelativeToSelf() + ToReferenceFrame();
}
class nsDisplayButtonForeground : public nsDisplayItem {