Bug 533845 - Mouse events don't work in content iframe, if iframe is inside a xul panel, r=roc
--HG-- extra : rebase_source : 8270dcfedb49c555a5deb6bb7a29e4a500cd7a90
This commit is contained in:
Родитель
f983b39653
Коммит
cd157ff312
|
@ -6131,10 +6131,13 @@ PresShell::HandleEvent(nsIView *aView,
|
|||
nsTArray<nsIFrame*> popups = pm->GetVisiblePopups();
|
||||
PRUint32 i;
|
||||
// Search from top to bottom
|
||||
nsIDocument* doc = frame->PresContext()->GetPresShell()->GetDocument();
|
||||
for (i = 0; i < popups.Length(); i++) {
|
||||
nsIFrame* popup = popups[i];
|
||||
if (popup->GetOverflowRect().Contains(
|
||||
nsLayoutUtils::GetEventCoordinatesRelativeTo(aEvent, popup))) {
|
||||
nsLayoutUtils::GetEventCoordinatesRelativeTo(aEvent, popup)) &&
|
||||
!nsContentUtils::ContentIsCrossDocDescendantOf(
|
||||
doc, popup->GetContent())) {
|
||||
// The event should target the popup
|
||||
frame = popup;
|
||||
break;
|
||||
|
|
|
@ -54,6 +54,7 @@ _CHROME_FILES = \
|
|||
test_bug514660.xul \
|
||||
test_printpreview.xul \
|
||||
printpreview_helper.xul \
|
||||
test_bug533845.xul \
|
||||
$(NULL)
|
||||
|
||||
libs:: $(_CHROME_FILES)
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
<?xml version="1.0"?>
|
||||
<?xml-stylesheet type="text/css" href="chrome://global/skin"?>
|
||||
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
|
||||
type="text/css"?>
|
||||
<!--
|
||||
https://bugzilla.mozilla.org/show_bug.cgi?id=533845
|
||||
-->
|
||||
<window title="Mozilla Bug 533845"
|
||||
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
||||
onload="doTest()">
|
||||
<script type="application/javascript"
|
||||
src="chrome://mochikit/content/MochiKit/packed.js"></script>
|
||||
<script type="application/javascript"
|
||||
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
|
||||
<panel id="panel" width="50" height="50" onpopupshown="continueTest()">
|
||||
<iframe type="content" id="contentFrame" src="data:text/html,<html><body onclick='document.body.textContent=1>This is a panel!</body></html>" width="500" height="500"/>
|
||||
</panel>
|
||||
<body xmlns="http://www.w3.org/1999/xhtml">
|
||||
<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=533845"
|
||||
target="_blank">Mozilla Bug 533845</a>
|
||||
</body>
|
||||
<!-- test code goes here -->
|
||||
<script type="application/javascript">
|
||||
<![CDATA[
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
|
||||
function doTest() {
|
||||
document.getElementById('panel').showPopup();
|
||||
}
|
||||
|
||||
function continueTest() {
|
||||
var ifrwindow = document.getElementById("contentFrame").contentWindow;
|
||||
ifrwindow.focus();
|
||||
var utils = ifrwindow.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
|
||||
.getInterface(Components.interfaces.nsIDOMWindowUtils);
|
||||
utils.sendMouseEvent("mousedown", 1, 1, 0, 1, 0);
|
||||
utils.sendMouseEvent("mouseup", 1, 1, 0, 1, 0);
|
||||
is(ifrwindow.document.body.textContent, 1, "Should have got a click event!");
|
||||
SimpleTest.finish();
|
||||
}
|
||||
|
||||
]]></script>
|
||||
</window>
|
Загрузка…
Ссылка в новой задаче