mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 922934 - Hide Metro context menus on touchstart, scroll, or mousedown [r=emtwo]
This commit is contained in:
parent
e048ae4084
commit
b09a4177a9
@ -432,9 +432,10 @@ MenuPopup.prototype = {
|
|||||||
let deferred = Promise.defer();
|
let deferred = Promise.defer();
|
||||||
|
|
||||||
window.addEventListener("keypress", this, true);
|
window.addEventListener("keypress", this, true);
|
||||||
window.addEventListener("click", this, true);
|
window.addEventListener("mousedown", this, true);
|
||||||
|
window.addEventListener("touchstart", this, true);
|
||||||
|
window.addEventListener("scroll", this, true);
|
||||||
Elements.stack.addEventListener("PopupChanged", this, false);
|
Elements.stack.addEventListener("PopupChanged", this, false);
|
||||||
Elements.browsers.addEventListener("PanBegin", this, false);
|
|
||||||
|
|
||||||
this._panel.hidden = false;
|
this._panel.hidden = false;
|
||||||
let popupFrom = !aPositionOptions.bottomAligned ? "above" : "below";
|
let popupFrom = !aPositionOptions.bottomAligned ? "above" : "below";
|
||||||
@ -461,9 +462,10 @@ MenuPopup.prototype = {
|
|||||||
let deferred = Promise.defer();
|
let deferred = Promise.defer();
|
||||||
|
|
||||||
window.removeEventListener("keypress", this, true);
|
window.removeEventListener("keypress", this, true);
|
||||||
window.removeEventListener("click", this, true);
|
window.removeEventListener("mousedown", this, true);
|
||||||
|
window.removeEventListener("touchstart", this, true);
|
||||||
|
window.removeEventListener("scroll", this, true);
|
||||||
Elements.stack.removeEventListener("PopupChanged", this, false);
|
Elements.stack.removeEventListener("PopupChanged", this, false);
|
||||||
Elements.browsers.removeEventListener("PanBegin", this, false);
|
|
||||||
|
|
||||||
let self = this;
|
let self = this;
|
||||||
this._panel.addEventListener("transitionend", function popuphidden() {
|
this._panel.addEventListener("transitionend", function popuphidden() {
|
||||||
@ -499,7 +501,9 @@ MenuPopup.prototype = {
|
|||||||
this.hide();
|
this.hide();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "click":
|
case "mousedown":
|
||||||
|
case "touchstart":
|
||||||
|
case "scroll":
|
||||||
if (!this._popup.contains(aEvent.target)) {
|
if (!this._popup.contains(aEvent.target)) {
|
||||||
aEvent.stopPropagation();
|
aEvent.stopPropagation();
|
||||||
this.hide();
|
this.hide();
|
||||||
@ -517,9 +521,6 @@ MenuPopup.prototype = {
|
|||||||
this.hide();
|
this.hide();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "PanBegin":
|
|
||||||
this.hide();
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -98,9 +98,11 @@ gTests.push({
|
|||||||
"context-copy-link"]);
|
"context-copy-link"]);
|
||||||
|
|
||||||
promise = waitForEvent(document, "popuphidden");
|
promise = waitForEvent(document, "popuphidden");
|
||||||
ContextMenuUI.hide();
|
win.scrollBy(0, 1);
|
||||||
yield promise;
|
let hidden = yield promise;
|
||||||
|
ok(hidden && !(hidden instanceof Error), "scrolling hides the context menu");
|
||||||
win.getSelection().removeAllRanges();
|
win.getSelection().removeAllRanges();
|
||||||
|
win.scrollBy(0, -1);
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
// Context menu in content on a link
|
// Context menu in content on a link
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
<br />
|
<br />
|
||||||
<br />
|
<br />
|
||||||
<br />
|
<br />
|
||||||
<div style="margin: 0; padding: 5px;">
|
<div style="margin: 0; padding: 5px; margin-bottom: 9999px;">
|
||||||
<span id="text4">hello, I'm sorry but I must be going.</span>
|
<span id="text4">hello, I'm sorry but I must be going.</span>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
@ -91,6 +91,7 @@ gTests.push({
|
|||||||
tearDown: setUpAndTearDown,
|
tearDown: setUpAndTearDown,
|
||||||
run: function test() {
|
run: function test() {
|
||||||
gInput.selectionStart = gInput.selectionEnd = gInput.value.length;
|
gInput.selectionStart = gInput.selectionEnd = gInput.value.length;
|
||||||
|
yield waitForEvent(window, "scroll");
|
||||||
|
|
||||||
let promise = waitForEvent(document, "popupshown");
|
let promise = waitForEvent(document, "popupshown");
|
||||||
sendContextMenuClick(190, 17);
|
sendContextMenuClick(190, 17);
|
||||||
@ -137,6 +138,7 @@ gTests.push({
|
|||||||
tearDown: setUpAndTearDown,
|
tearDown: setUpAndTearDown,
|
||||||
run: function test() {
|
run: function test() {
|
||||||
gInput.selectionStart = gInput.selectionEnd = 0;
|
gInput.selectionStart = gInput.selectionEnd = 0;
|
||||||
|
yield waitForEvent(window, "scroll");
|
||||||
|
|
||||||
let promise = waitForEvent(document, "popupshown");
|
let promise = waitForEvent(document, "popupshown");
|
||||||
sendContextMenuClick(230, 17);
|
sendContextMenuClick(230, 17);
|
||||||
|
Loading…
Reference in New Issue
Block a user