mirror of
https://github.com/gryf/pentadactyl-pm.git
synced 2025-12-21 10:37: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 {
|
try {
|
||||||
let [x, y] = elem.getAttribute("coords").split(",").map(parseFloat);
|
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) {}
|
catch (e) {}
|
||||||
}
|
}
|
||||||
@@ -608,8 +608,7 @@ const Buffer = Module("buffer", {
|
|||||||
followLink: function (elem, where) {
|
followLink: function (elem, where) {
|
||||||
let doc = elem.ownerDocument;
|
let doc = elem.ownerDocument;
|
||||||
let view = doc.defaultView;
|
let view = doc.defaultView;
|
||||||
let offsetX = 1;
|
let { left: offsetX, top: offsetY } = elem.getBoundingClientRect();
|
||||||
let offsetY = 1;
|
|
||||||
|
|
||||||
if (isinstance(elem, [HTMLFrameElement, HTMLIFrameElement]))
|
if (isinstance(elem, [HTMLFrameElement, HTMLIFrameElement]))
|
||||||
return buffer.focusElement(elem);
|
return buffer.focusElement(elem);
|
||||||
@@ -646,10 +645,10 @@ const Buffer = Module("buffer", {
|
|||||||
|
|
||||||
prefs.withContext(function () {
|
prefs.withContext(function () {
|
||||||
prefs.set("browser.tabs.loadInBackground", true);
|
prefs.set("browser.tabs.loadInBackground", true);
|
||||||
["mousedown", "mouseup", "click"].forEach(function (event) {
|
["mousedown", "mouseup"].forEach(function (event) {
|
||||||
elem.dispatchEvent(events.create(doc, event, {
|
events.dispatch(elem, events.create(doc, event, {
|
||||||
screenX: offsetX, screenY: offsetY,
|
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;
|
elem.scrollLeft = curLeft;
|
||||||
let event = elem.ownerDocument.createEvent("Event");
|
let event = elem.ownerDocument.createEvent("Event");
|
||||||
event.initEvent("input", true, false);
|
event.initEvent("input", true, false);
|
||||||
elem.dispatchEvent(event);
|
events.dispatch(elem, event);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -289,7 +289,7 @@ const Events = Module("events", {
|
|||||||
let duringFeed = this.duringFeed;
|
let duringFeed = this.duringFeed;
|
||||||
this.duringFeed = [];
|
this.duringFeed = [];
|
||||||
for (let [, evt] in Iterator(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("");
|
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.
|
* Converts an event string into an array of pseudo-event objects.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1046,7 +1046,7 @@ const Tabs = Module("tabs", {
|
|||||||
"stringlist", "tab",
|
"stringlist", "tab",
|
||||||
{
|
{
|
||||||
setter: function (values) {
|
setter: function (values) {
|
||||||
let [open, restriction] = [1, 0];
|
let open = 1, restriction = 0;
|
||||||
for (let [, opt] in Iterator(values)) {
|
for (let [, opt] in Iterator(values)) {
|
||||||
if (opt == "tab")
|
if (opt == "tab")
|
||||||
open = 3;
|
open = 3;
|
||||||
|
|||||||
Reference in New Issue
Block a user