mirror of
https://github.com/gryf/pentadactyl-pm.git
synced 2025-12-21 08:27:59 +01:00
Dispatch events from buffer.followLink as trusted events. Closes issue #124.
This commit is contained in:
@@ -527,7 +527,7 @@ const Buffer = Module("buffer", {
|
||||
try {
|
||||
let [x, y] = elem.getAttribute("coords").split(",").map(parseFloat);
|
||||
|
||||
elem.dispatchEvent(events.create(elem.ownerDocument, "mouseover", { screenX: x, screenY: y }));
|
||||
events.dispatch(elem, events.create(elem.ownerDocument, "mouseover", { screenX: x, screenY: y }));
|
||||
}
|
||||
catch (e) {}
|
||||
}
|
||||
@@ -608,8 +608,7 @@ const Buffer = Module("buffer", {
|
||||
followLink: function (elem, where) {
|
||||
let doc = elem.ownerDocument;
|
||||
let view = doc.defaultView;
|
||||
let offsetX = 1;
|
||||
let offsetY = 1;
|
||||
let { left: offsetX, top: offsetY } = elem.getBoundingClientRect();
|
||||
|
||||
if (isinstance(elem, [HTMLFrameElement, HTMLIFrameElement]))
|
||||
return buffer.focusElement(elem);
|
||||
@@ -646,10 +645,10 @@ const Buffer = Module("buffer", {
|
||||
|
||||
prefs.withContext(function () {
|
||||
prefs.set("browser.tabs.loadInBackground", true);
|
||||
["mousedown", "mouseup", "click"].forEach(function (event) {
|
||||
elem.dispatchEvent(events.create(doc, event, {
|
||||
["mousedown", "mouseup"].forEach(function (event) {
|
||||
events.dispatch(elem, events.create(doc, event, {
|
||||
screenX: offsetX, screenY: offsetY,
|
||||
ctrlKey: ctrlKey, shiftKey: shiftKey, metaKey: ctrlKey
|
||||
ctrlKey: ctrlKey, shiftKey: shiftKey, metaKey: false
|
||||
}));
|
||||
});
|
||||
});
|
||||
|
||||
@@ -56,7 +56,7 @@ const Editor = Module("editor", {
|
||||
elem.scrollLeft = curLeft;
|
||||
let event = elem.ownerDocument.createEvent("Event");
|
||||
event.initEvent("input", true, false);
|
||||
elem.dispatchEvent(event);
|
||||
events.dispatch(elem, event);
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
@@ -289,7 +289,7 @@ const Events = Module("events", {
|
||||
let duringFeed = this.duringFeed;
|
||||
this.duringFeed = [];
|
||||
for (let [, evt] in Iterator(duringFeed))
|
||||
evt.target.dispatchEvent(evt);
|
||||
events.dispatch(evt.target, evt);
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -358,6 +358,18 @@ const Events = Module("events", {
|
||||
return events.fromString(keys).map(events.closure.toString).join("");
|
||||
},
|
||||
|
||||
/**
|
||||
* Dispatches an event to an element as if it were a native event.
|
||||
*
|
||||
* @param {Node} target The DOM node to which to dispatch the event.
|
||||
* @param {Event} event The event to dispatch.
|
||||
*/
|
||||
dispatch: function (target, event) {
|
||||
return target.ownerDocument.defaultView
|
||||
.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils)
|
||||
.dispatchDOMEventViaPresShell(target, event, true);
|
||||
},
|
||||
|
||||
/**
|
||||
* Converts an event string into an array of pseudo-event objects.
|
||||
*
|
||||
|
||||
@@ -1046,7 +1046,7 @@ const Tabs = Module("tabs", {
|
||||
"stringlist", "tab",
|
||||
{
|
||||
setter: function (values) {
|
||||
let [open, restriction] = [1, 0];
|
||||
let open = 1, restriction = 0;
|
||||
for (let [, opt] in Iterator(values)) {
|
||||
if (opt == "tab")
|
||||
open = 3;
|
||||
|
||||
Reference in New Issue
Block a user