1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2025-12-21 21:47:59 +01:00

Some small changes for the sake of plugins.

This commit is contained in:
Kris Maglione
2010-12-26 21:54:17 -05:00
parent 8c64d0ec44
commit 8a5eb69492
3 changed files with 40 additions and 15 deletions

View File

@@ -1217,6 +1217,13 @@ var Buffer = Module("buffer", {
return elem || doc.body || doc.documentElement; return elem || doc.body || doc.documentElement;
}, },
scrollTo: function scrollTo(elem, left, top) {
if (left != null)
elem.scrollLeft = left;
if (top != null)
elem.scrollTop = top;
},
scrollVertical: function scrollVertical(elem, increment, number) { scrollVertical: function scrollVertical(elem, increment, number) {
elem = elem || Buffer.findScrollable(number, false); elem = elem || Buffer.findScrollable(number, false);
let fontSize = parseInt(util.computedStyle(elem).fontSize); let fontSize = parseInt(util.computedStyle(elem).fontSize);
@@ -1227,10 +1234,8 @@ var Buffer = Module("buffer", {
else else
throw Error(); throw Error();
if (number < 0 ? elem.scrollTop > 0 : elem.scrollTop < elem.scrollHeight - elem.clientHeight) dactyl.assert(number < 0 ? elem.scrollTop > 0 : elem.scrollTop < elem.scrollHeight - elem.clientHeight);
elem.scrollTop += number * increment; Buffer.scrollTo(elem, null, elem.scrollTop + number * increment);
else
dactyl.beep();
}, },
scrollHorizontal: function scrollHorizontal(elem, increment, number) { scrollHorizontal: function scrollHorizontal(elem, increment, number) {
@@ -1243,21 +1248,19 @@ var Buffer = Module("buffer", {
else else
throw Error(); throw Error();
if (number < 0 ? elem.scrollLeft > 0 : elem.scrollLeft < elem.scrollWidth - elem.clientWidth) dactyl.assert(number < 0 ? elem.scrollLeft > 0 : elem.scrollLeft < elem.scrollWidth - elem.clientWidth);
elem.scrollLeft += number * increment; Buffer.scrollTo(elem, elem.scrollLeft + number * increment, null);
else
dactyl.beep();
}, },
scrollToPercent: function scrollElemToPercent(elem, horizontal, vertical) { scrollToPercent: function scrollElemToPercent(elem, horizontal, vertical) {
elem = elem || Buffer.findScrollable(0, vertical == null); elem = elem || Buffer.findScrollable(0, vertical == null);
marks.add("'", true); marks.add("'", true);
if (horizontal != null) Buffer.scrollTo(elem,
elem.scrollLeft = (elem.scrollWidth - elem.clientWidth) * (horizontal / 100); horizontal == null ? null
: (elem.scrollWidth - elem.clientWidth) * (horizontal / 100),
if (vertical != null) vertical == null ? null
elem.scrollTop = (elem.scrollHeight - elem.clientHeight) * (vertical / 100); : (elem.scrollHeight - elem.clientHeight) * (vertical / 100));
}, },
openUploadPrompt: function openUploadPrompt(elem) { openUploadPrompt: function openUploadPrompt(elem) {

View File

@@ -690,10 +690,11 @@ function update(target) {
desc = desc.value.init(k) || desc.value; desc = desc.value.init(k) || desc.value;
if (typeof desc.value == "function" && Object.getPrototypeOf(target)) { if (typeof desc.value == "function" && Object.getPrototypeOf(target)) {
let func = desc.value; let func = desc.value;
desc.value.superapply = function (self, args) desc.value.__defineGetter__("super", function () Object.getPrototypeOf(target)[k]);
desc.value.superapply = function superapply(self, args)
let (meth = Object.getPrototypeOf(target)[k]) let (meth = Object.getPrototypeOf(target)[k])
meth && meth.apply(self, args); meth && meth.apply(self, args);
desc.value.supercall = function (self) desc.value.supercall = function supercall(self)
func.superapply(self, Array.slice(arguments, 1)); func.superapply(self, Array.slice(arguments, 1));
} }
Object.defineProperty(target, k, desc); Object.defineProperty(target, k, desc);

View File

@@ -988,6 +988,27 @@ var Util = Module("Util", XPCOM([Ci.nsIObserver, Ci.nsISupportsWeakReference]),
}), true); }), true);
}, },
overlayObject: function (object, overrides) {
let original = Object.create(object);
overrides = update(Object.create(original), overrides);
for each (let k in Object.getOwnPropertyNames(overrides)) {
let orig, desc = Object.getOwnPropertyDescriptor(overrides, k);
if (desc.value instanceof Class.Property)
desc = desc.value.init(k) || desc.value;
for (let obj = object; obj && !orig; obj = Object.getPrototypeOf(obj))
if (orig = Object.getOwnPropertyDescriptor(obj, k))
Object.defineProperty(original, k, orig);
Object.defineProperty(object, k, desc);
}
return function unwrap() {
for each (let k in Object.getOwnPropertyNames(original))
Object.defineProperty(object, k, Object.getOwnPropertyDescriptor(original, k));
}
},
overlayWindow: function (url, fn) { overlayWindow: function (url, fn) {
if (url instanceof Ci.nsIDOMWindow) if (url instanceof Ci.nsIDOMWindow)
util._loadOverlay(url, fn); util._loadOverlay(url, fn);